Files
ai-contract-platform/docker-compose.server.yml
T
yuqei b7073d9c5b feat: enhance production deployment configuration and documentation
- Update .env.example with production-ready environment variables
- Add frontend Aliyun deployment configuration with nginx gateway
- Refactor docker-compose.server.yml for external services
- Add comprehensive deployment guide (docs/DEPLOYMENT.md)
- Enhance troubleshooting documentation with Git Bash path issues
- Add deployment scripts (build-frontend.sh, deploy-frontend.sh)
- Add deploy directory with docker-compose and nginx config
- Update .gitignore to exclude temporary directories

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-18 22:27:00 +08:00

97 lines
4.2 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AI Contract Platform 后端生产部署配置
# 部署位置: 192.168.3.90:/opt/apps/ai-contract-platform
# 使用外部共享服务(PostgreSQL、Redis、MinIO 在 192.168.3.90)
# 前端部署在阿里云,见 docker-compose.frontend.aliyun.yml
name: ai-contract-platform
services:
redis:
image: redis:7
restart: unless-stopped
networks:
- ai-contract-backend
backend:
build:
context: ./backend
dockerfile: Dockerfile
restart: unless-stopped
depends_on:
redis:
condition: service_started
environment:
APP_NAME: ${APP_NAME:-AI Contract Platform}
APP_ENV: ${APP_ENV:-production}
SECRET_KEY: ${SECRET_KEY:?Set SECRET_KEY in .env before starting production}
DATABASE_URL: ${DATABASE_URL:?Set DATABASE_URL in .env before starting production}
REDIS_URL: ${REDIS_URL:-redis://redis:6379/0}
MINIO_ENDPOINT: ${MINIO_ENDPOINT:-192.168.3.90:9000}
MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY:?Set MINIO_ACCESS_KEY in .env before starting production}
MINIO_SECRET_KEY: ${MINIO_SECRET_KEY:?Set MINIO_SECRET_KEY in .env before starting production}
MINIO_BUCKET: ${MINIO_BUCKET:-contracts}
SHARED_AI_PLATFORM_BASE_URL: ${SHARED_AI_PLATFORM_BASE_URL:-http://192.168.3.90:18011}
SHARED_AI_PLATFORM_API_PREFIX: ${SHARED_AI_PLATFORM_API_PREFIX:-/api/v0.2}
SHARED_AI_PLATFORM_APP_ID: ${SHARED_AI_PLATFORM_APP_ID:-ai-contract-platform}
SHARED_AI_PLATFORM_API_KEY: ${SHARED_AI_PLATFORM_API_KEY:?Set SHARED_AI_PLATFORM_API_KEY in .env before starting production}
SHARED_AI_PLATFORM_TIMEOUT_SECONDS: ${SHARED_AI_PLATFORM_TIMEOUT_SECONDS:-180}
SHARED_AI_PLATFORM_LEGAL_REVIEW_ENABLED: ${SHARED_AI_PLATFORM_LEGAL_REVIEW_ENABLED:-true}
SHARED_AI_PLATFORM_LEGAL_REVIEW_FALLBACK_TO_LOCAL: ${SHARED_AI_PLATFORM_LEGAL_REVIEW_FALLBACK_TO_LOCAL:-false}
command: >
sh -c "alembic upgrade head &&
uvicorn app.main:app --host 0.0.0.0 --port 8000"
volumes:
- backend_storage:/app/storage
ports:
- "8001:8000"
extra_hosts:
- "host.docker.internal:192.168.3.90"
networks:
- ai-contract-backend
legal-change-impact-worker:
build:
context: ./backend
dockerfile: Dockerfile
restart: unless-stopped
depends_on:
backend:
condition: service_started
environment:
APP_NAME: ${APP_NAME:-AI Contract Platform}
APP_ENV: ${APP_ENV:-production}
SECRET_KEY: ${SECRET_KEY:?Set SECRET_KEY in .env before starting production}
DATABASE_URL: ${DATABASE_URL:?Set DATABASE_URL in .env before starting production}
REDIS_URL: ${REDIS_URL:-redis://redis:6379/0}
MINIO_ENDPOINT: ${MINIO_ENDPOINT:-192.168.3.90:9000}
MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY:?Set MINIO_ACCESS_KEY in .env before starting production}
MINIO_SECRET_KEY: ${MINIO_SECRET_KEY:?Set MINIO_SECRET_KEY in .env before starting production}
MINIO_BUCKET: ${MINIO_BUCKET:-contracts}
SHARED_AI_PLATFORM_BASE_URL: ${SHARED_AI_PLATFORM_BASE_URL:-http://192.168.3.90:18011}
SHARED_AI_PLATFORM_API_PREFIX: ${SHARED_AI_PLATFORM_API_PREFIX:-/api/v0.2}
SHARED_AI_PLATFORM_APP_ID: ${SHARED_AI_PLATFORM_APP_ID:-ai-contract-platform}
SHARED_AI_PLATFORM_API_KEY: ${SHARED_AI_PLATFORM_API_KEY:?Set SHARED_AI_PLATFORM_API_KEY in .env before starting production}
SHARED_AI_PLATFORM_TIMEOUT_SECONDS: ${SHARED_AI_PLATFORM_TIMEOUT_SECONDS:-180}
SHARED_AI_PLATFORM_LEGAL_REVIEW_ENABLED: ${SHARED_AI_PLATFORM_LEGAL_REVIEW_ENABLED:-true}
SHARED_AI_PLATFORM_LEGAL_REVIEW_FALLBACK_TO_LOCAL: ${SHARED_AI_PLATFORM_LEGAL_REVIEW_FALLBACK_TO_LOCAL:-false}
LEGAL_CHANGE_IMPACT_WORKER_BATCH_SIZE: ${LEGAL_CHANGE_IMPACT_WORKER_BATCH_SIZE:-10}
LEGAL_CHANGE_IMPACT_WORKER_INTERVAL_SECONDS: ${LEGAL_CHANGE_IMPACT_WORKER_INTERVAL_SECONDS:-300}
LEGAL_CHANGE_IMPACT_SEMANTIC_ENABLED: ${LEGAL_CHANGE_IMPACT_SEMANTIC_ENABLED:-true}
command: >
python -m app.tasks.legal_change_impact_worker
--limit 10
--interval-seconds 300
volumes:
- backend_storage:/app/storage
extra_hosts:
- "host.docker.internal:192.168.3.90"
networks:
- ai-contract-backend
volumes:
backend_storage:
networks:
ai-contract-backend:
name: ai-contract-platform_default