Docker Compose¶
Compose = declarative multi-container orchestration on one host
It expands into many Docker API calls.
Core Concepts¶
- Project: everything in one compose file
- Service: container definition
- Container: runtime instance
- Desired state: what should be running
File Structure¶
services:
app:
image / build
ports
volumes
environment
depends_on
networks:
volumes:
Key Mappings¶
| Compose | Docker equivalent |
|---|---|
services |
docker run |
build |
docker build |
image |
docker pull |
ports |
-p |
volumes |
-v / --mount |
environment |
-e |
networks |
docker network create |
restart |
restart policy |
command |
override CMD |
entrypoint |
override ENTRYPOINT |
Networking (Compose Magic)¶
- Auto bridge network
- Service name = DNS hostname
- No manual IPs
- Isolated per project
Lifecycle Commands¶
docker compose up
docker compose down
docker compose restart
docker compose ps
docker compose logs
docker compose exec
What Compose Does NOT Do¶
- No health-based readiness
- No auto-scaling
- No scheduling
- No self-healing
When to Use¶
- Single container → Docker
- Multiple cooperating containers → Compose
- Distributed / scaled system → Kubernetes