Multiple containers
Docker Compose orchestrates multiple containers as a single system.
docker-compose.yml
version: '3.8'
services:
app:
build: .
ports:
- "3000:3000"
environment:
- DATABASE_URL=postgres://postgres:secret@db:5432/mydb
depends_on:
- db
- redis
db:
image: postgres:16
environment:
- POSTGRES_PASSWORD=secret
- POSTGRES_DB=mydb
volumes:
- postgres_data:/var/lib/postgresql/data
redis:
image: redis:7
volumes:
postgres_data:
Commands
# Start everything
docker compose up -d
# View logs
docker compose logs -f
# Stop
docker compose down
# Rebuild
docker compose build --no-cache
docker compose up -d
Networking
Services communicate by name:
// From 'app', connect to 'db'
const db = new Pool({
host: 'db', // Service name
port: 5432,
})