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

时间:2017-11-09 08:30:17

标签: php mysql docker windows-10 dockerfile

我创建了一个包含MySQL的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";

我的Dockerfile应用的PHP是:

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创建了一个容器:

docker run –d –p 5000:80 myphpapplication

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

我尝试以不同的方式配置连接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

你能帮帮我吗?

聚苯乙烯。 enter image description here

1 个答案:

答案 0 :(得分:2)

这有两个部分,一个是获取容器的正确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);