📋JSON Templates
docker-compose.yml (as JSON)
Docker Compose configuration for multi-container applications.
Explanation
Docker Compose defines services, networks, and volumes for containerized apps.
Examples
Web App with Database
Output
{
"version": "3.8",
"services": {
"web": {
"build": ".",
"ports": [
"3000:3000"
],
"environment": {
"DATABASE_URL": "postgresql://user:pass@db:5432/mydb"
},
"depends_on": [
"db"
]
},
"db": {
"image": "postgres:15",
"environment": {
"POSTGRES_USER": "user",
"POSTGRES_PASSWORD": "pass",
"POSTGRES_DB": "mydb"
},
"volumes": [
"db-data:/var/lib/postgresql/data"
]
}
},
"volumes": {
"db-data": {}
}
}Code Examples
docker-compose.yml
version: '3.8'
services:
web:
build: .
ports:
- "3000:3000"
environment:
DATABASE_URL: postgresql://user:pass@db:5432/mydb
depends_on:
- db
restart: unless-stopped
db:
image: postgres:15
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: pass
POSTGRES_DB: mydb
volumes:
- db-data:/var/lib/postgresql/data
restart: unless-stopped
volumes:
db-data:Try it Now
💡 Tips
- Use .env file for secrets
- Define networks for service isolation
- Use named volumes for persistence
- Set restart policies
- Use depends_on for startup order
⚠️ Common Pitfalls
- depends_on doesn't wait for service to be ready
- Port conflicts with host services
- Volumes persist after docker-compose down
- Environment variables override .env