# Development Docker Compose - for local development with hot reload # Usage: pnpm docker:dev services: # PostgreSQL Database postgres: image: postgres:17-alpine container_name: blog_postgres_dev restart: unless-stopped env_file: ../.env environment: POSTGRES_USER: ${DATABASE_USER:-blog} POSTGRES_PASSWORD: ${DATABASE_PASSWORD:-postgres} POSTGRES_DB: ${DATABASE_NAME:-blog_dev} volumes: - postgres_data_dev:/var/lib/postgresql/data ports: - "5432:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U ${DATABASE_USER:-blog} -d ${DATABASE_NAME:-blog_dev}"] interval: 10s timeout: 5s retries: 5 networks: - blog_network # Redis Cache redis: image: redis:7-alpine container_name: blog_redis_dev restart: unless-stopped env_file: ../.env command: redis-server --appendonly yes volumes: - redis_data_dev:/data ports: - "6379:6379" healthcheck: test: ["CMD", "redis-cli", "--raw", "incr", "ping"] interval: 10s timeout: 5s retries: 5 networks: - blog_network # NestJS Backend API api: image: node:24-alpine container_name: blog_api_dev restart: unless-stopped working_dir: /workspace command: sh -c "corepack enable && pnpm --filter api run dev" env_file: ../.env depends_on: postgres: condition: service_healthy redis: condition: service_healthy environment: CI: "true" NODE_ENV: development DATABASE_URL: postgresql://${DATABASE_USER:-blog}:${DATABASE_PASSWORD:-postgres}@postgres:${DATABASE_PORT:-5432}/${DATABASE_NAME:-blog_dev} REDIS_URL: redis://redis:6379 API_PORT: ${API_PORT:-3001} LOG_LEVEL: debug ports: - "3001:3001" volumes: - ..:/workspace networks: - blog_network # Next.js Frontend frontend: image: node:24-alpine container_name: blog_frontend_dev restart: unless-stopped working_dir: /workspace command: sh -c "corepack enable && pnpm --filter frontend exec next dev -p 3000" env_file: ../.env environment: CI: "true" NODE_ENV: development NEXT_PUBLIC_API_URL: http://localhost:3001 PORT: 3000 ports: - "3000:3000" volumes: - ..:/workspace networks: - blog_network networks: blog_network: driver: bridge volumes: postgres_data_dev: driver: local redis_data_dev: driver: local