docker-compose создание нескольких наборов сервисов

Я пытаюсь создать 3 сервиса mattermost на 1 компьютере AWS EC2.

Позвольте мне объяснить дальше с большим количеством текстов:

Когда я запускаю docker-compose up -d, я получаю сервис со следующей структурой:

введите здесь описание изображения

Как я могу изменить сценарии, связанные с докером, чтобы я мог создать 3 набора услуг?

введите здесь описание изображения

Я пробовал docker-compose up --scale app=3 --scale web=3 --scale db=3. Но я не могу найти способ указать другой порт для каждого контейнера App.

Единственное решение, которое я нашел, это:

  1. Создайте 3 копии папки mattermost-docker.

  2. Измените порт App и информацию о соединении с базой данных.

  3. Запустите docker-compose up -d 3 раза в mattermost-docker1, mattermost-docker2 и mattermost-docker3 по отдельности.

Но это решение создает много дублированных файлов. Мне это не нравится.

Кто-нибудь знает, как создать 3 набора наиболее важных сервисов?


person Brian    schedule 09.07.2018    source источник
comment
Я думаю, вам нужно 3 разных файла, так как docker-compose сам по себе является двоичным файлом, который работает под капотом с движком Docker для создания 3 разных наборов самых важных сервисов. И лучше ради ремонтопригодности.   -  person Janshair Khan    schedule 09.07.2018
comment
Посмотрите, поможет ли это tarunlalwani.com/ пост/ ?   -  person Tarun Lalwani    schedule 09.07.2018
comment
Поделитесь содержимым файла docker compose.   -  person Balkrishan Nagpal    schedule 09.07.2018


Ответы (2)


Вам нужно указать диапазон портов в docker compose:

Например, для масштабирования 10 контейнеров:

version: '3'

services:
  web:
    ...
    ports:
      - "80-90:443"

  app:
    ...
    ports:
      - "8000-8010"

Обратите внимание, что вам не нужно менять порт внутри контейнера (443, 444, 445). Вы можете использовать то же самое, и, кроме того, это рекомендуется, потому что, хотя вы используете разные контейнеры в диапазоне портов, проще, если они используют одну и ту же конфигурацию nginx.

person Alejandro Galera    schedule 09.07.2018
comment
Но как я могу создать 3 разных имени для 3 баз данных? - person Brian; 09.07.2018
comment
Зачем тебе это надо? Вы можете создать базу данных с таким же именем. Каждый контейнер независим от других. - person Alejandro Galera; 09.07.2018

Это запускает наборы сервисов с использованием 3 отдельных баз данных (в качестве примера используются nginx и mongo).

  version: '3'

  services:

    web1:
      container_name: web1
      image: nginx:latest
      ports:
        - 8080:8080

    app1:
      container_name: app1
      image: nginx:latest
      ports:
        - "8081:8081"
    db1:
      container_name: db1
      image: mongo
      ports:
        - 27017

    web2:
      container_name: web2
      image: nginx:latest
      ports:
        - 8082:8082

    app2:
      container_name: app2
      image: nginx:latest
      ports:
        - "8083:8083"
    db2:
      container_name: db2
      image: mongo
      ports:
        - 27018

    web3:
      container_name: web3
      image: nginx:latest
      ports:
        - 8084:8084
    app3:
      container_name: app3
      image: nginx:latest
      ports:
        - "8085:8085"
    db3:
      container_name: db3
      image: mongo
      ports:
        - 27019

Локальный тест:

NAMES                STATUS                PORTS                                   IMAGE
db2                  Up About a minute     27017/tcp, 0.0.0.0:32803->27018/tcp     mongo
web1                 Up About a minute     80/tcp, 0.0.0.0:32802->8080/tcp         nginx:latest
db1                  Up About a minute     0.0.0.0:32801->27017/tcp                mongo
app1                 Up About a minute     80/tcp, 0.0.0.0:32800->8081/tcp         nginx:latest
app3                 Up About a minute     80/tcp, 0.0.0.0:32798->8085/tcp         nginx:latest
db3                  Up About a minute     27017/tcp, 0.0.0.0:32799->27019/tcp     mongo
app2                 Up About a minute     80/tcp, 0.0.0.0:32797->8083/tcp         nginx:latest
web3                 Up About a minute     80/tcp, 0.0.0.0:32796->8084/tcp         nginx:latest
web2                 Up About a minute     80/tcp, 0.0.0.0:32795->8082/tcp         nginx:latest
person VinDev    schedule 10.07.2018
comment
Привет, спасибо за вашу помощь. Но похоже, что это не поддерживает изменение порта app путем настройки docker-compose.yml. Возможно, мне нужно копнуть глубже, чтобы изменить файлы в папке app. - person Brian; 11.07.2018
comment
посмотрю повнимательнее - person VinDev; 11.07.2018