繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM