#Docker Compose
Orchestrate multi-container applications.
#Basic docker-compose.yml
yaml
1version: '3.8'
2
3services:
4 web:
5 build: .
6 ports:
7 - "3000:3000"
8 environment:
9 - NODE_ENV=production
10 - DATABASE_URL=postgres://db:5432/app
11 depends_on:
12 - db
13 volumes:
14 - ./uploads:/app/uploads
15
16 db:
17 image: postgres:15
18 environment:
19 - POSTGRES_DB=app
20 - POSTGRES_USER=user
21 - POSTGRES_PASSWORD=secret
22 volumes:
23 - postgres_data:/var/lib/postgresql/data
24
25volumes:
26 postgres_data:#Commands
bash
1# Start services
2docker compose up
3docker compose up -d # Detached
4
5# Stop services
6docker compose down
7docker compose down -v # Remove volumes
8
9# View logs
10docker compose logs
11docker compose logs -f web # Follow specific service
12
13# Rebuild
14docker compose build
15docker compose up --build
16
17# Scale
18docker compose up -d --scale web=3
19
20# Execute command
21docker compose exec web bash#Full Stack Example
yaml
1version: '3.8'
2
3services:
4 frontend:
5 build: ./frontend
6 ports:
7 - "3000:3000"
8 depends_on:
9 - api
10
11 api:
12 build: ./backend
13 ports:
14 - "4000:4000"
15 environment:
16 - DATABASE_URL=postgres://db:5432/app
17 - REDIS_URL=redis://cache:6379
18 depends_on:
19 - db
20 - cache
21
22 db:
23 image: postgres:15-alpine
24 volumes:
25 - postgres_data:/var/lib/postgresql/data
26 environment:
27 - POSTGRES_PASSWORD=secret
28
29 cache:
30 image: redis:7-alpine
31
32volumes:
33 postgres_data:[!TIP] Pro Tip: Use Docker Compose for local development, Kubernetes for production!