b79ee96f7e
- deploy/container/api-server.env.example 增加 AGC 官方 LLM Router 段,列明容器预览必须由 .env.secrets.local 提供的三个密钥 - 【开发运维】Jenkins容器预览部署控制面技术方案 补充预览 secrets 必含密钥与缺失时的失败表现 - 【开发运维】本地开发验证与生产运维 补充容器与 Jenkins 预览路径同样受 Router 启动校验约束 - project-memory pitfalls 补充容器预览缺少 Router 密钥时的排障特征
76 lines
4.0 KiB
Bash
76 lines
4.0 KiB
Bash
# 复制为 deploy/container/api-server.env 后填入本机或预发值。
|
||
# 该文件只用于容器隔离方案,不参与 systemd/Jenkins 生产部署。
|
||
# 不要在这里写真实 token 后提交 Git。
|
||
|
||
GENARRATIVE_ENV=container
|
||
GENARRATIVE_API_HOST=0.0.0.0
|
||
GENARRATIVE_API_PORT=8082
|
||
GENARRATIVE_API_LOG=info,tower_http=info
|
||
GENARRATIVE_API_LISTEN_BACKLOG=1024
|
||
GENARRATIVE_API_WORKER_THREADS=4
|
||
# 容器 smoke 可临时设 all;压测或预发按 api / external-generation-worker 拆进程。
|
||
GENARRATIVE_PROCESS_ROLE=api
|
||
# 默认 queue 进入 external_generation_job;本地/小流量同步排查可显式设 inline。
|
||
GENARRATIVE_EXTERNAL_GENERATION_MODE=queue
|
||
GENARRATIVE_EXTERNAL_GENERATION_WORKER_ID=
|
||
GENARRATIVE_EXTERNAL_GENERATION_WORKER_CONCURRENCY=2
|
||
GENARRATIVE_EXTERNAL_GENERATION_WORKER_POLL_INTERVAL_MS=2000
|
||
GENARRATIVE_EXTERNAL_GENERATION_WORKER_LEASE_SECONDS=600
|
||
GENARRATIVE_EXTERNAL_GENERATION_WORKER_JOB_TIMEOUT_SECONDS=900
|
||
GENARRATIVE_EXTERNAL_GENERATION_WORKER_LONG_JOB_TIMEOUT_SECONDS=1800
|
||
GENARRATIVE_API_MAX_CONCURRENT_REQUESTS=512
|
||
GENARRATIVE_API_ADMIN_MAX_CONCURRENT_REQUESTS=16
|
||
GENARRATIVE_TRACKING_OUTBOX_ENABLED=true
|
||
GENARRATIVE_TRACKING_OUTBOX_DIR=/var/lib/genarrative/tracking-outbox
|
||
GENARRATIVE_TRACKING_OUTBOX_BATCH_SIZE=500
|
||
GENARRATIVE_TRACKING_OUTBOX_FLUSH_INTERVAL_MS=1000
|
||
GENARRATIVE_TRACKING_OUTBOX_MAX_BYTES=268435456
|
||
GENARRATIVE_WALLET_REFUND_OUTBOX_ENABLED=true
|
||
GENARRATIVE_WALLET_REFUND_OUTBOX_DIR=/var/lib/genarrative/wallet-refund-outbox
|
||
GENARRATIVE_WALLET_REFUND_OUTBOX_BATCH_SIZE=100
|
||
GENARRATIVE_WALLET_REFUND_OUTBOX_FLUSH_INTERVAL_MS=1000
|
||
GENARRATIVE_WALLET_REFUND_OUTBOX_MAX_BYTES=67108864
|
||
GENARRATIVE_BGFILTER_WORKER_CONCURRENCY=16
|
||
GENARRATIVE_EDITOR_BGFILTER_SINGLE_IMAGE_ESTIMATE_MS=5000
|
||
GENARRATIVE_EDITOR_BGFILTER_CIRCUIT_FAILURE_THRESHOLD=3
|
||
GENARRATIVE_EDITOR_BGFILTER_CIRCUIT_COOLDOWN_SECONDS=120
|
||
# BgFilter 失败后的中间兜底:阿里云通用抠图(SegmentCommonImage)。AccessKey 留空则跳过该层,
|
||
# BgFilter 失败直接本地 editor_green_screen 去背;填入后恢复 BgFilter→阿里云→本地三级兜底。
|
||
# AccessKey 也可复用标准 SDK 命名 ALIBABA_CLOUD_ACCESS_KEY_ID / ALIBABA_CLOUD_ACCESS_KEY_SECRET。
|
||
GENARRATIVE_ALIYUN_MATTING_ENABLED=true
|
||
GENARRATIVE_ALIYUN_MATTING_ENDPOINT=imageseg.cn-shanghai.aliyuncs.com
|
||
GENARRATIVE_ALIYUN_MATTING_ACCESS_KEY_ID=
|
||
GENARRATIVE_ALIYUN_MATTING_ACCESS_KEY_SECRET=
|
||
GENARRATIVE_ALIYUN_MATTING_REQUEST_TIMEOUT_MS=30000
|
||
|
||
GENARRATIVE_OTEL_ENABLED=true
|
||
OTEL_SERVICE_NAME=genarrative-api
|
||
OTEL_EXPORTER_OTLP_ENDPOINT=http://otelcol:4318
|
||
OTEL_RESOURCE_ATTRIBUTES=deployment.environment=container,service.namespace=genarrative
|
||
|
||
GENARRATIVE_INTERNAL_API_SECRET=CHANGE_ME_FOR_CONTAINER
|
||
GENARRATIVE_JWT_ISSUER=genarrative-container
|
||
GENARRATIVE_JWT_SECRET=CHANGE_ME_FOR_CONTAINER
|
||
AUTH_REFRESH_COOKIE_SECURE=false
|
||
|
||
# 默认连接 compose 内部 SpacetimeDB;宿主机发布模块使用 127.0.0.1:13101。
|
||
GENARRATIVE_SPACETIME_SERVER_URL=http://spacetimedb:3101
|
||
GENARRATIVE_SPACETIME_DATABASE=genarrative-loadtest
|
||
GENARRATIVE_SPACETIME_TOKEN=
|
||
# HTTP 角色使用 8 条无 read-model 订阅的调用连接,并额外创建 1 条共享缓存读连接。
|
||
GENARRATIVE_SPACETIME_POOL_SIZE=8
|
||
GENARRATIVE_SPACETIME_PROCEDURE_TIMEOUT_SECONDS=45
|
||
|
||
GENARRATIVE_LLM_PROVIDER=openai-compatible
|
||
GENARRATIVE_LLM_BASE_URL=https://api.vectorengine.cn/v1
|
||
GENARRATIVE_LLM_API_KEY=
|
||
GENARRATIVE_LLM_MODEL=gpt-5.4-mini
|
||
# AGC 官方 LLM Router:api / all 角色启动时硬校验官方 HTTPS 地址、固定模型和以下三个密钥,缺失直接拒绝启动。
|
||
# 容器预览的密钥来自镜像内 /srv/genarrative/.env.secrets.local(Jenkins 预览 secrets 副本),
|
||
# 该副本必须包含 GENARRATIVE_LLM_ROUTER_PROVISIONING_SECRET、
|
||
# GENARRATIVE_LLM_ROUTER_API_KEY_ENCRYPTION_SECRET 和 GENARRATIVE_LLM_ROUTER_ADMIN_TOKEN。
|
||
# 本文件只用于按实例显式覆盖;容器环境变量留空时仍由镜像内 .env.secrets.local 提供取值。
|
||
# GENARRATIVE_LLM_ROUTER_BASE_URL=https://router.genarrative.world/v1
|
||
WECHAT_MINIPROGRAM_MESSAGE_TOKEN=
|
||
WECHAT_MINIPROGRAM_MESSAGE_ENCODING_AES_KEY=
|