2016-10-13 5 views
1

Так, скажем, у меня есть приложение, которое получает развернутое в Докер Swarm и имеют создание сообщения файл, который выглядит примерно так:Создание сети на Docker роя между докерами-Compose приложениями и другими контейнерами

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: 

Maybe Я хочу, чтобы несколько из этих приложений были развернуты, и они обмениваются данными через контейнер 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 

Приложения могут видеть услуги, определенные в том же файле создания письма (как показано выше), но они не могут видеть услуги за пределами этого.

Как я могу получить все приложения в одной сети?

EDIT 1 Я также попытался изменить файл музыки к этим:

networks: 
     - app-network 
     - common 

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

ответ

0

Таким образом, получается, мне просто нужно создать службу RabbitMQ с --net аргументом:

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: true 

 Смежные вопросы

  • Нет связанных вопросов^_^