无法通过PHP连接到docker mysql容器

时间:2019-12-03 21:46:11

标签: php mysql docker

我从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

请帮助我,我真的很困惑!

1 个答案:

答案 0 :(得分:0)

由于您不公开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指示docker使用您的本地计算机网络堆栈。您可以通过尝试通过端口3306上的计算机及其任何客户端应用程序与MySQL进行连接来验证MySQL是否可访问。 请注意,您需要更新应用程序配置以使用localhost上的MySQL数据库。