~/tools/docker-compose/to-docker-run

Docker Compose

Compose to docker run

Преобразовать сервис из docker-compose.yml в эквивалентную команду docker run.

Как это работает

Иногда нужно быстро протестировать один единственный сервис из docker compose файла без поднятия всего стека целиком, а помнить наизусть все флаги docker run для портов, переменных окружения и вольюмов конкретного сервиса неудобно. Docker compose to docker run converter online генерирует готовую команду по описанию сервиса из yaml файла.

Инструмент читает секцию services, для каждого сервиса собирает флаги минус p для портов, минус e для переменных окружения и минус v для примонтированных вольюмов, и склеивает все это в одну длинную команду docker run с именем контейнера и образом в конце.

Удобно применять для быстрой отладки одного сервиса в изоляции, объяснения коллеге, что именно делает сложный compose файл простым языком команд, или для документации, где нужно показать эквивалентную docker run команду без поднятия целого compose стека.

Частые вопросы

Переносятся ли зависимости depends_on в команду docker run?

Нет, docker run не имеет понятия о зависимостях между контейнерами, эта логика есть только в docker compose, при использовании сгенерированной команды нужные сервисы придется запускать вручную в правильном порядке.

Что происходит с секцией build, если у сервиса нет готового image?

Инструмент ориентирован на сервисы с явно указанным image, для сервисов, которые собираются из Dockerfile через build, образ придется сначала собрать отдельной командой docker build и уже потом использовать в docker run.

Учитываются ли сети networks при конвертации?

Текущая версия сфокусирована на портах, переменных окружения и вольюмах, как на самых частых источниках проблем при разовом запуске сервиса, кастомные сети сейчас не переносятся в результат.

Можно ли конвертировать сразу все сервисы из compose файла одной операцией?

Да, инструмент проходит по всем сервисам секции services и генерирует для каждого свою отдельную команду docker run, результат приходит списком через пустую строку между командами.