Files
ttstd-infinite-canvas/docker-compose.deploy.yml
ddcat666 a0f025aa96 feat(platform): 日志管理 - 统一日志出口并屏蔽查询与 Agent 流式事件日志
新增 internal/logging,slog、标准库 log、GORM 与 Gin 访问日志共用同一 Handler,由 CANVAS_LOG_LEVEL / CANVAS_LOG_FORMAT 控制。info 级别不再输出成功的查询类请求、成功 SQL、message_end 等 Agent 流式事件和常规画布自动保存;4xx/5xx、慢请求、慢 SQL、SQL 失败与 panic 仍会记录,SQL 不内联参数值。
2026-09-30 03:33:34 +08:00

112 lines
4.1 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.
services:
postgres:
image: postgres:17-alpine
environment:
POSTGRES_DB: ${POSTGRES_DB:-open_ai_canvas}
POSTGRES_USER: ${POSTGRES_USER:-open_ai_canvas}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?请先运行一键部署脚本生成数据库密码}
volumes:
- ${CANVAS_POSTGRES_DATA_PATH:-postgres-data}:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
interval: 10s
timeout: 5s
retries: 10
restart: unless-stopped
redis:
image: redis:7.4-alpine
command: ["redis-server", "--appendonly", "yes", "--appendfsync", "everysec"]
volumes:
- ${CANVAS_REDIS_DATA_PATH:-redis-data}:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 10
restart: unless-stopped
migrate:
image: ${CANVAS_BACKEND_IMAGE:?请先配置 CANVAS_BACKEND_IMAGE(必须包含镜像 digest)}
entrypoint: ["migrate-schema"]
command: ["up"]
environment:
CANVAS_BACKEND_DATA_DIR: /data
CANVAS_DATABASE_DRIVER: postgres
DATABASE_URL: ${DATABASE_URL:?请先运行一键部署脚本生成数据库连接}
depends_on:
postgres:
condition: service_healthy
yingce-agent:
image: ${CANVAS_YINGCE_AGENT_IMAGE:?请先配置 CANVAS_YINGCE_AGENT_IMAGE(必须包含镜像 digest)}
environment:
YINGCE_AGENT_TOKEN: ${YINGCE_AGENT_TOKEN:?请先配置 YINGCE_AGENT_TOKEN}
MAX_CONCURRENT_SESSIONS: ${YINGCE_AGENT_MAX_SESSIONS:-8}
NODE_MAX_OLD_SPACE_SIZE: ${YINGCE_AGENT_NODE_MEMORY_MB:-512}
healthcheck:
test: ["CMD", "wget", "-qO-", "http://127.0.0.1:8081/healthz"]
interval: 10s
timeout: 3s
retries: 10
start_period: 10s
restart: unless-stopped
backend:
image: ${CANVAS_BACKEND_IMAGE:?请先配置 CANVAS_BACKEND_IMAGE(必须包含镜像 digest)}
environment:
CANVAS_BACKEND_ADDR: ":8080"
CANVAS_BACKEND_DATA_DIR: /data
CANVAS_AUTO_MIGRATE: "false"
CANVAS_SHUTDOWN_TIMEOUT: ${CANVAS_SHUTDOWN_TIMEOUT:-10m}
CANVAS_DATABASE_DRIVER: postgres
DATABASE_URL: ${DATABASE_URL:?请先运行一键部署脚本生成数据库连接}
REDIS_URL: redis://redis:6379/0
CANVAS_WORKER_CONCURRENCY: ${CANVAS_WORKER_CONCURRENCY:-3}
CANVAS_CHANNEL_CONCURRENCY: ${CANVAS_CHANNEL_CONCURRENCY:-3}
CANVAS_REGISTRATION_ENABLED: ${CANVAS_REGISTRATION_ENABLED:-false}
CANVAS_ALLOW_PRIVATE_UPSTREAMS: ${CANVAS_ALLOW_PRIVATE_UPSTREAMS:-false}
CANVAS_ALLOWED_PRIVATE_UPSTREAM_HOSTS: ${CANVAS_ALLOWED_PRIVATE_UPSTREAM_HOSTS:-}
CANVAS_CORS_ORIGINS: ${CANVAS_CORS_ORIGINS:-}
CANVAS_PUBLIC_BASE_URL: ${CANVAS_PUBLIC_BASE_URL:-}
CANVAS_UPDATER_SOCKET: /run/open-ai-canvas-updater/updater.sock
CANVAS_UPDATER_TOKEN: ${CANVAS_UPDATER_TOKEN:-}
YINGCE_AGENT_URL: http://yingce-agent:8081
YINGCE_AGENT_TOKEN: ${YINGCE_AGENT_TOKEN:?请先配置 YINGCE_AGENT_TOKEN}
YINGCE_AGENT_BRIDGE_HOST: backend
CANVAS_LOG_LEVEL: ${CANVAS_LOG_LEVEL:-info}
CANVAS_LOG_FORMAT: ${CANVAS_LOG_FORMAT:-text}
GIN_MODE: release
volumes:
- ${CANVAS_DATA_PATH:-backend-data}:/data
- ${CANVAS_UPDATER_SOCKET_DIR:-/run/open-ai-canvas-updater}:/run/open-ai-canvas-updater
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
migrate:
condition: service_completed_successfully
yingce-agent:
condition: service_healthy
restart: unless-stopped
stop_grace_period: ${CANVAS_SHUTDOWN_TIMEOUT:-10m}
web:
image: ${CANVAS_WEB_IMAGE:?请先配置 CANVAS_WEB_IMAGE(必须包含镜像 digest)}
ports:
- "${CANVAS_HTTP_PORT:-3000}:3000"
volumes:
# Keep hashed chunks from the current and previous web releases for old tabs.
- ${CANVAS_WEB_DATA_PATH:-web-data}:/usr/share/nginx/html
depends_on:
backend:
condition: service_healthy
restart: unless-stopped
volumes:
backend-data:
postgres-data:
redis-data:
web-data: