gpt4 book ai didi

mysql - 将运行 PHP 的 Docker 容器连接到主机的(VirtualBox 上的 ubuntu)MSQL 服务器

转载 作者:行者123 更新时间:2023-11-29 11:09:07 24 4
gpt4 key购买 nike

使用 Ubuntu 16.04 运行 VirtualBox,其中我有一个安装了 Apache2 和 PHP 的 Docker 容器。

MYSQL已安装在主机上(VirtualBox上的ubuntu)。

我正在尝试从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 run 命令,但是我无法在主机上启动 MYSQL 服务

我也尝试过

docker run -ti -p 80:80 --add-host=database:192.168.136.101 IMAGE

并相应地更改了/etc/mysql/mysql.conf.d/mysqld.cnf中的绑定(bind)地址

还是没有运气

谢谢

最佳答案

运行容器时您需要使用主机网络:

docker run -ti -p 80:80 --net="host" IMAGE 

然后,您可以使用 localhost 引用您的数据库:

<?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。

关于mysql - 将运行 PHP 的 Docker 容器连接到主机的(VirtualBox 上的 ubuntu)MSQL 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40928064/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com