# 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