taigaio / taiga-docker

Mozilla Public License 2.0
1.12k stars 290 forks source link

[FR] Rethink container images used in `docker-compose.yml` #122

Open jtru opened 9 months ago

jtru commented 9 months ago

Please describe the problem / need you are trying to solve. The repo's docker-compose.yml makes very specific (and at this time, very outdated) choices in terms of which container image versions to deploy in a "production" taiga installation.

For instance, nginx is pinned to the 1.19 image, while the current nginx "stable" (this is the conservative choice with little feature development and basically only security updates) release is at 1.24. The version in with taiga's socker-compose stack use was a "feature" branch/release back in the day, first announced on 2020-05-26. It hasn't had proper security support for many, many moons.

PostgreSQL is pinned to 12.3, which was released by the Postgres development community on 2020-05-14. The very latest PostgreSQL release from major version 12 is 12.17.

I've used both projects extensively for more than a decade by now, and know that their track record concerning backwards compatibility is solid enough to not make this practice required or even recommendable - you miss out on a lot of (potentially) critical bug fixes by not depending on a more flexible, recent image tag.

Describe the feature or the improvement you'd like and what are you trying to achieve.

Implementing the first two changes will make taiga deployments more featureful, less prone to bugs, and more secure by any measure.

It might be a good idea to check the content of taiga-specific images for up-to-date dependencies, too.

jtru commented 9 months ago

FWIW, I tried creating a new installation today with the following images used in docker-compose.yml, and observed no problems during (superficial) testing:

Please not that taiga-db cannot switch between a -bookworm and any other (such as -bullseye) image without its database being reindexed due to Postgres' reliance on libc-provided locale data/collation ordering. So for existing taiga installations, this would have to at least be clearly documented, if it cannot be feasibly resolved automatically.

taiga-gateway, however, could be painlessly and effortlessly switched to the new(er) image right away, no matter if it's a greenfield or existing deployment.

I also noticed that the container image used for providing rabbitmq-related services logs the following early during init:

WARNING: '/var/lib/rabbitmq/.erlang.cookie' was populated from '$RABBITMQ_ERLANG_COOKIE', which will no longer happen in 3.9 and later! (https://github.com/docker-library/rabbitmq/pull/424) WARNING: 'docker-entrypoint.sh' generated/modified the RabbitMQ configuration file, which will no longer happen in 3.9 and later! (https://github.com/docker-library/rabbitmq/pull/424)

... which suggests some more work would have to be done there to get a newer image release going for taiga-async-rabbitmq.