chore: initial baseline with P0-safety .gitignore
This commit is contained in:
@@ -0,0 +1,175 @@
|
||||
# =============================================================================
|
||||
# 企微IT智能服务台 — Docker Compose(公司内网服务器版)
|
||||
# =============================================================================
|
||||
# 目标服务器:10.90.5.110
|
||||
# 域名:itsupport.servyou.com.cn
|
||||
#
|
||||
# 用法:
|
||||
# 1. 上传部署包到服务器
|
||||
# 2. cp .env.example .env && vim .env # 填入真实配置
|
||||
# 3. docker compose up -d # 启动所有服务
|
||||
# 4. docker compose logs -f # 查看日志
|
||||
#
|
||||
# 架构:
|
||||
# 客户端浏览器 → Nginx:80 → { /itdesk/, /itagent/, /itadmin/, /api/, /ws/ }
|
||||
# =============================================================================
|
||||
|
||||
services:
|
||||
# --------------------------------------------------------------------------
|
||||
# PostgreSQL 16 — 持久化数据库
|
||||
# --------------------------------------------------------------------------
|
||||
postgres:
|
||||
image: postgres:16-alpine
|
||||
container_name: wecom_it_postgres
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
POSTGRES_USER: ${POSTGRES_USER:-wecom}
|
||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-wecom_secret}
|
||||
POSTGRES_DB: ${POSTGRES_DB:-wecom_it_desk}
|
||||
volumes:
|
||||
- postgres_data:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-wecom}"]
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
networks:
|
||||
- it-desk-internal
|
||||
logging:
|
||||
driver: "json-file"
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "3"
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
# Redis 7 — 缓存服务(token、会话、员工信息)
|
||||
# --------------------------------------------------------------------------
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
container_name: wecom_it_redis
|
||||
restart: unless-stopped
|
||||
command: redis-server --appendonly yes --save 900 1 --save 300 10
|
||||
volumes:
|
||||
- redis_data:/data
|
||||
healthcheck:
|
||||
test: ["CMD", "redis-cli", "ping"]
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
networks:
|
||||
- it-desk-internal
|
||||
logging:
|
||||
driver: "json-file"
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "3"
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
# FastAPI 后端 — 核心业务服务
|
||||
# --------------------------------------------------------------------------
|
||||
backend:
|
||||
build:
|
||||
context: ./backend
|
||||
dockerfile: Dockerfile
|
||||
image: wecom-it-desk-backend:latest
|
||||
container_name: wecom_it_backend
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
# 企微凭证
|
||||
- WECOM_CORP_ID=${WECOM_CORP_ID}
|
||||
- WECOM_AGENT_ID=${WECOM_AGENT_ID}
|
||||
- WECOM_SECRET=${WECOM_SECRET}
|
||||
- WECOM_TOKEN=${WECOM_TOKEN}
|
||||
- WECOM_ENCODING_AES_KEY=${WECOM_ENCODING_AES_KEY}
|
||||
# 数据库(Docker 内部网络,用容器名通信)
|
||||
- DATABASE_URL=postgresql://${POSTGRES_USER:-wecom}:${POSTGRES_PASSWORD:-wecom_secret}@postgres:5432/${POSTGRES_DB:-wecom_it_desk}
|
||||
# Redis(Docker 内部网络)
|
||||
- REDIS_URL=redis://redis:6379/0
|
||||
# CORS
|
||||
- CORS_ORIGINS=${CORS_ORIGINS:-http://itsupport.servyou.com.cn}
|
||||
# AI 服务(Dify)
|
||||
- DIFY_API_URL=${DIFY_API_URL}
|
||||
- DIFY_API_KEY=${DIFY_API_KEY}
|
||||
- DIFY_TIMEOUT=${DIFY_TIMEOUT:-30}
|
||||
# AI Wingman(留空禁用)
|
||||
- DIFY_WINGMAN_API_URL=${DIFY_WINGMAN_API_URL:-}
|
||||
- DIFY_WINGMAN_API_KEY=${DIFY_WINGMAN_API_KEY:-}
|
||||
- DIFY_WINGMAN_TIMEOUT=${DIFY_WINGMAN_TIMEOUT:-30}
|
||||
# Mock 登录(生产环境默认关闭,如需临时调试请在 .env 中显式设置为 true)
|
||||
- MOCK_LOGIN_ENABLED=${MOCK_LOGIN_ENABLED:-false}
|
||||
# 服务配置
|
||||
- BACKEND_HOST=0.0.0.0
|
||||
- BACKEND_PORT=8000
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
command: >
|
||||
/bin/sh -c "
|
||||
echo '>>> 执行数据库迁移...' &&
|
||||
cd /app && PYTHONPATH=/app alembic upgrade head &&
|
||||
echo '>>> 启动 API 服务...' &&
|
||||
uvicorn app.main:app --host 0.0.0.0 --port 8000 --workers 2
|
||||
"
|
||||
networks:
|
||||
- it-desk-internal
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "curl -f http://localhost:8000/health || exit 1"]
|
||||
interval: 15s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
start_period: 30s
|
||||
logging:
|
||||
driver: "json-file"
|
||||
options:
|
||||
max-size: "20m"
|
||||
max-file: "5"
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
# Nginx — 反向代理 + 静态文件服务
|
||||
# --------------------------------------------------------------------------
|
||||
nginx:
|
||||
image: nginx:1.27-alpine
|
||||
container_name: wecom_it_nginx
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
volumes:
|
||||
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
|
||||
- ./nginx/ssl:/etc/nginx/ssl:ro
|
||||
- ./frontend-h5/dist:/usr/share/nginx/html/itdesk:ro
|
||||
- ./frontend-agent/dist:/usr/share/nginx/html/itagent:ro
|
||||
- ./frontend-admin/dist:/usr/share/nginx/html/itadmin:ro
|
||||
- ./frontend-portal/dist:/usr/share/nginx/html/itportal:ro
|
||||
depends_on:
|
||||
- backend
|
||||
networks:
|
||||
- it-desk-internal
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "curl -f http://localhost:80/itdesk/health || exit 1"]
|
||||
interval: 15s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
logging:
|
||||
driver: "json-file"
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "3"
|
||||
|
||||
# =============================================================================
|
||||
# 网络
|
||||
# =============================================================================
|
||||
networks:
|
||||
it-desk-internal:
|
||||
driver: bridge
|
||||
|
||||
# =============================================================================
|
||||
# 数据卷 — 持久化存储
|
||||
# =============================================================================
|
||||
volumes:
|
||||
postgres_data:
|
||||
name: wecom_it_postgres_data
|
||||
redis_data:
|
||||
name: wecom_it_redis_data
|
||||
Reference in New Issue
Block a user