Prasanth Nair writes:
I am currently running a Mailman 3 setup on a standalone server and planning to migrate it to a Docker-based deployment using the official Docker Mailman images. I would appreciate your guidance on the recommended approach for this migration.
docker-mailman is basically a hobby of the maintainer's. It's not even maintained in the GitLab project. As far as I know it's there because it's frequently requested and folks who run docker usually know what they're doing so it doesn't impose a particular burden on us. But really the only expert on docker-mailman is Abhilash himself.
All three of the major Mailman suite applications (core, Postorius, and HyperKitty) use object-relation managers with automated schema updates. So contrary to Odhiambo's advice, I would try to replicate the versions of the Mailman components and PostgreSQL, then do upgrades in-place in Docker. Doing a database dump (in the current host) and restore (in the containerized PostgreSQL) is safe if you have the same schema on both hosts. (Upgrading the PostgreSQL version is much less risky but why tempt the software gremlins?)
An alternative if you know PostgreSQL well would be to setup a "failover and failback" system, where you start with your current PostgreSQL as the primary and the container's as a replica, then when you're ready to go live you swap primary and replica for the database and point the DNS to the containerized Mailman. This probably involves less downtime (although in my experience PostgreSQL dump and restore is quite fast, and the Mailman databases for core and Postorius are small), but the big advantage is if you have a problem with the containers you can switch back right away. I know this works because I worked on a project where high availability was required, but another guy did the PostgreSQL work so I can't provide details.
Networking is a FAQ for mailman-docker. I've only run it out of the box with all its defaults, and that worked fine. But somehow people have problems with it. My guess is that they're trying to fit the Mailman containers into some predetermined scheme, either a Docker host that hosts other containers and there are IP conflicts, or some organizational constraints. If you know what you're doing, no problem I think, but if you're newish to containers, you might want to set up docker on a host dedicated to Mailman.
Other than that, I think Abhilash provided a preferred channel for discussing docker-mailman in the docs in his repo, that would be where to get your best (and more detailed) information.
-- GNU Mailman consultant (installation, migration, customization) Sirius Open Source https://www.siriusopensource.com/ Software systems consulting in Europe, North America, and Japan