~/tools/docker-compose/service-graph
Docker ComposeCompose Dependency Graph
Построить текстовый граф зависимостей сервисов (depends_on).
Как это работает
Docker compose файл с десятком сервисов и цепочкой depends_on между ними держать в голове сложно, особенно если в проект недавно пришел новый разработчик и пытается понять, что от чего зависит и в каком порядке все это поднимается. Docker compose service graph online превращает секцию depends_on в понятный текстовый список связей между сервисами.
Инструмент проходит по каждому сервису из секции services и смотрит, есть ли у него depends_on, независимо от того, задан ли этот список простым массивом имен сервисов или расширенным объектом с условиями вроде service_healthy.
Результат показывает для каждого сервиса, от кого он зависит, либо явно помечает сервис как не имеющий зависимостей, что удобно и для быстрой документации архитектуры проекта, и для code review нового или измененного compose файла коллеги.
Частые вопросы
Учитывает ли граф условия depends_on вроде service_healthy или service_started?
Текущая версия показывает сам факт зависимости между сервисами, не углубляясь в конкретное условие ожидания, для полной картины условий стоит также заглянуть в сам yaml файл.
Что если сервис зависит сам от себя из-за опечатки в конфиге?
Инструмент честно покажет такую зависимость как есть в тексте, что само по себе будет сигналом проверить конфиг внимательнее, потому что зависимость сервиса от самого себя обычно ошибка.
Показывает ли граф порядок фактического запуска контейнеров?
Список зависимостей дает представление о порядке, в котором docker compose будет пытаться поднимать сервисы, но точное время готовности зависит еще и от healthcheck и типа условия depends_on.
Можно ли построить граф для файла с extends или include других compose файлов?
Инструмент анализирует только тот текст, который вы вставили в поле ввода, если реальная конфигурация собирается из нескольких файлов через include, для полной картины эти файлы стоит сначала объединить вручную или через инструмент docker compose merge.