Несколько приложений и общие контейнеры с docker -композицией - PullRequest
0 голосов
/ 04 апреля 2020

Я пытаюсь понять, что будет лучшим подходом здесь.

Один сервер, несколько приложений, некоторые контейнеры используют одно и то же изображение.

Пример # 1:

два docker-compose.yml файла для каждого приложения

services:
  db:
    image: mariadb:latest
    ...

  app:
    image: app/one
    depends_on:
      - db
    ...
services:
  db:
    image: mariadb:latest
    ...

  app:
    image: app/two
    depends_on:
      - db
    ...

Пример № 2:

объединить все в одном docker-compose.yml

services:
  db:
    image: mariadb:latest
    ...

  app1:
    image: app/one
    depends_on:
      - db
    ...

  app2:
    image: app/two
    depends_on:
      - db
    ...

Есть ли общая практика?

1 Ответ

0 голосов
/ 04 апреля 2020

Две вещи, которые являются обычной практикой:

  1. Регистрация в файле docker-compose.yml с исходным кодом приложения (часто в каталоге root хранилища рядом с Dockerfile)

  2. Не делить базы данных между приложениями (контейнеры упрощают запуск второго)

Обе эти вещи предлагают два отдельных файла docker-compose.yml.

Один файл docker-compose.yml может иметь смысл в ситуациях, когда у вас есть несколько взаимодействующих сервисов, поэтому не имеет смысла запускать один без другого. (У вас есть служба API REST, но у нее есть связанный Nginx интерфейс и специализированная служба кэширования, которая, например, объединяет все go.) Вызов из одной Docker установки Compose в другую немного сложен и в небольшом масштабе. может иметь смысл просто соединить тесно связанные между собой вещи.

В более широком масштабе также может иметь смысл иметь отдельный репозиторий только спецификаций развертывания; это имеет немного больше смысла с менеджерами кластеров, такими как Kubernetes, и даже в этом случае выбор стиля заключается в том, чтобы иметь один репозиторий, содержащий только данные развертывания, или сохранить настройку развертывания со службами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...