我使用创建了以下容器(php:7.2.20-apache):
version: "3"
services
php72:
build:
context: .
ports:
- 80:80
volumes:
- ./www:/var/www/html我创建了下面的容器,并运行了docker:
docker run --name mysql5 -p 3306:3306 -v mysql5-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.27我可以用mysql工作台连接到MySQL,但是我在第一个容器中的应用程序(使用docker创建的php7)无法连接到具有相同连接凭据的数据库。
如何解决这个问题?
PS:这是对MacOs中开发环境的测试
发布于 2019-08-13 01:50:36
您可以管理用户定义的桥接器,以便他们彼此通信,请参阅这,详细信息如下:
1.创建用户定义的桥
$ docker network create my-net2.将mysql容器链接到此网络
$ docker run --name mysql5 -p 3306:3306 -v mysql5-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.27
$ docker network connect my-net mysql5配置docker-compose 以使用网络
version: "3"
services
php72:
build:
context: .
ports:
- 80:80
volumes:
- ./www:/var/www/html
networks:
default:
external:
name: my-net然后,来自这
用户定义的网桥提供容器之间的自动DNS解析。
您可以使用服务名称或容器名称相互访问。
发布于 2019-08-13 03:36:39
首先,确保在php:7.2.20-apache容器中为数据库使用正确的地址,因为您的MySQL工作台很可能使用不同的ip地址(例如,127.0.0.1),而不是使用php:7.2.20-apache容器(例如,172.19.0.1)。
通过将您的网络列出为
docker network ls如果它们不是,将它们连接到同一个
docker network connect用途: docker网络连接选项网络容器(请参阅“码头网络连接--帮助”以获取更多信息)。
您可以通过命令获取有关每个网络的更多信息。
docker network inspect用途:码头网络检查选项网络.
https://stackoverflow.com/questions/57470049
复制相似问题