在docker-compose应用程序和其他容器之间在docker swarm上创build一个networking

所以,假设我有一个部署到Docker Swarm的应用程序,它有一个如下所示的撰写文件:

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容器进行通信。 我以为我可以像这样在群体上创build一个networking:

 $ docker network create -d overlay common-network 

然后我可以像这样configuration一个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 

应用程序可以看到在同一个撰写文件中定义的服务(如上所示),但是除此之外,他们看不到服务。

我如何获得同一networking上的所有应用程序?

编辑1我也试着改变撰写文件到这:

 networks: - app-network - common networks: adapter-network: driver: bridge common: external: true 

所以,事实certificate我只需要用–net参数创buildrabbitmq服务:

 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 

参考撰写文件中的“通用”networking:

 networks: - app-network - common networks: adapter-network: driver: bridge common: external: true