在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