Assist_Design/docker-compose.prod.yml

85 lines
2.0 KiB
YAML
Raw Normal View History

# Production Docker Compose Configuration
# This file is for reference - actual deployment on Plesk will use individual containers
version: '3.8'
services:
portal:
build:
context: .
dockerfile: portal/Dockerfile
container_name: customer-portal-frontend
ports:
- "3000:3000"
environment:
- NODE_ENV=production
- NEXT_PUBLIC_API_BASE=${NEXT_PUBLIC_API_BASE}
- NEXT_PUBLIC_APP_NAME=${NEXT_PUBLIC_APP_NAME}
restart: unless-stopped
depends_on:
- bff
networks:
- app-network
bff:
build:
context: .
dockerfile: bff/Dockerfile
container_name: customer-portal-backend
ports:
- "4000:4000"
environment:
- NODE_ENV=production
- DATABASE_URL=${DATABASE_URL}
- REDIS_URL=${REDIS_URL}
- WHMCS_BASE_URL=${WHMCS_BASE_URL}
- WHMCS_API_IDENTIFIER=${WHMCS_API_IDENTIFIER}
- WHMCS_API_SECRET=${WHMCS_API_SECRET}
- SF_LOGIN_URL=${SF_LOGIN_URL}
- SF_CLIENT_ID=${SF_CLIENT_ID}
- SF_PRIVATE_KEY_PATH=${SF_PRIVATE_KEY_PATH}
- SF_USERNAME=${SF_USERNAME}
- JWT_SECRET=${JWT_SECRET}
- JWT_EXPIRES_IN=${JWT_EXPIRES_IN}
- BCRYPT_ROUNDS=${BCRYPT_ROUNDS}
- CORS_ORIGIN=${CORS_ORIGIN}
- LOG_LEVEL=${LOG_LEVEL}
- PORT=4000
volumes:
- ./secrets:/app/secrets:ro
restart: unless-stopped
depends_on:
- postgres
- redis
networks:
- app-network
postgres:
image: postgres:17-alpine
container_name: customer-portal-db
environment:
POSTGRES_DB: ${POSTGRES_DB:-portal_prod}
POSTGRES_USER: ${POSTGRES_USER:-portal}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- postgres_data:/var/lib/postgresql/data
restart: unless-stopped
networks:
- app-network
redis:
image: redis:8-alpine
container_name: customer-portal-cache
volumes:
- redis_data:/data
restart: unless-stopped
networks:
- app-network
volumes:
postgres_data:
redis_data:
networks:
app-network:
driver: bridge