Bitnami deprecated free versioned images on Docker Hub in August 2025.
The following images no longer exist and cause deployment failures:
docker.io/bitnami/postgresql:17
docker.io/bitnami/redis:7.4
docker.io/bitnamilegacy/discourse:3.5.0
Changes
Service
Old Image
New Image
discourse-db
docker.io/bitnami/postgresql:17
postgres:16-alpine
discourse-redis
docker.io/bitnami/redis:7.4
redis:7-alpine
discourse-app
docker.io/bitnamilegacy/discourse:3.5.0
bitnamilegacy/discourse:3.3.0
discourse-sidekiq
docker.io/bitnamilegacy/discourse:3.5.0
bitnamilegacy/discourse:3.3.0
Tested
Verified working on a live Dokploy instance — all services start healthy, Discourse is accessible.
Greptile Summary
This PR replaces deprecated Bitnami Docker Hub images with working alternatives for the Discourse template. The Redis fix (using --requirepass command flag) correctly addresses a previously flagged issue. However, two previously-flagged P0/P1 issues remain unresolved:
postgres:16-alpine still uses Bitnami env var names (POSTGRESQL_USERNAME, POSTGRESQL_PASSWORD, POSTGRESQL_DATABASE) which are silently ignored by the official image; the database and user are never created, so Discourse will fail all DB connections at startup.
meta.json still shows version: \"3.5.0\" while docker-compose.yml now uses bitnamilegacy/discourse:3.3.0, violating the AGENTS.md requirement that the version field must match the Docker image version.
Confidence Score: 1/5
Not safe to merge — the postgres service will fail to initialise due to incompatible env var names, and the meta.json version is out of sync.
A pre-existing P0 (wrong env var names for postgres:16-alpine introduced by this PR's image swap) means Discourse is still broken on fresh deploy. The meta.json version mismatch is a P1 that will also cause CI validation to fail. Multiple unresolved critical issues keep the score at 1/5.
blueprints/discourse/docker-compose.yml (postgres env vars and volume path) and meta.json (version field out of sync with image tag)
Comments Outside Diff (3)
blueprints/discourse/docker-compose.yml, line 4-17 (link)
Incompatible Bitnami env vars with official postgres image
postgres:16-alpine is the official PostgreSQL image and does not recognise Bitnami-specific environment variable names. POSTGRESQL_USERNAME, POSTGRESQL_PASSWORD, and POSTGRESQL_DATABASE are silently ignored, so the bn_discourse user and bitnami_discourse database are never created. Discourse will then fail every connection attempt at startup.
The official image uses POSTGRES_USER, POSTGRES_PASSWORD, and POSTGRES_DB. The volume mount path is also wrong: official postgres stores data at /var/lib/postgresql/data, not /bitnami/postgresql.
Fix the env var names and the volume path:
discourse-db:image:postgres:16-alpinevolumes:- discourse-postgresql-data:/var/lib/postgresql/dataenvironment:POSTGRES_USER:bn_discoursePOSTGRES_DB:bitnami_discourse# POSTGRES_PASSWORD: keep as ${POSTGRES_PASSWORD}
blueprints/discourse/docker-compose.yml, line 44-59 (link)
DISCOURSE_USERNAME / DISCOURSE_EMAIL / DISCOURSE_PASSWORD never reach the container
template.toml defines and injects these three variables as global project env vars, but neither discourse-app nor discourse-sidekiq reference them inside their environment: block in docker-compose.yml. Docker Compose only forwards a variable to a container when it is explicitly listed under the service's environment: key. Without this, the bitnami Discourse image falls back to its built-in defaults and the configured admin credentials are silently discarded.
Add the missing references to both service environment: sections:
(and the equivalent for the admin credential variable)
blueprints/discourse/template.toml, line 1-22 (link)
meta.json version still reflects old image (3.5.0)
Per the project's AGENTS.md, the version field in meta.jsonmust match the Docker image version in docker-compose.yml. The image has been downgraded from 3.5.0 to 3.3.0, but meta.json still shows "version": "3.5.0". This mismatch will cause CI validation to fail and is a required convention for the template registry.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.
## 📋 Pull Request Information
**Original PR:** https://github.com/Dokploy/templates/pull/824
**Author:** [@khalidmemon1](https://github.com/khalidmemon1)
**Created:** 4/28/2026
**Status:** 🔄 Open
**Base:** `canary` ← **Head:** `canary`
---
### 📝 Commits (2)
- [`c5b68aa`](https://github.com/Dokploy/templates/commit/c5b68aa634b8c3eec43856630bd900eff4bd6994) fix(discourse): replace dead bitnami images with working alternatives
- [`c493b7e`](https://github.com/Dokploy/templates/commit/c493b7eee9f5bdef1a60bd8daf56f44f3f88a2e2) fix(discourse): fix Redis auth and volume path for official image
### 📊 Changes
**2 files changed** (+13 additions, -9 deletions)
<details>
<summary>View changed files</summary>
📝 `blueprints/discourse/docker-compose.yml` (+6 -8)
📝 `blueprints/discourse/template.toml` (+7 -1)
</details>
### 📄 Description
## Problem
Bitnami deprecated free versioned images on Docker Hub in August 2025.
The following images no longer exist and cause deployment failures:
- `docker.io/bitnami/postgresql:17`
- `docker.io/bitnami/redis:7.4`
- `docker.io/bitnamilegacy/discourse:3.5.0`
## Changes
| Service | Old Image | New Image |
|---|---|---|
| discourse-db | `docker.io/bitnami/postgresql:17` | `postgres:16-alpine` |
| discourse-redis | `docker.io/bitnami/redis:7.4` | `redis:7-alpine` |
| discourse-app | `docker.io/bitnamilegacy/discourse:3.5.0` | `bitnamilegacy/discourse:3.3.0` |
| discourse-sidekiq | `docker.io/bitnamilegacy/discourse:3.5.0` | `bitnamilegacy/discourse:3.3.0` |
## Tested
Verified working on a live Dokploy instance — all services start healthy, Discourse is accessible.
<!-- greptile_comment -->
<h3>Greptile Summary</h3>
This PR replaces deprecated Bitnami Docker Hub images with working alternatives for the Discourse template. The Redis fix (using `--requirepass` command flag) correctly addresses a previously flagged issue. However, two previously-flagged P0/P1 issues remain unresolved:
- **`postgres:16-alpine` still uses Bitnami env var names** (`POSTGRESQL_USERNAME`, `POSTGRESQL_PASSWORD`, `POSTGRESQL_DATABASE`) which are silently ignored by the official image; the database and user are never created, so Discourse will fail all DB connections at startup.
- **`meta.json` still shows `version: \"3.5.0\"`** while `docker-compose.yml` now uses `bitnamilegacy/discourse:3.3.0`, violating the AGENTS.md requirement that the version field must match the Docker image version.
<h3>Confidence Score: 1/5</h3>
Not safe to merge — the postgres service will fail to initialise due to incompatible env var names, and the meta.json version is out of sync.
A pre-existing P0 (wrong env var names for `postgres:16-alpine` introduced by this PR's image swap) means Discourse is still broken on fresh deploy. The meta.json version mismatch is a P1 that will also cause CI validation to fail. Multiple unresolved critical issues keep the score at 1/5.
`blueprints/discourse/docker-compose.yml` (postgres env vars and volume path) and `meta.json` (version field out of sync with image tag)
<!-- greptile_failed_comments -->
<details><summary><h3>Comments Outside Diff (3)</h3></summary>
1. `blueprints/discourse/docker-compose.yml`, line 4-17 ([link](https://github.com/dokploy/templates/blob/c5b68aa634b8c3eec43856630bd900eff4bd6994/blueprints/discourse/docker-compose.yml#L4-L17))
<a href="#"><img alt="P0" src="https://greptile-static-assets.s3.amazonaws.com/badges/p0.svg?v=7" align="top"></a> **Incompatible Bitnami env vars with official postgres image**
`postgres:16-alpine` is the official PostgreSQL image and does not recognise Bitnami-specific environment variable names. `POSTGRESQL_USERNAME`, `POSTGRESQL_PASSWORD`, and `POSTGRESQL_DATABASE` are silently ignored, so the `bn_discourse` user and `bitnami_discourse` database are never created. Discourse will then fail every connection attempt at startup.
The official image uses `POSTGRES_USER`, `POSTGRES_PASSWORD`, and `POSTGRES_DB`. The volume mount path is also wrong: official postgres stores data at `/var/lib/postgresql/data`, not `/bitnami/postgresql`.
Fix the env var names and the volume path:
```yaml
discourse-db:
image: postgres:16-alpine
volumes:
- discourse-postgresql-data:/var/lib/postgresql/data
environment:
POSTGRES_USER: bn_discourse
POSTGRES_DB: bitnami_discourse
# POSTGRES_PASSWORD: keep as ${POSTGRES_PASSWORD}
```
2. `blueprints/discourse/docker-compose.yml`, line 44-59 ([link](https://github.com/dokploy/templates/blob/c5b68aa634b8c3eec43856630bd900eff4bd6994/blueprints/discourse/docker-compose.yml#L44-L59))
<a href="#"><img alt="P1" src="https://greptile-static-assets.s3.amazonaws.com/badges/p1.svg?v=7" align="top"></a> **DISCOURSE_USERNAME / DISCOURSE_EMAIL / DISCOURSE_PASSWORD never reach the container**
`template.toml` defines and injects these three variables as global project env vars, but neither `discourse-app` nor `discourse-sidekiq` reference them inside their `environment:` block in docker-compose.yml. Docker Compose only forwards a variable to a container when it is explicitly listed under the service's `environment:` key. Without this, the bitnami Discourse image falls back to its built-in defaults and the configured admin credentials are silently discarded.
Add the missing references to both service `environment:` sections:
```
DISCOURSE_USERNAME: ${DISCOURSE_USERNAME}
DISCOURSE_EMAIL: ${DISCOURSE_EMAIL}
```
(and the equivalent for the admin credential variable)
3. `blueprints/discourse/template.toml`, line 1-22 ([link](https://github.com/dokploy/templates/blob/c5b68aa634b8c3eec43856630bd900eff4bd6994/blueprints/discourse/template.toml#L1-L22))
<a href="#"><img alt="P1" src="https://greptile-static-assets.s3.amazonaws.com/badges/p1.svg?v=7" align="top"></a> **meta.json version still reflects old image (3.5.0)**
Per the project's AGENTS.md, the `version` field in `meta.json` **must** match the Docker image version in `docker-compose.yml`. The image has been downgraded from `3.5.0` to `3.3.0`, but `meta.json` still shows `"version": "3.5.0"`. This mismatch will cause CI validation to fail and is a required convention for the template registry.
**Context Used:** AGENTS.md ([source](https://app.greptile.com/review/custom-context?memory=09330bde-2058-497c-9c64-ceae637fb5b2))
</details>
<!-- /greptile_failed_comments -->
<sub>Reviews (2): Last reviewed commit: ["fix(discourse): fix Redis auth and volum..."](https://github.com/dokploy/templates/commit/c493b7eee9f5bdef1a60bd8daf56f44f3f88a2e2) | [Re-trigger Greptile](https://app.greptile.com/api/retrigger?id=29983690)</sub>
**Context used:**
- Context used - AGENTS.md ([source](https://app.greptile.com/review/custom-context?memory=09330bde-2058-497c-9c64-ceae637fb5b2))
<!-- /greptile_comment -->
---
<sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
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.
📋 Pull Request Information
Original PR: https://github.com/Dokploy/templates/pull/824
Author: @khalidmemon1
Created: 4/28/2026
Status: 🔄 Open
Base:
canary← Head:canary📝 Commits (2)
c5b68aafix(discourse): replace dead bitnami images with working alternativesc493b7efix(discourse): fix Redis auth and volume path for official image📊 Changes
2 files changed (+13 additions, -9 deletions)
View changed files
📝
blueprints/discourse/docker-compose.yml(+6 -8)📝
blueprints/discourse/template.toml(+7 -1)📄 Description
Problem
Bitnami deprecated free versioned images on Docker Hub in August 2025.
The following images no longer exist and cause deployment failures:
docker.io/bitnami/postgresql:17docker.io/bitnami/redis:7.4docker.io/bitnamilegacy/discourse:3.5.0Changes
docker.io/bitnami/postgresql:17postgres:16-alpinedocker.io/bitnami/redis:7.4redis:7-alpinedocker.io/bitnamilegacy/discourse:3.5.0bitnamilegacy/discourse:3.3.0docker.io/bitnamilegacy/discourse:3.5.0bitnamilegacy/discourse:3.3.0Tested
Verified working on a live Dokploy instance — all services start healthy, Discourse is accessible.
Greptile Summary
This PR replaces deprecated Bitnami Docker Hub images with working alternatives for the Discourse template. The Redis fix (using
--requirepasscommand flag) correctly addresses a previously flagged issue. However, two previously-flagged P0/P1 issues remain unresolved:postgres:16-alpinestill uses Bitnami env var names (POSTGRESQL_USERNAME,POSTGRESQL_PASSWORD,POSTGRESQL_DATABASE) which are silently ignored by the official image; the database and user are never created, so Discourse will fail all DB connections at startup.meta.jsonstill showsversion: \"3.5.0\"whiledocker-compose.ymlnow usesbitnamilegacy/discourse:3.3.0, violating the AGENTS.md requirement that the version field must match the Docker image version.Confidence Score: 1/5
Not safe to merge — the postgres service will fail to initialise due to incompatible env var names, and the meta.json version is out of sync.
A pre-existing P0 (wrong env var names for
postgres:16-alpineintroduced by this PR's image swap) means Discourse is still broken on fresh deploy. The meta.json version mismatch is a P1 that will also cause CI validation to fail. Multiple unresolved critical issues keep the score at 1/5.blueprints/discourse/docker-compose.yml(postgres env vars and volume path) andmeta.json(version field out of sync with image tag)Comments Outside Diff (3)
blueprints/discourse/docker-compose.yml, line 4-17 (link)postgres:16-alpineis the official PostgreSQL image and does not recognise Bitnami-specific environment variable names.POSTGRESQL_USERNAME,POSTGRESQL_PASSWORD, andPOSTGRESQL_DATABASEare silently ignored, so thebn_discourseuser andbitnami_discoursedatabase are never created. Discourse will then fail every connection attempt at startup.The official image uses
POSTGRES_USER,POSTGRES_PASSWORD, andPOSTGRES_DB. The volume mount path is also wrong: official postgres stores data at/var/lib/postgresql/data, not/bitnami/postgresql.Fix the env var names and the volume path:
blueprints/discourse/docker-compose.yml, line 44-59 (link)template.tomldefines and injects these three variables as global project env vars, but neitherdiscourse-appnordiscourse-sidekiqreference them inside theirenvironment:block in docker-compose.yml. Docker Compose only forwards a variable to a container when it is explicitly listed under the service'senvironment:key. Without this, the bitnami Discourse image falls back to its built-in defaults and the configured admin credentials are silently discarded.Add the missing references to both service
environment:sections:(and the equivalent for the admin credential variable)
blueprints/discourse/template.toml, line 1-22 (link)Per the project's AGENTS.md, the
versionfield inmeta.jsonmust match the Docker image version indocker-compose.yml. The image has been downgraded from3.5.0to3.3.0, butmeta.jsonstill shows"version": "3.5.0". This mismatch will cause CI validation to fail and is a required convention for the template registry.Context Used: AGENTS.md (source)
Reviews (2): Last reviewed commit: "fix(discourse): fix Redis auth and volum..." | Re-trigger Greptile
Context used:
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.