Переглянути джерело

fix(deploy): 透传全部环境变量到容器

- docker-compose: 改用 env_file: .env 自动透传所有 .env 变量(含 SCHEDULES 等),environment 只留容器默认值;原先显式列表会静默丢弃未列出的变量
- k8s configmap: 补 SCHEDULER_ENABLED / SCHEDULES 旋钮(默认仍用镜像内 config)

Co-Authored-By: Claude <noreply@anthropic.com>
lkatzey 5 днів тому
батько
коміт
6b7ffb8ef0
2 змінених файлів з 16 додано та 22 видалено
  1. 6 0
      deploy/k8s/01-configmap.yaml
  2. 10 22
      docker-compose.yml

+ 6 - 0
deploy/k8s/01-configmap.yaml

@@ -14,3 +14,9 @@ data:
   TZ: Asia/Shanghai
   LOG_LEVEL: info
   NODE_ENV: production
+  # Scheduled renders — the in-process scheduler (instrumentation + node-cron)
+  # reads `schedules` from config/default.yaml by default (baked into the
+  # image). Override with SCHEDULES (JSON array, same shape) or disable the
+  # scheduler with SCHEDULER_ENABLED=false.
+  SCHEDULER_ENABLED: "true"
+  # SCHEDULES: '[{"cron":"50 7 * * *","template":"github-trending","platform":"bilibili","source":"github-trending","publish":true}]'

+ 10 - 22
docker-compose.yml

@@ -7,32 +7,20 @@ services:
     user: "0:0"
     ports:
       - "${PORT:-13000}:3000"
+    # Pass EVERY variable from .env (API keys, OSS, Feishu, SCHEDULES,
+    # SCHEDULER_ENABLED, LOG_LEVEL, …) into the container automatically via
+    # env_file — no per-variable list to maintain. The previous explicit list
+    # silently dropped any var not enumerated, so new knobs set in .env never
+    # reached the container. `environment` below only adds container-specific
+    # defaults for keys that may be absent from .env, and overrides env_file for
+    # those keys.
+    env_file:
+      - .env
     environment:
-      - OPENAI_API_KEY=${OPENAI_API_KEY}
-      - OPENAI_BASE_URL=${OPENAI_BASE_URL}
-      - OPENAI_TTS_API_KEY=${OPENAI_TTS_API_KEY}
-      - OPENAI_TTS_BASE_URL=${OPENAI_TTS_BASE_URL}
-      - FISH_AUDIO_API_KEY=${FISH_AUDIO_API_KEY}
-      - MINIMAX_API_KEY=${MINIMAX_API_KEY}
-      - MINIMAX_GROUP_ID=${MINIMAX_GROUP_ID}
-      - ELEVENLABS_API_KEY=${ELEVENLABS_API_KEY}
-      # Unified output + cache retention
       - OUTPUT_DIR=${OUTPUT_DIR:-/app/output}
       - OUTPUT_RETENTION_DAYS=${OUTPUT_RETENTION_DAYS:-30}
-      # Container timezone — keeps logs, ffmpeg, and new Date() on Beijing time
-      # so the daily-trending cover date never rolls over a day early/late.
       - TZ=${TZ:-Asia/Shanghai}
-      # OSS (Alibaba Cloud Object Storage) — publish stage
-      - OSS_ACCESS_KEY_ID=${OSS_ACCESS_KEY_ID:-}
-      - OSS_ACCESS_KEY_SECRET=${OSS_ACCESS_KEY_SECRET:-}
-      - OSS_REGION=${OSS_REGION:-}
-      - OSS_BUCKET=${OSS_BUCKET:-}
-      - OSS_ENDPOINT=${OSS_ENDPOINT:-}
-      - OSS_PATH=${OSS_PATH:-}
-      - OSS_PUBLIC_DOMAIN=${OSS_PUBLIC_DOMAIN:-}
-      # Feishu custom-bot webhook — publish stage
-      - FEISHU_WEBHOOK_URL=${FEISHU_WEBHOOK_URL:-}
-      - FEISHU_WEBHOOK_SECRET=${FEISHU_WEBHOOK_SECRET:-}
+      - TIMEZONE=${TIMEZONE:-Asia/Shanghai}
     volumes:
       - ./output:/app/output
       - pipeline-jobs:/tmp/pipeline-jobs