n1ro°
RU

Ошибки и коды · Инструкция

Docker Compose command переопределяет CMD: почему контейнер запускается не той командой

Образ может иметь рабочий CMD, который незаметно заменён Compose-файлом. В сочетании ENTRYPOINT и CMD итоговая argv зави

Редакция N1RO · Проверено

Короткий ответ

Поле Compose `command` переопределяет `CMD` образа, а `entrypoint` — его ENTRYPOINT. Если контейнер ведёт себя иначе, чем `docker run IMAGE` без аргументов, сравните итоговые command/entrypoint через `docker compose config` и `docker inspect`.

Что делать

  1. Проверьте образ: Посмотрите Config.Cmd и Config.Entrypoint через `docker image inspect`.
  2. Проверьте Compose: Найдите `command:` и `entrypoint:` и выведите `docker compose config`.
  3. Сравните запуск: Запустите образ без Compose и сравните поведение.
  4. Уберите лишний override: Удалите `command`/`entrypoint`, если нужен default образа, или задайте корректный exec/list формат.
  5. Пересоздайте: Compose должен создать новый контейнер с обновлённой командой.

Важно

Не меняйте entrypoint стороннего образа без понимания его init-логики и подготовки файлов.

Что учитывать

Не меняйте entrypoint стороннего образа без понимания его init-логики и подготовки файлов.

Источники и проверка

Фактическая часть сверена по первичным источникам (в т.ч. Dockerfile reference). Пример и формулировки — редакция N1RO на 2026-09-17.