Docker Compose активировать контейнер по требованию - PullRequest
0 голосов
/ 27 августа 2018

У меня есть приложение, которое выполняет разработку над фидом данных. Процесс разделен на задачи, поэтому я структурировал файл docker-compose.yml следующим образом:

task1-service: 
  image: task1-image
task2-service: 
  image: task2-image
task3-service: 
  image: task3-image

Каждая задача-служба запускается к концу предыдущего и запускает следующее, затем она может выйти. Так что нет смысла поддерживать каждую службу в рабочем состоянии.

Интересно, есть ли решение, чтобы остановить их всех и запускать каждый сервис по требованию. Я не знаю, является ли docker compose правильным решением, но мне нравится идея хорошо хранить описанную систему в одном файле yml. Во всяком случае, другие решения приветствуются.

Спасибо

1 Ответ

0 голосов
/ 27 августа 2018

Возможно решить ваш подход по-разному, и один из них с помощью docker-compose.

Во-первых, вы можете запустить один конкретный сервис (taskX-сервис) с помощью docker-compose up -d <service_name> У вас есть более подробная информацияв docker-compose только для определенных контейнеров

Во-вторых, docker-compose также позволяет настраивать зависимости между контейнерами.Если вы хотите запустить их по порядку, вы можете указать это в структуре depends_on:.Например, чтобы выполнить задачи 1, 2 и 3, чтобы вы могли использовать:

task1-service: 
  image: task1-image
task2-service: 
  image: task2-image
  depends_on:
    - task1-service
task3-service: 
  image: task3-image
  depends_on: 
    - task2-service

Более того, этот docker-compose.yml совместим с первым, что я сказал:

docker-compose up -d task1-service
docker-compose up -d task2-service (also launchs task1-service)
docker-compose up -d task3-service (also launchs task2 and 1 service)

Если вы не укажете какой-либо контейнер, с помощью docker-compose down остановите все контейнеры в файле компоновки.Я надеюсь, что это полезно для вас.

...