72 lines
2.3 KiB
YAML
72 lines
2.3 KiB
YAML
version: '3.8'
|
|
|
|
services:
|
|
knowledge-automation:
|
|
build: .
|
|
container_name: knowledge-automation-multiuser
|
|
ports:
|
|
- "51232:51233"
|
|
volumes:
|
|
- ./data:/app/data # 数据库持久化
|
|
- ./logs:/app/logs # 日志持久化
|
|
- ./截图:/app/截图 # 截图持久化
|
|
- /etc/localtime:/etc/localtime:ro # 时区同步
|
|
- ./static:/app/static # 静态文件(实时更新)
|
|
- ./templates:/app/templates # 模板文件(实时更新)
|
|
- ./app.py:/app/app.py # 主程序(实时更新)
|
|
- ./database.py:/app/database.py # 数据库模块(实时更新)
|
|
dns:
|
|
- 223.5.5.5
|
|
- 114.114.114.114
|
|
- 119.29.29.29
|
|
environment:
|
|
- TZ=Asia/Shanghai
|
|
- PYTHONUNBUFFERED=1
|
|
# Flask 配置
|
|
- FLASK_ENV=production
|
|
- FLASK_DEBUG=false
|
|
# 服务器配置
|
|
- SERVER_HOST=0.0.0.0
|
|
- SERVER_PORT=51233
|
|
# 数据库配置
|
|
- DB_FILE=data/app_data.db
|
|
- DB_POOL_SIZE=5
|
|
- SYSTEM_CONFIG_CACHE_TTL_SECONDS=30
|
|
# 并发控制配置
|
|
- MAX_CONCURRENT_GLOBAL=2
|
|
- MAX_CONCURRENT_PER_ACCOUNT=1
|
|
- MAX_CONCURRENT_CONTEXTS=100
|
|
# 安全配置
|
|
- SESSION_LIFETIME_HOURS=24
|
|
- SESSION_COOKIE_SECURE=false
|
|
- MAX_CAPTCHA_ATTEMPTS=5
|
|
- MAX_IP_ATTEMPTS_PER_HOUR=10
|
|
# 日志配置
|
|
- LOG_LEVEL=INFO
|
|
- LOG_FILE=logs/app.log
|
|
- API_DIAGNOSTIC_LOG=0
|
|
- API_DIAGNOSTIC_SLOW_MS=0
|
|
# 状态推送节流(秒)
|
|
- STATUS_PUSH_INTERVAL_SECONDS=2
|
|
# wkhtmltoimage 截图配置
|
|
- WKHTMLTOIMAGE_FULL_PAGE=0
|
|
# 知识管理平台配置
|
|
- ZSGL_LOGIN_URL=https://postoa.aidunsoft.com/admin/login.aspx
|
|
- ZSGL_INDEX_URL_PATTERN=index.aspx
|
|
- PAGE_LOAD_TIMEOUT=60000
|
|
restart: unless-stopped
|
|
shm_size: 2gb # 为Chromium分配共享内存
|
|
|
|
# 内存和CPU资源限制
|
|
mem_limit: 4g # 硬限制:最大4GB内存
|
|
mem_reservation: 2g # 软限制:预留2GB
|
|
cpus: '2.0' # 限制使用2个CPU核心
|
|
|
|
# 健康检查(可选)
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "curl -f http://localhost:51233 || exit 1"]
|
|
interval: 5m
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 40s
|