Docker Compose
Mettre à niveau une installation faite avec le projet docker-compose
- Avant la mise à niveau
- De la 7.2 à la 7.3
- 1. Récupérer les nouvelles images
- 2. Recréer les conteneurs
- 3. Vérifier la mise à niveau
- Revenir en arrière
Le projet docker-compose fait tourner trois conteneurs : MySQL (mysqldb), AnsibleForms (app) et le RTE qui exécute les playbooks (rte). AnsibleForms et le RTE utilisent le tag d’image 7, qui pointe toujours vers la version 7.x la plus récente. Une mise à niveau récupère à nouveau les images et recrée les conteneurs dont l’image a changé. Tout ce qui doit persister est stocké dans le dossier data et est conservé.
Avant la mise à niveau
Préparez la mise à niveau pour pouvoir revenir en arrière si quelque chose se passe mal :
- Faites une sauvegarde sous Paramètres → Sauvegardes. La nouvelle version met à niveau le schéma de la base de données à son premier démarrage.
- Lisez le changelog des versions entre la vôtre et la nouvelle.
- Vous passez à une nouvelle version majeure ? Suivez d’abord Passer à la v7.
- Vous venez de la 6.5 ? Le projet 6.x, sur sa branche
v6, n’a pas de conteneurrte. Mettez votre copie du projet à jour sur sa branchemain, en gardant vos paramètres.envet votre dossierdata, pour quedocker-compose.ymlcontienne le servicerte. Ce fichier compose définitCONFIG_SEED_PATH, et un dossierdatade la 6.x n’a pas deseed.yaml: copiezdata/seed.yamldepuis le dépôt, et ajoutezRTE_TOKEN(au moins 16 caractères) à votre.env, comme dans le.envdu dépôt. Sans eux, l’application refuse de démarrer. Les images 7 tournent sous l’uid 1000 au lieu de root : donnez une fois le dossierdataà cet utilisateur, en laissant les fichiers MySQL à MySQL, avecsudo find data -path data/mysql -prune -o -exec chown 1000:1000 {} +. Le dossierdata/sshest désormais monté sur/home/node/.sshau lieu de/root/.ssh. - Vous venez de la 7.2 ? Mettez à jour
docker-compose.ymletdata/seed.yamlensemble : voir d’abord De la 7.2 à la 7.3.
De la 7.2 à la 7.3
Jusqu’à la 7.2.0, le service rte recevait les paramètres de la base de données et son runner, déclaré dans data/seed.yaml, tournait en mode base de données, obsolète en 7.3.0 et supprimé en 8.0.0. Depuis la 7.3.0, l’application appelle le RTE sur http://rte:8000 et garde un WebSocket ouvert (RTE_MODE=inbound, voir Modes), et le RTE ne détient aucun paramètre de base de données. Prenez les deux fichiers sur la branche main du dépôt, en gardant votre .env :
| Fichier | Ce qui change |
|---|---|
docker-compose.yml | Le service rte ne lit plus .env : il reçoit RTE_MODE=inbound, RTE_TOKEN et RTE_FILES=local, et aucun DB_* |
data/seed.yaml | Un identifiant RTE rte, avec url: http://rte:8000 et password: ${RTE_TOKEN}, et le runner rte avec rte_mode: inbound et credential: rte |
Changez les deux. Avec seulement le nouveau fichier compose, le seed garde le runner rte en mode base de données : l’application appelle le RTE comme un RTE 7.2, ce à quoi le nouveau RTE ne répond pas, et aucun playbook ne s’exécute. Un seed que vous avez modifié vous-même a besoin du même identifiant et du même rte_mode.
Un runner que le seed a créé reste géré, en lecture seule sous Connexions → Runners, même après la suppression de CONFIG_SEED_PATH : seul un seed appliqué libère un runner qu’il ne déclare plus. Gardez donc le seed et définissez-y rte_mode, plutôt que de supprimer CONFIG_SEED_PATH pour modifier le runner à la main.
L’installateur le fait tout seul : sa mise à niveau remplace docker-compose.yml, et data/seed.yaml quand c’est celui livré par le dépôt, non modifié. Un seed modifié à la main est conservé, et le nouveau est enregistré à côté.
1. Récupérer les nouvelles images
Téléchargez les images les plus récentes des tags de docker-compose.yml :
cd /srv/apps/ansibleforms-docker
sudo docker compose pull
cd /srv/apps/ansibleforms-docker
sudo podman-compose pull
2. Recréer les conteneurs
Redémarrez le projet ; les conteneurs dont l’image a changé sont recréés :
sudo docker compose up -d
sudo podman-compose down
sudo podman-compose up -d
3. Vérifier la mise à niveau
Suivez le journal d’AnsibleForms pendant son démarrage. Le premier démarrage d’une nouvelle version met à niveau le schéma de la base de données, et le RTE démarre dès qu’AnsibleForms est en bonne santé :
sudo docker compose logs -f app
sudo podman-compose logs -f app
Dans AnsibleForms, Aide → À propos affiche la version en cours d’exécution, et Paramètres → Statut affiche l’état de santé de la base de données, du schéma et des autres systèmes dont AnsibleForms dépend.
Revenir en arrière
Pour revenir à la version que vous utilisiez avant, celle qu’affichait Aide → À propos avant la mise à niveau, fixez son tag exact dans docker-compose.yml pour l’image AnsibleForms comme pour l’image RTE, à la place de 7, et relancez l’étape 2. Si cette version ne démarre pas sur la base de données mise à niveau, restaurez la sauvegarde faite sous Paramètres → Sauvegardes. Remettez les tags à 7 pour recevoir à nouveau les mises à jour.