Подключение сетей к службам

#docker #docker-compose

#докер #docker-создание #docker

Вопрос:

У меня всего 2 дня изучения docker, и я не знаю, как найти информацию о том, как подключить две службы. Итак, в моем случае я выполняю упражнение, в котором мне нужно

  • уровень опроса, позволяющий опросу взаимодействовать с redis.
  • уровень результата, позволяющий результату взаимодействовать с базой данных.
  • резервный уровень, позволяющий работнику взаимодействовать с redis и db.

и мой docker-compose.yml выглядит следующим образом:

 version: '3.0'
services:
    poll:
        build: poll/.
        ports:
            - "5000:80"
        networks: 
            - poll-tier
    redis:
        image: "redis"
        expose: 
            - "6379"
    worker:
        build: worker/.
        networks: 
            - back-tier
    db:
        image: "postgres"
        volumes:
            - "db-data:/var/lib/postgresql/data"        
    result:
        build: result/.
        networks: 
            - result-tier
volumes:
    db-data:
networks:
    poll-tier:
        name: redis
    result-tier:
        name: db
    back-tier:
        name: redis, db
  

Итак, вопрос в том, как я могу общаться с различными службами?

Ответ №1:

Добавляя сеть к службе, вы ограничиваете ее связь только внутри этой сети, поэтому в вашем случае для перекрестной связи вам необходимо добавить более одной сети. Например, в вашей службе опроса вам необходимо иметь как «уровень опроса», так и «резервный уровень», чтобы служба опроса могла взаимодействовать со службой redis.

Ваш файл компоновки будет выглядеть примерно так:

 version: '3.0'
services:
    poll:
        build: poll/.
        ports:
            - "5000:80"
        networks: 
            - poll-tier
    redis:
        image: "redis"
        expose: 
            - "6379"
        networks:
            - back-tier
            - poll-tier
    worker:
        build: worker/.
        networks: 
            - back-tier
    db:
        image: "postgres"
        volumes:
            - "db-data:/var/lib/postgresql/data"
        networks:
            - back-tier
            - result-tier       
    result:
        build: result/.
        networks: 
            - result-tier
volumes:
    db-data:
networks:
    poll-tier:{}
    result-tier:{}
    back-tier:{}