因此,假设我有一个应用程序被部署到Docker群中,并且它有一个类似于以下内容的撰写文件:
version: '2'
services:
postgres:
image: postgres
environment:
- POSTGRES_PASSWORD=password
networks:
- app-network
volumes:
- postgres:/var/lib/postgresql/data
myapp:
container_name: 'myapp'
image: myapp:debug
depends_on:
- postgres
build:
context: .
dockerfile: Dockerfile.debug
networks:
- app-network
networks:
app-network:
driver: bridge
volumes:
postgres:也许我想要部署其中的几个应用程序,它们通过一个rabbitmq容器进行通信。我想我可以像这样在蜂群上建立一个网络:
$ docker network create -d overlay common-network然后我就可以提供这样的一个rabbitmq实例
$ docker run -d \
--hostname rabbit \
--name rabbit \
-e RABBITMQ_ERLANG_COOKIE='bleh' \
-e RABBITMQ_DEFAULT_USER='rabbitmq' \
-e RABBITMQ_DEFAULT_PASS='rabbitmq' \
-e RABBITMQ_DEFAULT_VHOST='/' \
rabbitmq:3然后部署我的应用程序:
$ docker-compose up但是,看起来应用程序不可能到达“兔子”。
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
176e455e8215 common overlay global
8f1b14690f2b swarm-agent-40001BF7000000/bridge bridge local
3cfaae53a0dc swarm-agent-40001BF7000000/host host local
a01b27b94fcc swarm-agent-40001BF7000000/none null local
aa6f5b56a6d3 swarm-agent-40001BF7000000/publish_app-network bridge local应用程序可以看到在同一个组合文件中定义的服务(如上面所示),但是它们看不到外部的服务。
如何才能在同一个网络上获得所有的应用程序?
编辑1我也尝试过将撰写文件更改为:
networks:
- app-network
- common
networks:
adapter-network:
driver: bridge
common:
external: true发布于 2016-10-13 16:05:53
因此,我只需要创建一个带有-net参数的rabbitmq服务:
docker run -d \
--hostname rabbit \
--name rabbit \
--net common \
-e RABBITMQ_ERLANG_COOKIE='blah' \
-e RABBITMQ_DEFAULT_USER='rabbitmq' \
-e RABBITMQ_DEFAULT_PASS='rabbitmq' \
-e RABBITMQ_DEFAULT_VHOST='/' \
rabbitmq:3引用撰写文件中的“公共”网络:
networks:
- app-network
- common
networks:
adapter-network:
driver: bridge
common:
external: truehttps://stackoverflow.com/questions/40024999
复制相似问题