作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 MySQL
创建了一个 docker 容器:
docker run --name mysqlfordocker -p3307:3306 -e MYSQL_ROOT_PASSWORD=password_db-d mysql
它按预期工作。
它由不在 MySQL
容器中的 MySQLWorckbech
和 PHP
应用程序使用:
//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 应用程序
创建了一个容器:
docker run –d –p 5000:80 myphpapplication
PHP 应用程序
运行,但与 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
你能帮我解决这个问题吗?
最佳答案
这有两个部分,一是获取容器的正确 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);
关于php - 如何将Docker PHP容器连接到MySql容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47197185/
我是一名优秀的程序员,十分优秀!