I’m responsible for a Docker based Discourse installation running on Ubuntu that I inherited as part of an open source project. For years I upgraded it via git pull && ./launcher rebuild app and then through the Admin UI at /admin/update. However, I stopped upgrading so casually after a painful experience during a breaking upgrade due to docker_manager in January 2024 (see the comments on the commit here, and the reverted commit here).
It’s now been 2.5 years and I need to get back into a rhythm of upgrading, but I’m still a tad nervous from the last broken upgrade. What I’d like help understanding is what should I know before attempting to upgrade from v3.4.0 to v2026.7.2. Our site doesn’t use any extra plugins, and the only special configuration I am aware of is that we use a Discourse Connect URL to have SSO with our main community site.
Is it as simple as?
cd /var/discourse
git pull
./launcher rebuild app
And then updating via the Admin UI? Are there any intermediary steps I need to be aware of when going from v3.4.0 to v2026.7.2?
Or … (given you are nervous) … take a backup (in any case) and set up a whole new server and restore the backup, then repoint the domain to the new server once done.
The one big thing you will come across is there is a major Postgres Upgrade (to 18). If you build a new server you won’t have to deal with that upgrade process.
There is also a small risk that plugins or theme components you rely upon have not been maintained, especially if they are written by less active 3rd parties.
Nervousness is why experienced Discourse SA’s use a two container setup so you can bootstrap updates before committing them (though that won’t help as much when you have a big Postgres update, but they happen seldom)
I attempted the migration today and once again immediately ran into a breaking change in the main branch of discourse_docker:
This commit fails the builds and breaks installation/setup, but was merged into the main branch anyway. This is exactly what I was nervous about.
Running ./launcher bootstrap app results in:
rake aborted!
Don't know how to build task 'assets:precompile:pretty_text' (See the list of available tasks with `rake --tasks`)
Did you mean? assets:precompile
How is it that breaking changes like this are being merged into the main branch that is given as part of the official installation instructions? Are the build failures ignored? The same error I’m seeing is right there in the failure log:
I was able to checkout a previous commit that allowed me to continue with the migration steps, but I’m now 2 for 2 on upgrades being broken by untested commits being merged into main.
Thanks again for suggesting this option rather than an upgrade in place. This worked out much better and allowed me to start with a fresh copy of a new OS.