Commit95d0b72
fix(deploy): pass the whole .env into the container (env_file), not a hardcoded allowlist
fix(deploy): pass the whole .env into the container (env_file), not a hardcoded allowlist docker-compose.standalone.yml only forwarded a hand-maintained allowlist of env vars into the gluecron container (DATABASE_URL, ANTHROPIC_API_KEY, GOOGLE_OAUTH_*). Any env-gated feature whose variable wasn't manually added here was SILENTLY DEAD even when correctly set in .env — the app reads process.env, but the value never reached the container. This bit real features: /settings/deploy-targets shows "SERVER_TARGETS_KEY not set" (the key can't reach the app), WORKFLOW_SECRETS_KEY (workflow secrets encryption), and — critically for the in-progress work — every VAPRON_* deploy-trigger var, so the Gluecron→Vapron deploy could never have been configured no matter what was in .env. Fix the whole class at the root: add `env_file: .env` so the entire .env passes through, and any documented variable works the moment it's set. The explicit `environment:` block is kept — it still wins for the pinned literals (PORT, NODE_ENV, GIT_REPOS_PATH, APP_BASE_URL, SSH_PORT) and documents the load-bearing vars. env_file + environment coexist; environment takes precedence. SERVER_TARGETS_KEY itself was generated (openssl rand -hex 32) and set in the box .env in the same change.
1 file changed+11−095d0b723e7ef561c71daeabd01efe12162f87577
1 changed file+11−0
Modifieddocker-compose.standalone.yml+11−0View fileUnifiedSplit
@@ -36,6 +36,17 @@ services:
3636
3737 gluecron:
3838 build: .
39 # Pass the ENTIRE .env into the container. Previously only a hardcoded
40 # allowlist below reached the app, so any env-gated feature whose var
41 # wasn't hand-added here was silently dead even when set in .env —
42 # SERVER_TARGETS_KEY (deploy targets), WORKFLOW_SECRETS_KEY (workflow
43 # secrets), the VAPRON_* deploy vars, etc. env_file fixes the whole
44 # class: set a documented var in .env and it just works. The explicit
45 # `environment:` block below still wins for the literals it pins
46 # (PORT, NODE_ENV, GIT_REPOS_PATH, APP_BASE_URL, SSH_PORT) and stays as
47 # documentation of the load-bearing ones.
48 env_file:
49 - .env
3950 environment:
4051 - DATABASE_URL=${DATABASE_URL:-}
4152 - GIT_REPOS_PATH=/data/repos
4253