Текст и данные · Инструкция
Как запускать одноразовую команду Docker Compose без мусорного контейнера
Миграции, ad-hoc скрипты и разовые CLI-команды удобно запускать в окружении сервиса, не оставляя остановленный one-off к
Короткий ответ
Используйте `docker compose run --rm web python manage.py migrate`. Команда выполнится в новом one-off контейнере, который будет удалён после завершения.
Что сделать
- 1: Выберите сервис, конфигурацию которого нужно использовать для одноразовой команды.
- 2: Запустите `docker compose run --rm SERVICE COMMAND`.
- 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.