b7073d9c5b
- 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>
97 lines
4.2 KiB
YAML
97 lines
4.2 KiB
YAML
# 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
|