1

たとえば、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 コンテナーを介して通信したいと思うかもしれません。次のように群れにネットワークを作成できると思いました:

$ 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

しかし、アプリケーションが「rabbit」に到達できるようには見えません。

$ 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

アプリケーションは、(上記のように) 同じ構成ファイルで定義されているサービスを認識できますが、それ以外のサービスを認識できません。

すべてのアプリケーションを同じネットワーク上で取得するにはどうすればよいですか?

EDIT 1 私はまた、構成ファイルをこれに変更しようとしました:

networks:
      - app-network
      - common

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

1 に答える 1