n1ro°
RU

Текст и данные · Инструкция

Как запускать одноразовую команду Docker Compose без мусорного контейнера

Миграции, ad-hoc скрипты и разовые CLI-команды удобно запускать в окружении сервиса, не оставляя остановленный one-off к

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

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

Используйте `docker compose run --rm web python manage.py migrate`. Команда выполнится в новом one-off контейнере, который будет удалён после завершения.

Что сделать

  1. 1: Выберите сервис, конфигурацию которого нужно использовать для одноразовой команды.
  2. 2: Запустите `docker compose run --rm SERVICE COMMAND`.
  3. 3: Если команде нужны опубликованные порты сервиса, добавьте `--service-ports`, потому что `run` не публикует их по умолчанию.

Команда или настройка

  • docker compose run --rm web python manage.py migrate

Проверка

  • Выберите `run`, только если нужен новый one-off контейнер, а не процесс в существующем.
  • Проверьте command и переменные окружения сервиса до запуска операции с данными.
  • После завершения убедитесь через `docker compose ps --all`, что временный контейнер не остался.

Важно

`docker compose run` создаёт новый контейнер и переопределяет command сервиса — это не то же самое, что `compose exec` в уже работающем контейнере.

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

`docker compose run` создаёт новый контейнер и переопределяет command сервиса — это не то же самое, что `compose exec` в уже работающем контейнере.

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

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