feat: Add production Docker Compose configuration for ParentFlow
Some checks failed
ParentFlow CI/CD Pipeline / Backend Tests (push) Has been cancelled
ParentFlow CI/CD Pipeline / Frontend Tests (push) Has been cancelled
ParentFlow CI/CD Pipeline / Security Scanning (push) Has been cancelled
ParentFlow CI/CD Pipeline / Build Docker Images (map[context:maternal-app/maternal-app-backend dockerfile:Dockerfile.production name:backend]) (push) Has been cancelled
ParentFlow CI/CD Pipeline / Build Docker Images (map[context:maternal-web dockerfile:Dockerfile.production name:frontend]) (push) Has been cancelled
ParentFlow CI/CD Pipeline / Deploy to Development (push) Has been cancelled
ParentFlow CI/CD Pipeline / Deploy to Production (push) Has been cancelled
CI/CD Pipeline / Lint and Test (push) Has been cancelled
CI/CD Pipeline / E2E Tests (push) Has been cancelled
CI/CD Pipeline / Build Application (push) Has been cancelled
Some checks failed
ParentFlow CI/CD Pipeline / Backend Tests (push) Has been cancelled
ParentFlow CI/CD Pipeline / Frontend Tests (push) Has been cancelled
ParentFlow CI/CD Pipeline / Security Scanning (push) Has been cancelled
ParentFlow CI/CD Pipeline / Build Docker Images (map[context:maternal-app/maternal-app-backend dockerfile:Dockerfile.production name:backend]) (push) Has been cancelled
ParentFlow CI/CD Pipeline / Build Docker Images (map[context:maternal-web dockerfile:Dockerfile.production name:frontend]) (push) Has been cancelled
ParentFlow CI/CD Pipeline / Deploy to Development (push) Has been cancelled
ParentFlow CI/CD Pipeline / Deploy to Production (push) Has been cancelled
CI/CD Pipeline / Lint and Test (push) Has been cancelled
CI/CD Pipeline / E2E Tests (push) Has been cancelled
CI/CD Pipeline / Build Application (push) Has been cancelled
- Created docker-compose.production.yml with parentflow naming - PostgreSQL with pgvector support for AI embeddings - Redis with password authentication - MongoDB for AI chat history - MinIO for object storage - All services with health checks and restart policies - Production-ready volume mounts and networking - Created .env.production.example with all required variables 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
86
.env.production.example
Normal file
86
.env.production.example
Normal file
@@ -0,0 +1,86 @@
|
||||
# ParentFlow Production Environment Variables
|
||||
# Copy this file to .env.production and update with your secure values
|
||||
|
||||
# Database Configuration (PostgreSQL)
|
||||
POSTGRES_PASSWORD=parentflow_secure_password_2024
|
||||
|
||||
# Redis Configuration
|
||||
REDIS_PASSWORD=parentflow_redis_password_2024
|
||||
|
||||
# MongoDB Configuration
|
||||
MONGO_PASSWORD=parentflow_mongo_password_2024
|
||||
|
||||
# MinIO (Object Storage) Configuration
|
||||
MINIO_ROOT_USER=parentflow_minio_admin
|
||||
MINIO_ROOT_PASSWORD=parentflow_minio_password_2024
|
||||
|
||||
# Backend Application Configuration
|
||||
NODE_ENV=production
|
||||
API_PORT=3020
|
||||
PORT=3020
|
||||
|
||||
# Database Connection
|
||||
DATABASE_HOST=parentflow-postgres-prod
|
||||
DATABASE_PORT=5432
|
||||
DATABASE_NAME=parentflow_production
|
||||
DATABASE_USER=parentflow_user
|
||||
DATABASE_PASSWORD=parentflow_secure_password_2024
|
||||
DATABASE_SSL=false
|
||||
|
||||
# Redis Connection
|
||||
REDIS_HOST=parentflow-redis-prod
|
||||
REDIS_PORT=6379
|
||||
REDIS_PASSWORD=parentflow_redis_password_2024
|
||||
|
||||
# MongoDB Connection
|
||||
MONGODB_URI=mongodb://parentflow_admin:parentflow_mongo_password_2024@parentflow-mongodb-prod:27017/parentflow_ai_chat?authSource=admin
|
||||
|
||||
# MinIO Connection
|
||||
MINIO_ENDPOINT=parentflow-minio-prod
|
||||
MINIO_PORT=9000
|
||||
MINIO_USE_SSL=false
|
||||
MINIO_ACCESS_KEY=parentflow_minio_admin
|
||||
MINIO_SECRET_KEY=parentflow_minio_password_2024
|
||||
|
||||
# JWT Secrets (CHANGE THESE!)
|
||||
JWT_SECRET=CHANGE_THIS_TO_A_SECURE_RANDOM_STRING_64_CHARS
|
||||
JWT_REFRESH_SECRET=CHANGE_THIS_TO_ANOTHER_SECURE_RANDOM_STRING_64_CHARS
|
||||
|
||||
# CORS Configuration
|
||||
CORS_ORIGIN=https://web.parentflowapp.com,https://api.parentflowapp.com
|
||||
|
||||
# API Configuration
|
||||
API_URL=https://api.parentflowapp.com
|
||||
|
||||
# Frontend Configuration
|
||||
NEXT_PUBLIC_API_URL=https://api.parentflowapp.com
|
||||
NEXT_PUBLIC_GRAPHQL_URL=https://api.parentflowapp.com/graphql
|
||||
NEXT_PUBLIC_WS_URL=wss://api.parentflowapp.com/ws
|
||||
|
||||
# OpenAI API (for AI features)
|
||||
OPENAI_API_KEY=your-openai-api-key-here
|
||||
|
||||
# Email Configuration (for notifications)
|
||||
SMTP_HOST=smtp.example.com
|
||||
SMTP_PORT=587
|
||||
SMTP_USER=noreply@parentflowapp.com
|
||||
SMTP_PASSWORD=your-smtp-password
|
||||
SMTP_FROM=ParentFlow <noreply@parentflowapp.com>
|
||||
|
||||
# Application Settings
|
||||
APP_URL=https://web.parentflowapp.com
|
||||
APP_NAME=ParentFlow
|
||||
|
||||
# Logging
|
||||
LOG_LEVEL=info
|
||||
LOG_FORMAT=json
|
||||
|
||||
# Security
|
||||
SESSION_SECRET=CHANGE_THIS_TO_A_SECURE_RANDOM_STRING
|
||||
RATE_LIMIT_MAX=100
|
||||
RATE_LIMIT_WINDOW_MS=60000
|
||||
|
||||
# Feature Flags
|
||||
ENABLE_ANALYTICS=true
|
||||
ENABLE_AI_CHAT=true
|
||||
ENABLE_VOICE_COMMANDS=true
|
||||
98
docker-compose.production.yml
Normal file
98
docker-compose.production.yml
Normal file
@@ -0,0 +1,98 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
postgres:
|
||||
image: pgvector/pgvector:pg15
|
||||
container_name: parentflow-postgres-prod
|
||||
environment:
|
||||
POSTGRES_DB: parentflow_production
|
||||
POSTGRES_USER: parentflow_user
|
||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-parentflow_secure_password_2024}
|
||||
ports:
|
||||
- "5432:5432"
|
||||
volumes:
|
||||
- postgres_prod_data:/var/lib/postgresql/data
|
||||
- ./maternal-app/maternal-app-backend/src/database/migrations:/docker-entrypoint-initdb.d:ro
|
||||
networks:
|
||||
- parentflow-network
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U parentflow_user -d parentflow_production"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
container_name: parentflow-redis-prod
|
||||
ports:
|
||||
- "6379:6379"
|
||||
volumes:
|
||||
- redis_prod_data:/data
|
||||
networks:
|
||||
- parentflow-network
|
||||
command: redis-server --appendonly yes --requirepass ${REDIS_PASSWORD:-parentflow_redis_password_2024}
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: ["CMD", "redis-cli", "--raw", "incr", "ping"]
|
||||
interval: 10s
|
||||
timeout: 3s
|
||||
retries: 5
|
||||
|
||||
mongodb:
|
||||
image: mongo:4.4
|
||||
container_name: parentflow-mongodb-prod
|
||||
environment:
|
||||
MONGO_INITDB_ROOT_USERNAME: parentflow_admin
|
||||
MONGO_INITDB_ROOT_PASSWORD: ${MONGO_PASSWORD:-parentflow_mongo_password_2024}
|
||||
MONGO_INITDB_DATABASE: parentflow_ai_chat
|
||||
ports:
|
||||
- "27017:27017"
|
||||
volumes:
|
||||
- mongodb_prod_data:/data/db
|
||||
- mongodb_prod_config:/data/configdb
|
||||
networks:
|
||||
- parentflow-network
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: echo 'db.runCommand("ping").ok' | mongo localhost:27017/test --quiet
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
minio:
|
||||
image: minio/minio:RELEASE.2023-01-25T00-19-54Z
|
||||
container_name: parentflow-minio-prod
|
||||
environment:
|
||||
MINIO_ROOT_USER: ${MINIO_ROOT_USER:-parentflow_minio_admin}
|
||||
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-parentflow_minio_password_2024}
|
||||
ports:
|
||||
- "9000:9000"
|
||||
- "9001:9001"
|
||||
volumes:
|
||||
- minio_prod_data:/data
|
||||
networks:
|
||||
- parentflow-network
|
||||
command: server /data --console-address ":9001"
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
|
||||
interval: 30s
|
||||
timeout: 20s
|
||||
retries: 3
|
||||
|
||||
networks:
|
||||
parentflow-network:
|
||||
driver: bridge
|
||||
|
||||
volumes:
|
||||
postgres_prod_data:
|
||||
driver: local
|
||||
redis_prod_data:
|
||||
driver: local
|
||||
mongodb_prod_data:
|
||||
driver: local
|
||||
mongodb_prod_config:
|
||||
driver: local
|
||||
minio_prod_data:
|
||||
driver: local
|
||||
Reference in New Issue
Block a user