[英]Can't connect to docker mysql container via PHP
我从 mysql:5.7 图像创建了一个 docker 容器。
sudo docker run --name mysqltest -e MYSQL_ROOT_PASSWORD=password -v mysql:/var/lib/mysql -d mysql:5.7
我创建了一个包含 phpunit 的 php 容器
sudo docker run --rm -v $(pwd):/app -w /app phpunit/phpunit:8 phpunit --testdox file.php
在 file.php 我试图通过 mysql 容器 ip 作为主机连接 mysql 容器:
sudo docker inspect mysqltest
但我仍然收到“连接被拒绝”,但我可以通过以下方式直接连接到 mysql 容器:
sudo docker exec -it mysqltest mysql -ppassword
请帮帮我,我真的很困惑!
由于您没有公开 MySQL 端口,因此连接被拒绝,因此主机和其他容器看不到它。 处理这些情况的正确方法是使用 docker-compose 和自定义 docker 网络,但是,以下更改可以作为快速修复:
sudo docker run --name mysqltest -p 3306:3306 --network=host -e MYSQL_ROOT_PASSWORD=password -v mysql:/var/lib/mysql -d mysql:5.7
其次是:
sudo docker run --network=host --rm -v $(pwd):/app -w /app phpunit/phpunit:8 phpunit --testdox file.php
-p 3306:3306
告诉 Docker 将容器内 MySQL 的默认端口映射到主机的3306
端口。 --network=host
指示--network=host
使用您的本地机器网络堆栈。 您可以通过尝试从您的计算机在端口3306
使用其任何客户端应用程序连接到 MySQL 来验证是否可以访问 MySQL。 请注意,您需要更新应用程序配置以使用localhost
上的 MySQL 数据库。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.