📋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