将 Docker 容器 运行 PHP 连接到主机(VirtualBox 上的ubuntu)SQL 服务器
Connecting a Docker container running PHP to the host's(ubuntu on VirtualBox) MSQL server
运行 VirtualBox with Ubuntu 16.04 我有一个 Docker 安装了 Apache2 和 PHP 的容器。
MYSQL 安装在主机上(ubuntu 在 VirtualBox 上)。
我正在尝试从 docker 容器访问主机上的 MYSQL 服务器
<?php
$host = '192.168.136.101';
$user = 'root';
$pass = '****';
$db = 'test';
$port = '3306';
$con = mysqli_connect($host,$user,$pass,$db,$port);
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
?>
我收到连接被拒绝的通知。
启动容器时我试过
docker run -ti -p 80:80 -p 3306:3306 IMAGE
这不起作用,因为主机上的 MYSQL 服务器正在使用端口 3306,如果我停止主机上的 MYSQL 服务器,docker 运行 命令将执行但是我无法在主机
上启动MYSQL服务
我也试过了
docker run -ti -p 80:80 --add-host=database:192.168.136.101 IMAGE
并相应地更改了/etc/mysql/mysql.conf.d/mysqld.cnf中的绑定地址
仍然没有运气
谢谢
当 运行 您的容器时,您将需要使用主机网络 :
docker run -ti -p 80:80 --net="host" IMAGE
然后,您可以使用本地主机引用您的数据库:
<?php
$host = '127.0.0.1';
$user = 'root';
$pass = '****';
$db = 'test';
$port = '3306';
你也可以使用默认的 --net="bridge" 选项,而不是 "host",但在那种情况下你需要找出主机的 IP,并配置 Mysql 监听文件中容器的ip my.cnf :
bind-address = x.y.z.u
其中 x.y.z.u 是您容器的 IP。
运行 VirtualBox with Ubuntu 16.04 我有一个 Docker 安装了 Apache2 和 PHP 的容器。
MYSQL 安装在主机上(ubuntu 在 VirtualBox 上)。
我正在尝试从 docker 容器访问主机上的 MYSQL 服务器
<?php
$host = '192.168.136.101';
$user = 'root';
$pass = '****';
$db = 'test';
$port = '3306';
$con = mysqli_connect($host,$user,$pass,$db,$port);
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
?>
我收到连接被拒绝的通知。
启动容器时我试过
docker run -ti -p 80:80 -p 3306:3306 IMAGE
这不起作用,因为主机上的 MYSQL 服务器正在使用端口 3306,如果我停止主机上的 MYSQL 服务器,docker 运行 命令将执行但是我无法在主机
上启动MYSQL服务我也试过了
docker run -ti -p 80:80 --add-host=database:192.168.136.101 IMAGE
并相应地更改了/etc/mysql/mysql.conf.d/mysqld.cnf中的绑定地址
仍然没有运气
谢谢
当 运行 您的容器时,您将需要使用主机网络 :
docker run -ti -p 80:80 --net="host" IMAGE
然后,您可以使用本地主机引用您的数据库:
<?php
$host = '127.0.0.1';
$user = 'root';
$pass = '****';
$db = 'test';
$port = '3306';
你也可以使用默认的 --net="bridge" 选项,而不是 "host",但在那种情况下你需要找出主机的 IP,并配置 Mysql 监听文件中容器的ip my.cnf :
bind-address = x.y.z.u
其中 x.y.z.u 是您容器的 IP。