# Is Docker image discourse/discourse considered safe and production-ready?

**URL:** https://meta.discourse.org/t/is-docker-image-discourse-discourse-considered-safe-and-production-ready/380646
**Category:** Self-hosting
**Tags:** hosting
**Created:** [August 28, 2025, 12:26am UTC](https://meta.discourse.org/t/is-docker-image-discourse-discourse-considered-safe-and-production-ready/380646 "2025-08-28T00:26:57Z")
**Posts on this page:** 11
**Page:** 2

<div class="post-metadata">

### Author: ![Yannovitch](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/yannovitch/32/549054_2.png) [@Yannovitch](https://meta.discourse.org/u/Yannovitch)
#### Post date: [March 31, 2026, 4:06pm UTC](https://meta.discourse.org/t/is-docker-image-discourse-discourse-considered-safe-and-production-ready/380646/23 "2026-03-31T16:06:48Z")

</div>

Hello !  
I registered just to say thanks a lot to all for your help, particularly @featheredtoast  
I almost got it to work, but the mail sending wasn’t working.  
I suppose it was because I have caddy as a reverse proxy.

So now I’m back to using discourse separately from all the other services on my docker compose setup.

Do you know how I could make it work with Caddy ? I suppose I have to make it use a socketed example, but I don’t know how to modify the app.yml inside the docker-compose discourse config.

All the best to you - Y

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [March 31, 2026, 8:24pm UTC](https://meta.discourse.org/t/is-docker-image-discourse-discourse-considered-safe-and-production-ready/380646/24 "2026-03-31T20:24:44Z")

</div>

> [@Yannovitch](#):
>
> I almost got it to work, but the mail sending wasn’t working.  
> I suppose it was because I have caddy as a reverse proxy.

Unless you’re somehow having Caddy proxy your outgoing email, I don’t think it’s related.

> [@Yannovitch](#):
>
> I suppose I have to make it use a socketed example, but I don’t know how to modify the app.yml inside the docker-compose discourse config.

You don’t have to make it socketed, you can just refer to the docker name and/or IP. [Discourse working with jwilder /nginx proxy & acme-companion - #7 by Steve\_Emerson](https://meta.discourse.org/t/discourse-working-with-jwilder-nginx-proxy-acme-companion/217059/7) talks about using the socketed template and a bunch of other stuff.

---

<div class="post-metadata">

### Author: ![featheredtoast](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/featheredtoast/32/116994_2.png) [@featheredtoast](https://meta.discourse.org/u/featheredtoast)
#### Post date: [March 31, 2026, 9:32pm UTC](https://meta.discourse.org/t/is-docker-image-discourse-discourse-considered-safe-and-production-ready/380646/25 "2026-03-31T21:32:32Z")

</div>

> [@sebhoss](#):
>
> Is it possible to install additional plugins into the discourse/discourse image

So, short answer, no, not through docker-compose on its own – it’s something I’d like to see, but the plan here is to allow anyone to create a customized base image that can be shared publicly to push the ball forward. Building a plugin involves cloning the plugin, bundle install, npm, and recompiling ember… This should not be done on boot.

So part of the idea here is to allow images to build just as discourse/discourse is – with the same app.yml as the supported Discourse versions are running.

As a sample, I’m building my personal image with [resenha](https://meta.discourse.org/t/resenha-add-discord-style-voice-rooms-to-your-community/389056) by updating the core app.yml to include the plugin [here](https://github.com/featheredtoast/discourse-docker-compose/blob/main/.github/workflows/push-web-only.yml#L92) and then pushing it up to an external (public!) docker registry.

> [@Yannovitch](#):
>
> mail sending wasn’t working

If you’re using an external mail service, I don’t think your caddy reverse proxy probably isn’t the problem. Unlike the current launcher builds, discourse/discourse will not nag you about setting up your email env vars (but it’s still necessary to do) – I’d check those first.

---

<div class="post-metadata">

### Author: ![DaanMeijer](https://avatars.discourse-cdn.com/v4/letter/d/df705f/32.png) [@DaanMeijer](https://meta.discourse.org/u/DaanMeijer)
#### Post date: [May 6, 2026, 10:21pm UTC](https://meta.discourse.org/t/is-docker-image-discourse-discourse-considered-safe-and-production-ready/380646/26 "2026-05-06T22:21:09Z")

</div>

I have managed to change the upload size limit:

`cat fix-upload-size.sh` (which needs to be `chmod +x`):

```bash
#!/bin/sh
sed -i 's/client_max_body_size .*;/client_max_body_size 500m;/' /etc/nginx/conf.d/discourse.conf

```

in docker-compose.yml:

```yaml
    volumes:
     - ./fix-upload-size.sh:/etc/runit/1.d/fix-upload-size

```

---

<div class="post-metadata">

### Author: ![sebhoss](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sebhoss/32/548936_2.png) [@sebhoss](https://meta.discourse.org/u/sebhoss)
#### Post date: [May 7, 2026, 9:04am UTC](https://meta.discourse.org/t/is-docker-image-discourse-discourse-considered-safe-and-production-ready/380646/27 "2026-05-07T09:04:17Z")

</div>

I’ve been able to build an image but “only” using the ESR version. When I use something newer than that, the build process does require a database and a redis instance. Is that intentional?

---

<div class="post-metadata">

### Author: ![threemozis](https://avatars.discourse-cdn.com/v4/letter/t/94ad74/32.png) [@threemozis](https://meta.discourse.org/u/threemozis)
#### Post date: [May 17, 2026, 11:34pm UTC](https://meta.discourse.org/t/is-docker-image-discourse-discourse-considered-safe-and-production-ready/380646/28 "2026-05-17T23:34:15Z")

</div>

Is there any way to upgrade Discourse to the latest version when using this image?

I’m using it for my faculty’s research group forum and would like to update to the latest Discourse release, but the image hasn’t been updated since March. What would be the recommended way to upgrade?

---

<div class="post-metadata">

### Author: ![featheredtoast](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/featheredtoast/32/116994_2.png) [@featheredtoast](https://meta.discourse.org/u/featheredtoast)
#### Post date: [May 18, 2026, 8:09pm UTC](https://meta.discourse.org/t/is-docker-image-discourse-discourse-considered-safe-and-production-ready/380646/29 "2026-05-18T20:09:55Z")

</div>

That was an unintentional side effect of adding a call to clearing stuck web upgrades; I’m looking to resolve this soon via [FIX: run clear\_stuck\_web\_upgrades during precompile stage by featheredtoast · Pull Request #1055 · discourse/discourse\_docker · GitHub](https://github.com/discourse/discourse_docker/pull/1055)

---

<div class="post-metadata">

### Author: ![threemozis](https://avatars.discourse-cdn.com/v4/letter/t/94ad74/32.png) [@threemozis](https://meta.discourse.org/u/threemozis)
#### Post date: [May 19, 2026, 3:08am UTC](https://meta.discourse.org/t/is-docker-image-discourse-discourse-considered-safe-and-production-ready/380646/30 "2026-05-19T03:08:03Z")

</div>

Awesome, thank you!

But I have another question, I’m using Azure for students and I am using Container Apps. If I somehow upgrade inside the app, I’m afraid that if the instance Discourse is running fails for some reason, it may render our forum in disarray, because when it restart it will probably be in a previous version.

Once again Thank You!

---

<div class="post-metadata">

### Author: ![featheredtoast](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/featheredtoast/32/116994_2.png) [@featheredtoast](https://meta.discourse.org/u/featheredtoast)
#### Post date: [May 19, 2026, 6:38pm UTC](https://meta.discourse.org/t/is-docker-image-discourse-discourse-considered-safe-and-production-ready/380646/31 "2026-05-19T18:38:17Z")

</div>

That is a risk - there’s unfortunately no good way around that other than making sure the image is up to date if you’re upgrading both in the app _and_ updating by pulling images from the docker repo. I really wouldn’t recommend doing so.

Meantime, I’m still getting the docker repo sorted (there’s another issue to tackle here).

---

<div class="post-metadata">

### Author: ![featheredtoast](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/featheredtoast/32/116994_2.png) [@featheredtoast](https://meta.discourse.org/u/featheredtoast)
#### Post date: [May 21, 2026, 5:59am UTC](https://meta.discourse.org/t/is-docker-image-discourse-discourse-considered-safe-and-production-ready/380646/32 "2026-05-21T05:59:32Z")

</div>

OK, tomorrow’s build should be restored [with this patch](https://github.com/discourse/discourse/pull/40145) so you’ll be able to upgrade by pulling the latest image as expected - thanks for reporting 🙂

–and we’re back! Latest image is now available.

---

<div class="post-metadata">

### Author: ![threemozis](https://avatars.discourse-cdn.com/v4/letter/t/94ad74/32.png) [@threemozis](https://meta.discourse.org/u/threemozis)
#### Post date: [May 26, 2026, 12:38pm UTC](https://meta.discourse.org/t/is-docker-image-discourse-discourse-considered-safe-and-production-ready/380646/33 "2026-05-26T12:38:55Z")

</div>

Thank you so much! I have upgraded our forum

That was awesome!

[Previous page](https://meta.discourse.org/t/is-docker-image-discourse-discourse-considered-safe-and-production-ready/380646.md?page=1)
