我使用以下Prestashop泊坞广告:https://hub.docker.com/r/prestashop/prestashop/
碰巧我已经在主机上运行了一个mysql服务器,因为它包含在整个DirectAdmin面板中。
如果我指定localhost或我的服务器的IP地址,则变量DB_SERVER不执行任何操作。 -p 3306:3306也是不允许的,因为该端口已被使用。
Docker容器如何到达主机:3306 mysql服务器?
答案 0 :(得分:0)
如果我理解正确,您将Prestashop安装在容器内,并在Docker主机上运行MySQL服务器吗?
除非配置不同,否则容器和主机都在同一个bridge
网络中。
确认您的容器位于bridge
网络中:
docker inspect <container-name>
"Networks": {
"bridge": {
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
}
}
注意网关IP地址 - 这是bridge
网络内docker主机的地址。将它用作DB_SERVER
变量以连接到MySQL。
答案 1 :(得分:0)
一年后......
与 @NetworkMeister 所说的相同,但是,改为IP地址。
docker inspect <container-name> | grep IPAddress
换句话说,我使用172.17.0.2
并且它有效。
答案 2 :(得分:0)
我相信您要做的是将容器进程与在该主机上运行的mysql服务器连接。要保留使用localhost
作为DB_SERVER
的分配,您可以执行以下操作...
docker run --net=host <YOUR_CONTAINER_OPTIONS>
通过这样做,您的容器将能够访问部署在localhost:3306上的mysql服务。