Switch the app from the paywalled bitnamilegacy/discourse image to the official discourse/discourse image behind Traefik (HTTP-only via an install-ssl override; sidekiq runs inside the app container). DB stays on pgvector/pgvector:pg17 with the install-user-aware pg_upgrade entrypoint; uploads migrate from the legacy bitnami volume idempotently.
Verified on cctest (fresh install reaches healthy + HTTPS 200). Running !testme to confirm in CI.
Switch the app from the paywalled `bitnamilegacy/discourse` image to the official `discourse/discourse` image behind Traefik (HTTP-only via an install-ssl override; sidekiq runs inside the app container). DB stays on `pgvector/pgvector:pg17` with the install-user-aware `pg_upgrade` entrypoint; uploads migrate from the legacy bitnami volume idempotently.
Mirrors coop-cloud/discourse#16 (same single commit, `0c4539b`).
Verified on cctest (fresh install reaches healthy + HTTPS 200). Running `!testme` to confirm in CI.
Replaces the paywalled bitnamilegacy app with the official discourse/discourse
image behind Traefik. DB is reused as-is; uploads migrate from the legacy
bitnami volume idempotently. The wrapper entrypoint injects the db_password and
smtp_password secrets (the official image has no *_FILE support). SMTP env vars
are renamed to the official names; release notes cover the migration.
Recipe 0.8.1+3.5.0 -> 1.0.0+3.5.3 (major: new image, env/volume/port changes).
Replace the bitnami-era pgvector:pg17 db + hand-rolled pg_upgrade entrypoint
with discourse/postgres:pg18 (pgvector + discourse's auto-upgrade layer, as
suggested on coop-cloud/discourse#16). The image does the heavy lifting
(installs old binaries, runs pg_upgrade into the versioned PGDATA); a thin
cc-db-entrypoint.sh wrapper fills the two gaps it leaves:
- secrets: inject DB_PASSWORD/POSTGRES_PASSWORD from the docker secret (the
image reads them from env, no *_FILE support);
- install user: detect the old cluster's bootstrap superuser (oid 10) and
export POSTGRES_USER so pg_upgrade + the new cluster's initdb match it. Real
deployments differ (bitnami-origin clusters install as 'postgres' + a
'discourse' app role; others as 'discourse'). The image hardcodes
--username=$POSTGRES_USER and never detects this, so the adapter is required;
- checksums: pg18's initdb enables data checksums by default but pg13-17
clusters here have them off, and pg_upgrade requires a match -> initdb the new
cluster with --no-data-checksums unless the old one reports them on.
Other changes:
- mount postgresql_data at /var/lib/postgresql (versioned PGDATA .../18/docker)
- pg_backup.sh: detect the superuser at runtime; fix paths for the new layout
- bump DB_ENTRYPOINT_VERSION v6, PG_BACKUP_VERSION v3 (immutable swarm configs)
- drop entrypoint.postgres.sh.tmpl
Verified on cctest: upgrade from an existing pg17 cluster (install user
'postgres') -> pg18, all data preserved, serves over HTTPS via Traefik.
- pg_backup.sh: use the db service's POSTGRES_USER (default postgres) for the
dump/drop/recreate instead of detecting the superuser at runtime, since the
recipe now sets that env var; one-line the constants comment
- release note: explain the in-place pg_upgrade + the POSTGRES_USER override
- bump PG_BACKUP_VERSION v4
Verified on cctest: backup + restore via the hooks round-trips with POSTGRES_USER.
Closing as obsolete: its substance is already upstream — the only remaining difference from main is the release/next → release/1.0.0+3.5.3 rename; the compose changes it proposed are exactly what upstream merged. upstream main is now discourse/discourse:3.5.3 + discourse/postgres:pg18 (version 1.0.0+3.5.3, commit 9d5c8ae) — the official-image migration landed upstream as coop-cloud/discourse#16.
The live upgrade PR for discourse is #6 (discourse/discourse:3.5.3 → 2026.7.1, redis:7.4-alpine → 8.10-alpine), which applies cleanly on top of current upstream and stays open.
Closing as **obsolete**: its substance is already upstream — the only remaining difference from main is the `release/next` → `release/1.0.0+3.5.3` rename; the compose changes it proposed are exactly what upstream merged. upstream main is now `discourse/discourse:3.5.3` + `discourse/postgres:pg18` (version `1.0.0+3.5.3`, commit 9d5c8ae) — the official-image migration landed upstream as coop-cloud/discourse#16.
The live upgrade PR for discourse is #6 (`discourse/discourse:3.5.3 → 2026.7.1`, `redis:7.4-alpine → 8.10-alpine`), which applies cleanly on top of current upstream and stays open.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Switch the app from the paywalled
bitnamilegacy/discourseimage to the officialdiscourse/discourseimage behind Traefik (HTTP-only via an install-ssl override; sidekiq runs inside the app container). DB stays onpgvector/pgvector:pg17with the install-user-awarepg_upgradeentrypoint; uploads migrate from the legacy bitnami volume idempotently.Mirrors coop-cloud/discourse#16 (same single commit,
0c4539b).Verified on cctest (fresh install reaches healthy + HTTPS 200). Running
!testmeto confirm in CI.!testme
🌻 cc-ci —
discourse@0c4539b7✅ passedfull logs · dashboard
autonomic-bot referenced this pull request2026-06-19 02:30:00 +00:00
!testme
🌻 cc-ci —
discourse@9b33fd87✅ passedfull logs · dashboard
9b33fd8761to0dd3d1d4be0dd3d1d4betof783d9988bClosing as obsolete: its substance is already upstream — the only remaining difference from main is the
release/next→release/1.0.0+3.5.3rename; the compose changes it proposed are exactly what upstream merged. upstream main is nowdiscourse/discourse:3.5.3+discourse/postgres:pg18(version1.0.0+3.5.3, commit9d5c8ae) — the official-image migration landed upstream as coop-cloud/discourse#16.The live upgrade PR for discourse is #6 (
discourse/discourse:3.5.3 → 2026.7.1,redis:7.4-alpine → 8.10-alpine), which applies cleanly on top of current upstream and stays open.Pull request closed