fix(deploynotify): reference SOURCE_COMMIT in compose so it reaches container

Coolify passes predefined vars to Docker Compose via --env-file for
interpolation only; a var reaches the container solely if the compose file
references it. Removing the reference left SOURCE_COMMIT unset, so deploynotify
reported "unknown". Re-add SOURCE_COMMIT: ${SOURCE_COMMIT:-} per Coolify docs.
This commit is contained in:
2026-06-28 23:30:03 +07:00
parent 64a837b086
commit 9102279db6
3 changed files with 21 additions and 16 deletions
+6 -5
View File
@@ -23,11 +23,12 @@ ADMIN_IDS=
# Only the twentyq module needs this. Leave blank to disable that command.
GEMINI_API_KEY=
# SOURCE_COMMIT (commit SHA) is auto-injected into the container at runtime by
# Coolify and read at startup for the deploynotify owner DM — do NOT set it here
# and do NOT declare it in docker-compose (that would clobber Coolify's value
# with an empty string). Local `docker compose up` has none, so deploynotify
# just stays silent.
# SOURCE_COMMIT (commit SHA) is read at startup for the deploynotify owner DM.
# Do NOT set it here. On Coolify (Docker Compose) it is a predefined variable
# that reaches the container only because docker-compose.yml references it
# (`SOURCE_COMMIT: ${SOURCE_COMMIT:-}`) — Coolify supplies the value via
# --env-file. Local `docker compose up` has none, so deploynotify reports
# "unknown".
# ====================== Leave UNSET on self-host ==================
# These are AWS-only. cmd/server reads secrets directly from the plain env
+7 -5
View File
@@ -16,11 +16,13 @@ services:
ADMIN_IDS: ${ADMIN_IDS} # CSV of admin Telegram user ids
# --- Optional ---
GEMINI_API_KEY: ${GEMINI_API_KEY} # only the twentyq module needs it
# SOURCE_COMMIT (commit SHA, read at startup for the deploynotify owner DM)
# is auto-injected into the container by Coolify — do NOT declare it here.
# A `SOURCE_COMMIT: ${SOURCE_COMMIT:-}` entry resolves to "" at compose-parse
# time and would clobber Coolify's runtime value. Local `docker compose up`
# has no SOURCE_COMMIT, so deploynotify just stays silent there.
# SOURCE_COMMIT (commit SHA, read at startup for the deploynotify owner DM).
# For Docker Compose, Coolify passes predefined vars via --env-file for
# interpolation ONLY — the var reaches the container only if referenced
# here (per Coolify docs). The :- default keeps local `docker compose up`
# (where SOURCE_COMMIT is unset) quiet; on Coolify the real value wins, so
# deploynotify reports "unknown" only outside Coolify.
SOURCE_COMMIT: ${SOURCE_COMMIT:-}
# Storage auto-selects mongodb because MONGO_URL is set — no KV_PROVIDER.
# The in-process cron scheduler runs by default — no CRON_MODE.
# PORT defaults to 8080 (internal health server) — omit unless overriding.
+8 -6
View File
@@ -88,12 +88,14 @@ SSM/AWS lookup that fails with no AWS creds and bricks startup), `KV_PROVIDER`,
bot token; a second poller gets HTTP 409, and a second in-process scheduler
double-fires crons. Prefer **stop-first redeploys** so two containers never
overlap near a cron time.
5. **deploynotify commit SHA:** Coolify auto-injects `SOURCE_COMMIT` (a
predefined runtime env var) into the container, and the bot reads it at
startup to DM the owner the "new version" notice — no manual wiring, and do
**not** declare `SOURCE_COMMIT` in compose/env (a `${SOURCE_COMMIT:-}` entry
resolves to `""` at parse time and clobbers Coolify's value). Without it,
`deploynotify` stays silent (no crash) — but you lose that notification.
5. **deploynotify commit SHA:** `SOURCE_COMMIT` is a Coolify predefined
variable. For Docker Compose, Coolify passes predefined vars via `--env-file`
for interpolation only, so the value reaches the container **only because
`docker-compose.yml` references it** (`SOURCE_COMMIT: ${SOURCE_COMMIT:-}`).
The bot reads it at startup and DMs the owner on every boot; outside Coolify
(local `docker compose up`) it is unset and the DM shows `unknown`. The
"Include Source Commit in Build" Coolify setting affects build args only and
is **not** needed for this runtime path.
6. **Health check:** use Coolify's HTTP monitor against `GET /` (returns
`text/plain` `miti99bot ok`). Do **not** use a compose `healthcheck` — the
distroless image has no shell/curl and `cmd/server` has no `-healthcheck`