Docker Compose — Multi-Environment Override
Use Docker Compose override files for dev, staging, and production with shared base configuration.
# docker-compose.yml (base)
version: '3.9'
services:
app:
build: .
environment:
- NODE_ENV=production
depends_on:
- postgres
postgres:
image: postgres:16-alpine
environment:
POSTGRES_DB: myapp
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
---
# docker-compose.dev.yml (override for dev)
version: '3.9'
services:
app:
build:
context: .
target: development
volumes:
- .:/app
- /app/node_modules
environment:
- NODE_ENV=development
- DEBUG=app:*
ports:
- '3000:3000'
- '9229:9229' # Node.js debugger
command: npm run dev
postgres:
ports:
- '5432:5432'
environment:
POSTGRES_PASSWORD: devpass
---
# Usage:
# Dev: docker compose -f docker-compose.yml -f docker-compose.dev.yml up
# Prod: docker compose -f docker-compose.yml up -d
# Or use COMPOSE_FILE env var:
# export COMPOSE_FILE=docker-compose.yml:docker-compose.dev.yml
# docker compose upSponsored
DigitalOcean
Use Cases
- Shared base config with environment-specific overrides
- Hot reloading and debugging in dev containers
- Consistent environments from local to production
Tags
Related Snippets
Similar patterns you can reuse in the same workflow.
Docker Compose — PostgreSQL Dev Environment
Full Docker Compose setup for PostgreSQL with pgAdmin, init scripts, volumes, and health checks.
Best for: Local database development environment
Docker Compose Profiles — Optional Services
Use Docker Compose profiles to selectively start optional services like monitoring, debugging tools.
Best for: Optional monitoring stack for local development
SSH Config for Server Management
Organized SSH config file with host aliases, jump hosts, and connection multiplexing for DevOps.
Best for: Managing connections to multiple servers
Makefile for DevOps Automation
Makefile with common DevOps targets for building, testing, deploying, and managing Docker containers.
Best for: Standardizing developer commands across teams