M’he entretingut a muntar aquest web sota Docker, tot i que funcionava prou bé com el tenia (per tant, contra la regla general de “si funciona, no ho toquis”).
Tot ha vingut per canviar de servidor: no estic còmode amb la nova política de la distribució CentOS, que ha passat a ser un “pre-Red Hat”, amb moltes actualitzacions. Com a sistema operatiu he agafat AlmaLinux.
I posats a canviar, miro això de Docker. A més d’aprendre tots els conceptes i tècniques que no sabia, els principals problemes que he trobat són:
Canvi a PHP 8: WordPress està adaptat a php 8, però una aplicació particular no. He hagut de canviar unes classes, que tenien el constructor amb el nom de la classe en comptes del mètode __construct().
Una redirecció infinita de WordPress que m’ha portat de corcoll. L’he superat afegint
remove_action('template_redirect', 'redirect_canonical');
al fitxer functions.php del tema. Encara no acabo d’entendre per què passa.
Mapeig dels usuaris interns dels contenidors Docker a usuaris del sistema base. Hi ha diversos llocs amb documentació sobre el tema (Isolate containers with a user space, User namespace remapping: an advanced feature to protect your Docker environments!, Sécuriser Docker au travers de la fonctionnalité userns-remap), però no m’acaben de solucionar el problema: WordPress ha d’estar en un directori compartit entre el motor de PHP i el servidor web (per tant ha d’estar al servidor “host”), i alhora el motor de PHP hi ha de poder escriure, perquè WordPress es pot autoactualitzar. En activar el mapeig d’usuaris el contenidor de MySQL no acaba d’arrencar. He adoptat una solució que funciona però no sembla massa ortodoxa. Em queda terreny per proves!
Per les aplicacions PHP i Python he fet servir sengles Dockers amb Nginx Unit.
Com sempre que faig aquestes coses em queda una mica d’entretenimient pels propers dies, però el gruix del sistema ja funciona.
Com a avantatge del sistema: és prou fàcil provar petits canvis i tornar enrere si cal. D’altra banda les configuracions estan ben preparades amb els fitxers de build i compose, de manera que els canvis de versió de programes (Nginx, Unit, MySQL) han de ser bastant fàcils.
16/10/2021: Sense el “remove_action” per la redirecció infinita el wordpress segueix fallant. El deixo, és clar.