Docker Cheat Sheet Series (4/5): Docker Compose Workflows

Docker Cheat Sheet Series (4/5): Docker Compose Workflows
Flat illustration of Docker Compose commands for bringing up and down multi-service stacks, rebuilding a single service, viewing logs, exec’ing into services, and using profiles or override files.

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 down

Notes

  • down does 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-deps avoids 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> bash

Notes

  • 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 -d

Notes

  • 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 -f

Notes

  • Compose can order startup, but “ready” requires healthchecks.
  • Pattern: define a healthcheck: on the dependency and use depends_on: with health conditions (file syntax varies by Compose version).

Read more