# Production Docker Compose Configuration # # Usage: # docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d # # This file extends the base docker-compose.yml with production-specific settings services: seen-frontend: environment: - NODE_ENV=production logging: driver: "json-file" options: max-size: "10m" max-file: "3" networks: - seen-network seen-backend: env_file: - ./backend/.env.prod environment: - SEEN_ENV=production - SEEN_LOG_LEVEL=info - SEEN_LOG_FORMAT=json logging: driver: "json-file" options: max-size: "10m" max-file: "3" networks: - seen-network postgres: environment: # IMPORTANT: Change these in production! POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-CHANGE_ME_STRONG_PASSWORD} volumes: - seen_postgres_data:/var/lib/postgresql/data - ./backups:/backups logging: driver: "json-file" options: max-size: "10m" max-file: "3" networks: - seen-network dragonfly: command: - "--logtostderr" - "--proactor_threads=2" - "--maxmemory=512mb" - "--save_schedule=*:*" - "--dir=/data" volumes: - seen_dragonfly_data:/data logging: driver: "json-file" options: max-size: "10m" max-file: "3" networks: - seen-network # Backup service for automated database backups backup: image: postgres:16-alpine container_name: seen-backup depends_on: - postgres environment: POSTGRES_HOST: postgres POSTGRES_DB: seen POSTGRES_USER: seen POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-CHANGE_ME_STRONG_PASSWORD} BACKUP_RETENTION_DAYS: 7 volumes: - ./backups:/backups - ./scripts/backup.sh:/backup.sh:ro command: sh -c "while true; do /backup.sh; sleep 86400; done" restart: unless-stopped networks: - seen-network networks: seen-network: driver: bridge volumes: seen_postgres_data: driver: local seen_dragonfly_data: driver: local