Как правильно это сделать?
Я думаю, что вы уже определили это: разделите определения службы между двумя файлами, чтобы иногда вы могли запускать оба:
docker-compose -f main.yml -f service.yml up
И иногда вы можете запустить только сервисный контейнер:
docker-compose -f service.yml up
Это прекрасно работает, и клавиша depends_on
не требует, чтобы все определения были в одном файле. Словари объединяются до того, как docker-compose пытается разрешить зависимости.
Например, если у меня есть в main.yml
:
---
version: "3"
services:
main:
image: alpine
command: sleep 30
depends_on:
- service
А в service.yml
:
---
version: "3"
services:
service:
image: alpine
command: sleep 30
Я могу запустить только контейнер service
следующим образом:
$ docker-compose -f service.yml up
Starting compose_service_1 ... done
Attaching to compose_service_1
Или я могу запустить оба контейнера: main
и service
:
$ docker-compose -f main.yml -f service.yml up
Starting compose_service_1 ... done
Starting compose_main_1 ... done
Attaching to compose_service_1, compose_main_1
Если вы видите поведение, которое, по-видимому, противоречит этому, было бы полезно, если бы вы обновили свой вопрос с минимальными примерами, воспроизводящими проблему, и включили бы любой вывод ошибки при выполнении docker-compose
.