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 execWhat 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