docker run patterns
Start a container with port mapping
docker run -d --name web -p 8080:80 nginx
Example:
docker run --rm -it node:20 bash
Pass env vars and volumes
docker run -e NODE_ENV=dev -v $(pwd):/app node:20 npm test
Example:
docker run --network app-net redis
docker compose patterns
Start full stack from compose file
docker compose up -d
Example:
docker compose down
Run one-off task in service
docker compose run --rm app npm run migrate
Example:
docker compose logs -f app
Decision checklist
Inspect resulting containers
docker ps
Example:
docker compose ps
Validate compose config
docker compose config
Example:
docker compose config --services
Common mistakes / Pitfalls
- Using docker run repeatedly for multi-service apps creates drift and manual errors.
- Forgetting --rm on one-off run containers leaves clutter behind.
- Mixing compose project names can start duplicate networks and volumes.
Last updated: February 2026