Docker Cheat Sheet Series (4/5): Docker Compose Workflows
Short scenarios. Copy/paste commands. Minimal notes.
Start/stop a multi-service stack
Goal: Bring up all services defined in docker-compose.yml.
docker compose up -d
docker compose ps
# stop (keeps containers)
docker compose stop
# stop + remove containers + default network
docker compose downNotes
downdoes not remove named volumes unless you add-v(use carefully).
Rebuild and restart a single service
Goal: Apply Dockerfile changes for one service only.
docker compose build <service>
docker compose up -d --no-deps <service>Notes
--no-depsavoids restarting dependencies.
View service logs and exec into a service
Goal: Debug a running service.
docker compose logs -f <service>
docker compose exec <service> sh
# if bash exists:
docker compose exec <service> bashNotes
- Add timestamps:
docker compose logs -f --timestamps <service>
Use profiles / overrides for dev vs prod
Goal: Run different stacks/configs without editing the base file.
# use an override file
docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d
# or use profiles
docker compose --profile dev up -dNotes
- Overrides are additive/merging; ensure ports and volumes match expectations.
Healthchecks + dependency readiness
Goal: Avoid starting an app before its dependency is healthy.
docker compose up -d
docker compose ps
docker compose logs -fNotes
- Compose can order startup, but “ready” requires healthchecks.
- Pattern: define a
healthcheck:on the dependency and usedepends_on:with health conditions (file syntax varies by Compose version).