如何将Docker PHP容器连接到MySql容器?

我用MySQL创build了一个docker容器:

 docker run --name mysqlfordocker -p3307:3306 -e MYSQL_ROOT_PASSWORD=password_db-d mysql 

它按预期工作。

它被MySQLWorckbechPHP应用程序使用,它们不在MySQL的容器中:

 //CONNECTION BY PHP APPLICATION NOT IN CONTAINER $servername = "127.0.0.1:3307"; $username_db = "username_db"; $password_db = "password_db"; $db = "db"; 

我的PHP应用程序的Dockerfile是:

 FROM php:7.0-apache RUN apt-get update \ && apt-get install -y --no-install-recommends libpq-dev \ && docker-php-ext-install mysqli pdo_pgsql pdo_mysql COPY / /var/www/html EXPOSE 80 

然后我用我的PHP application创build了一个容器:

 docker run –d –p 5000:80 myphpapplication 

PHP application运行,但它与MySQL容器的数据库连接有问题。

我尝试以不同的方式configuration连接servername ,但没有任何运气:

 $servername = "127.0.0.1:3307"; $servername = "locahosto:3307"; $servername = "10.0.75.1:3307"; //DockerNAT $servername = "172.17.0.2:3307"; //Ip by docker inspect mysql 

你能帮我吗?

PS。 在这里输入图像说明

这有两个部分,一个是获取容器的正确IP地址。 实际IP地址应该工作 – 172.17.0.2,但你也应该能够使用172.17.0.1。

你也通常把端口号作为一个单独的参数…

 $servername = "172.17.0.1"; $username_db = "username_db"; $password_db = "password_db"; $db = "db"; $port= = 3307; $db = mysqli_connect($servername, $username_db, $password_db, $db, $port);