version: '3.8' # Development override - only runs infrastructure services # Use this for local development with hot-reloading services: # PostgreSQL Database postgres: image: postgres:15-alpine container_name: template-saas-postgres-dev restart: unless-stopped environment: POSTGRES_USER: ${DB_USER:-template_saas_user} POSTGRES_PASSWORD: ${DB_PASSWORD:-template_saas_dev_2026} POSTGRES_DB: ${DB_NAME:-template_saas_dev} ports: - "${DB_PORT:-5432}:5432" volumes: - postgres_dev_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-template_saas_user} -d ${DB_NAME:-template_saas_dev}"] interval: 10s timeout: 5s retries: 5 networks: - template-saas-dev-network # Redis Cache redis: image: redis:7-alpine container_name: template-saas-redis-dev restart: unless-stopped ports: - "${REDIS_PORT:-6379}:6379" volumes: - redis_dev_data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 networks: - template-saas-dev-network # Adminer - Database management UI (optional) adminer: image: adminer:latest container_name: template-saas-adminer restart: unless-stopped depends_on: - postgres ports: - "8080:8080" environment: ADMINER_DEFAULT_SERVER: postgres networks: - template-saas-dev-network # Redis Commander - Redis management UI (optional) redis-commander: image: rediscommander/redis-commander:latest container_name: template-saas-redis-commander restart: unless-stopped depends_on: - redis ports: - "8081:8081" environment: REDIS_HOSTS: local:redis:6379 networks: - template-saas-dev-network volumes: postgres_dev_data: driver: local redis_dev_data: driver: local networks: template-saas-dev-network: driver: bridge