Docker Compose stop: остановить контейнеры без удаления
docker compose stop отправляет контейнерам SIGTERM, ждёт stop_grace_period и при необходимости добивает их SIGKILL. Контейнеры, сети и тома остаются на месте, поэтому потом можно выполнить docker compose start и продолжить с теми же данными. Это отличается от down, который удаляет контейнеры и сети.
Остановить и снова запустить проект
docker compose stop
docker compose ps -a
docker compose start
docker compose downstop полезен, когда нужно освободить ресурсы, не теряя состояние контейнеров. ps -a покажет статус exited, а start запустит те же контейнеры без пересоздания. down останавливает и удаляет контейнеры и сети; тома удаляются только с флагом -v. Если нужно пересобрать образ, используйте up --build, а не start.
Задать таймаут и выбрать сервис
docker compose stop --timeout 30 api
docker compose kill worker--timeout переопределяет время ожидания для конкретного запуска. В compose.yaml можно задать stop_grace_period: 30s для сервиса, который долго завершает запросы. kill отправляет SIGKILL сразу и не даёт приложению корректно закрыться; используйте его только как крайнюю меру.
stop не удаляет данные в named volumes и не меняет образы. down с --volumes удалит и тома — это удобно для тестов, но опасно для локальной базы. restart выполняет stop + start, а up может пересоздать контейнер при изменении конфигурации. Для миграций и one-shot задач дождитесь завершения через docker compose wait.
Проверяйте, что приложение обрабатывает SIGTERM: закрывает соединения с базой, перестаёт принимать запросы и завершает текущие операции. Иначе по истечении grace period Compose пришлёт SIGKILL и часть работы потеряется.
Документация: docker compose stop, docker compose down.