我必须启动3个容器,nginx,wordpress和wordpress2。问题是nginx容器从172.17.0.2开始,wordpress在172.18.0.3开始,wordpress2在172.19.0.4开始。如我所示,wordpress容器从它们的docker-compose.yml开始配置:
关于wordpress:
version: '2'
services:
db:
image: mysql:5.7
volumes:
- "./.data/db:/var/lib/mysql"
restart: always
environment:
MYSQL_ROOT_PASSWORD: wordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
links:
- db
ports:
- "8000:80"
networks:
- ipv4_address: 172.17.0.5
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_PASSWORD: wordpress对于wordpress2:
version: '2'
services:
db:
image: mysql:5.7
volumes:
- "./.data/db:/var/lib/mysql"
restart: always
environment:
MYSQL_ROOT_PASSWORD: wordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
links:
- db
ports:
- "8001:80"
networks:
- ipv4_address: 172.17.0.6
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_PASSWORD: wordpress如您所见,我在networks中放置了ipv4_address,但是当我启动docker-come.yml时,它在这一行显示了错误。我认为默认情况下,所有容器通常都位于同一个网络上,但在这种情况下不是这样。你能帮我把所有的集装箱放在同一个子网里吗?
发布于 2016-10-22 16:22:23
每个docker-compose.yml将创建自己的子网。这样你的三个容器就看不见了。由其他对接者-撰写创建的网络据说是外部的,所以你必须将它们声明为外部。您可以使用docker network ls看到这些网络。
在您的docker-compose.yml文件中声明外部网络中的外部网络之后,您必须定义nginx服务应该使用的网络。你应该保持default网络。
通常,您的停靠-撰写网络的默认名称是<current_dir>_default。因此,假设当前目录名为yourproject1,则网络名将为yourproject1_default。
然后,您将能够使用external_links (比ip地址更好)访问wordpress容器。
在这里,我将为nginx的docker-come.yml文件所做的工作,使他能够看到wordpress容器:
version: '2'
services:
nginx:
...
external_links:
- your_project1_wordpress1_1:wordpress1
- your_other_project2_wordpress2_1:wordpress2
networks:
- default
- your_project1_default
- your_other_project2_defaul
networks:
your_project1_default:
external: true
your_other_project2_default:
external: truehttps://stackoverflow.com/questions/40190530
复制相似问题