Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
technique:docker:picasoft:update [2020/10/13 10:16] – qduchemi | technique:docker:picasoft:update [2022/05/24 20:15] (Version actuelle) – ppom |
---|
{{indexmenu_n>35}} | {{indexmenu_n>35}} |
# Mettre à jour un service ou sa configuration | # Mettre à jour un service ou sa configuration |
| |
| <bootnote warning> |
| Prérequis : les articles de [[technique:docker:general:start|cette section]]. |
| </bootnote> |
| |
<bootnote>Ces explications ne valent que pour un service qui est déjà en production et que l'on souhaite mettre à jour.</bootnote> | <bootnote>Ces explications ne valent que pour un service qui est déjà en production et que l'on souhaite mettre à jour.</bootnote> |
| |
Tous les fichiers permettant de paramétrer les conteneurs Docker et les services sont versionnés sur le dépôt [dockerfiles](https://gitlab.utc.fr/picasoft/dockerfiles) (voir [[technique:docker:picasoft:dockerfiles|gestion des services]]). | Tous les fichiers permettant de paramétrer les conteneurs Docker d'un service sont versionnés sur son dépôt, [ici(https://gitlab.utc.fr/picasoft/projets/services) (voir [[technique:docker:picasoft:dockerfiles|gestion des services]]). |
| |
On peut vouloir mettre à jour : | On peut vouloir mettre à jour : |
On appelle **configuration** tout ce qui ne nécessite pas de reconstruire l'image Docker, par exemple : | On appelle **configuration** tout ce qui ne nécessite pas de reconstruire l'image Docker, par exemple : |
| |
* Modification du `docker-compose.yml` (environnement, point de montage, changement du tag d'une image officielle...). Par exemple, Wekan est mis à jour uniquement en changeant le [numéro de version dans le fichier Compose](https://gitlab.utc.fr/picasoft/projets/dockerfiles/-/blob/master/pica-wekan/docker-compose.yml), car il utilise une image déjà construite. | * Modification du `docker-compose.yml` (environnement, point de montage, changement du tag d'une image officielle...). Par exemple, Wekan est mis à jour uniquement en changeant le [numéro de version dans le fichier Compose](https://gitlab.utc.fr/picasoft/projets/services/wekan/-/blob/master/docker-compose.yml), car il utilise une image déjà construite. |
* Modification d'un fichier de configuration monté dans le conteneur. Par exemple, Etherpad utilise un fichier [settings.json](https://gitlab.utc.fr/picasoft/projets/dockerfiles/-/blob/master/pica-etherpad/settings.json) qui est monté dans l'image à chaque démarrage. | * Modification d'un fichier de configuration monté dans le conteneur. Par exemple, Etherpad utilise un fichier [settings.json](https://gitlab.utc.fr/picasoft/projets/services/etherpad-yearly/-/blob/master/settings.json) qui est monté dans l'image à chaque démarrage. |
* etc. | * etc. |
| |
Certaines modifications nécessitent de reconstruire l'image, par exemple : | Certaines modifications nécessitent de reconstruire l'image, par exemple : |
| |
* Changement d'un numéro de version dans une archive téléchargée dans le `Dockerfile`. Par exemple, Mattermost indique le numéro de version de la *release* à téléchargement [directement dans le Dockerfile](https://gitlab.utc.fr/picasoft/projets/dockerfiles/-/blob/master/pica-mattermost/Dockerfile). | * Changement d'un numéro de version dans une archive téléchargée dans le `Dockerfile`. Par exemple, Mattermost indique le numéro de version de la *release* à téléchargement [directement dans le Dockerfile](https://gitlab.utc.fr/picasoft/projets/services/mattermost/-/blob/master/Dockerfile). |
* Ajout d'un paquet. Par exemple, on pourrait avoir besoin de rajouter un module PHP pour une nouvelle extension [directement dans le Dockerfile](https://gitlab.utc.fr/picasoft/projets/dockerfiles/-/blob/master/pica-dokuwiki/Dockerfile). | * Ajout d'un paquet. Par exemple, on pourrait avoir besoin de rajouter un module PHP pour une nouvelle extension [directement dans le Dockerfile](https://gitlab.utc.fr/picasoft/projets/services/dokuwiki/-/blob/master/Dockerfile). |
* Changement d'un script d'initialisation copié dans le Dockerfile. Par exemple, le [script d'initialisation de Plume](https://gitlab.utc.fr/picasoft/projets/dockerfiles/-/blob/master/pica-plume/entrypoint.sh) effectue diverses opérations que l'on pourrait vouloir compléter, et ce script est copié [directement dans le Dockerfile](https://gitlab.utc.fr/picasoft/projets/dockerfiles/-/blob/master/pica-plume/Dockerfile). | * Changement d'un script d'initialisation copié dans le Dockerfile. Par exemple, le [script d'initialisation de Plume](hhttps://gitlab.utc.fr/picasoft/projets/services/plume/-/blob/master/entrypoint.sh) effectue diverses opérations que l'on pourrait vouloir compléter, et ce script est copié [directement dans le Dockerfile](https://gitlab.utc.fr/picasoft/projets/services/plume/-/blob/master/Dockerfile). |
* etc. | * etc. |
| |
<bootnote warning>Si le code du service à copier dans l'image est intégré au dépôt par un submodule (par exemple avec [pica-metrics-bot](https://gitlab.utc.fr/picasoft/projets/dockerfiles/-/tree/master/pica-metrics-bot)), on lancera la commande suivante pour le mettre à jour à la version voulue. Voir la [documentation des submodules](https://git-scm.com/book/en/v2/Git-Tools-Submodules) pour utiliser une branche spécifique. | |
``` | |
git submodule foreach --recursive 'git fetch --tags' <dossier du service> | |
git submodule update --recursive --remote <dossier du service> | |
cd <submodule> | |
git checkout <commit ou tag à utiliser> | |
``` | |
</bootnote> | |
| |
Vous pouvez travailler en local et tester l'image sur votre machine si vous voulez. Il y a quelques modifications supplémentaires à apporter. Comme on construit une nouvelle version de l'image, il faut modifier le tag dans le fichier Compose pour que l'image construite soit différenciée des précédentes. | Vous pouvez travailler en local et tester l'image sur votre machine si vous voulez. Il y a quelques modifications supplémentaires à apporter. Comme on construit une nouvelle version de l'image, il faut modifier le tag dans le fichier Compose pour que l'image construite soit différenciée des précédentes. |
| |
Dans tous les cas, on modifiera ou on créera le fichier `CHANGELOG.md` pour décrire les modifications apportées à l'image. | Dans tous les cas, on modifiera ou on créera le fichier `CHANGELOG.md` pour décrire les modifications apportées à l'image. |
| ## Que faire ensuite ? |
## Conclusion | |
| |
Une fois arrivé à ce stade, votre nouvelle version du service est prête à être déployée depuis n'importe quelle machine de Picasoft. La prochaine étape est [[technique:docker:picasoft:test|de tester la modification]] que vous avez apportée, sauf si elle est vraiment minime (exemple : changement marginal d'un paramètre de configuration). | Une fois arrivé à ce stade, votre nouvelle version du service est prête à être déployée depuis n'importe quelle machine de Picasoft. La prochaine étape est [[technique:docker:picasoft:test|de tester la modification]] que vous avez apportée, sauf si elle est vraiment minime (exemple : changement marginal d'un paramètre de configuration). |