Docker Compose
Upgrade een installatie die met het docker-compose-project is gemaakt
- Voordat je upgradet
- Van 7.2 naar 7.3
- 1. Haal de nieuwe images op
- 2. Maak de containers opnieuw aan
- 3. Controleer de upgrade
- Terugdraaien
Het docker-compose-project draait drie containers: MySQL (mysqldb), AnsibleForms (app) en de RTE die de playbooks uitvoert (rte). AnsibleForms en de RTE gebruiken de image-tag 7, die altijd naar de nieuwste 7.x-release wijst. Een upgrade haalt de images opnieuw op en maakt de containers waarvan de image is veranderd opnieuw aan. Alles wat bewaard moet blijven, staat in de map data en blijft behouden.
Voordat je upgradet
Bereid de upgrade zo voor dat je terug kunt als er iets misgaat:
- Maak een back-up onder Instellingen → Back-ups. De nieuwe release upgradet het databaseschema bij de eerste start.
- Lees de changelog voor de releases tussen je versie en de nieuwe.
- Ga je naar een nieuwe hoofdversie? Volg eerst Upgraden naar v7.
- Kom je van 6.5? Het 6.x-project, op de branch
v6, heeft geen containerrte. Werk je kopie van het project bij naar de branchmain, en behoud daarbij je.env-instellingen en je mapdata, zodatdocker-compose.ymlde servicerteheeft. Dat compose-bestand zetCONFIG_SEED_PATH, en een 6.x-mapdataheeft geenseed.yaml: kopieerdata/seed.yamluit de repository, en voegRTE_TOKEN(minstens 16 tekens) toe aan je.env, zoals de.envvan de repository het heeft. Zonder die twee weigert de app te starten. De images van 7 draaien als uid 1000 in plaats van root: maak die gebruiker één keer eigenaar van de mapdata, en laat de MySQL- bestanden aan MySQL, metsudo find data -path data/mysql -prune -o -exec chown 1000:1000 {} +. De mapdata/sshwordt nu gekoppeld op/home/node/.sshin plaats van/root/.ssh. - Kom je van 7.2? Werk
docker-compose.ymlendata/seed.yamlsamen bij: zie eerst Van 7.2 naar 7.3.
Van 7.2 naar 7.3
Tot en met 7.2.0 kreeg de service rte de instellingen van de database, en zijn runner, gedeclareerd in data/seed.yaml, draaide in databasemodus, verouderd in 7.3.0 en verwijderd in 8.0.0. Sinds 7.3.0 belt de app de RTE aan op http://rte:8000 en houdt één WebSocket open (RTE_MODE=inbound, zie Modi), en bevat de RTE geen database-instellingen. Neem beide bestanden uit de branch main van de repository, en behoud je .env:
| Bestand | Wat er verandert |
|---|---|
docker-compose.yml | De service rte leest .env niet meer: hij krijgt RTE_MODE=inbound, RTE_TOKEN en RTE_FILES=local, en geen DB_* |
data/seed.yaml | Een RTE-referentie rte, met url: http://rte:8000 en password: ${RTE_TOKEN}, en de runner rte met rte_mode: inbound en credential: rte |
Wijzig beide. Met alleen het nieuwe compose-bestand houdt de seed de runner rte in databasemodus: de app roept de RTE aan als een 7.2-RTE, waarop de nieuwe RTE niet antwoordt, en er draait geen enkel playbook. Een seed die je zelf hebt gewijzigd, heeft dezelfde referentie en rte_mode nodig.
Een runner die de seed heeft gemaakt, blijft beheerd en alleen-lezen onder Verbindingen → Runners, ook nadat je CONFIG_SEED_PATH verwijdert: alleen een seed die wordt toegepast, geeft een runner vrij die hij niet meer declareert. Houd de seed dus en zet rte_mode daar, in plaats van CONFIG_SEED_PATH te verwijderen om de runner met de hand te wijzigen.
Het installatieprogramma doet dit zelf: de upgrade vervangt docker-compose.yml, en data/seed.yaml als dat een seed is die de repository meeleverde, ongewijzigd. Een met de hand gewijzigde seed blijft staan, en de nieuwe wordt ernaast opgeslagen.
1. Haal de nieuwe images op
Download de nieuwste images van de tags in docker-compose.yml:
cd /srv/apps/ansibleforms-docker
sudo docker compose pull
cd /srv/apps/ansibleforms-docker
sudo podman-compose pull
2. Maak de containers opnieuw aan
Start het project opnieuw; de containers waarvan de image is veranderd, worden opnieuw aangemaakt:
sudo docker compose up -d
sudo podman-compose down
sudo podman-compose up -d
3. Controleer de upgrade
Volg het log van AnsibleForms terwijl het start. De eerste start van een nieuwe release upgradet het databaseschema, en de RTE start zodra AnsibleForms gezond is:
sudo docker compose logs -f app
sudo podman-compose logs -f app
In AnsibleForms toont Help → Over de versie die draait, en Instellingen → Status de gezondheid van de database, het schema en de andere systemen waarvan AnsibleForms afhankelijk is.
Terugdraaien
Om terug te gaan naar de release die je eerder draaide, de versie die Help → Over vóór de upgrade toonde, pin je de exacte tag daarvan in docker-compose.yml, op zowel de image van AnsibleForms als die van de RTE, in plaats van 7, en voer je stap 2 opnieuw uit. Als die release niet start op de geüpgradede database, herstel je de back-up die je onder Instellingen → Back-ups hebt gemaakt. Zet de tags terug op 7 om weer updates te ontvangen.
VIDEO: AnsibleForms upgraden