Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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/07 19:32] qduchemitechnique:docker:picasoft:update [2022/05/24 20:15] (Version actuelle) ppom
Ligne 1: Ligne 1:
 {{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 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 :
-* Le service (*e.g.* changer un numéro de version dans le Dockerfile), + 
-* La configuration (éditer un fichier quelconque),+* Le service (*e.g.* passer d'une version X à une version Y), 
 +* La configuration du service (*e.g.* changer un paramètre dans un fichier `config.json`),
 * La configuration des volumes (*e.g.* changer le point de montage du Docker Compose), * La configuration des volumes (*e.g.* changer le point de montage du Docker Compose),
 * etc. * etc.
  
-Dans tous les cas, les modifications apportées à n'importe quel fichier de ce dépôt **doivent être poussées sur ce dépôt**.+<bootnote warning>Toute modification apportées à n'importe quel fichier versionné **doit être poussée sur le dépôt**.</bootnote> 
 Vous pouvez effectuer les modifications sur votre machine ou sur une machine de Picasoft, du moment qu'elles sont synchronisées avec le dépôt. Vous pouvez effectuer les modifications sur votre machine ou sur une machine de Picasoft, du moment qu'elles sont synchronisées avec le dépôt.
  
 ## Comment mettre à jour un service ? ## Comment mettre à jour un service ?
  
-Il est pertinent de créer une branche avant chaque mise à jour où vous n'êtes pas sûr des modifications, et ne de fusionner dans `master` que lorsque les tests ont été effectués.+Il pourrait être pertinent de créer une branche avant chaque mise à jour où vous n'êtes pas sûr des modifications, et ne de fusionner dans `master` que lorsque les tests ont été effectués. 
 + 
 +<bootnote critical> 
 +Les instructions spécifiques  de mise à jour de chaque service se trouvent dans le README de chaque dossier. Pensez à y jeter un coup d'oeil. 
 +</bootnote>
  
 ### Mise à jour de la configuration ### Mise à jour de la configuration
  
-On appelle configuration tout ce qui ne nécessite pas de reconstruire une image : +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, tag d'une image officielle...) + 
-* Modification d'un fichier de configuration +* 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'une page web d'accueil+* 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.
  
-Il suffit de mettre à jour les fichiers souhaitées, éventuellement de signaler les changements à l'équipe ou en commentaire, puis de synchroniser avec le dépôt.+Il suffit de mettre à jour les fichiers souhaités, éventuellement de signaler les changements à l'équipe ou en commentaire, puis de pousser les modifications sur le dépôt.
  
-Si vous mettez à jour le tag d'une image officielle (*e.g* `postgres:10` → `postgres:12`), lisez au préalable la documentation de mise à jour ! Certaines nécessitent des interventions manuelles, et le README du service le précise en général.+Si vous mettez à jour le tag d'une image officielle (*e.g* `postgres:10` → `postgres:12`), lisez au préalable la documentation de mise à jour ! Certaines nécessitent des interventions manuelles, et le `READMEdu service le précise en général.
  
 Toute image indiquée dans le fichier Compose **doit avoir un tag** (*e.g* `postgres:12` et pas `postgres`). N'utilisez jamais un tag vide (équivalent à `latest`). Toute image indiquée dans le fichier Compose **doit avoir un tag** (*e.g* `postgres:12` et pas `postgres`). N'utilisez jamais un tag vide (équivalent à `latest`).
Ligne 33: Ligne 45:
 ### Mise à jour d'une image maison ### Mise à jour d'une image maison
  
-Apportez vos modifications au Dockerfile (ajout d'un paquet...). Vous pouvez travailler en local et tester l'image sur votre machine si vous voulez.+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/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/services/dokuwiki/-/blob/master/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. 
 + 
 +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. 
 + 
 +* Si on met à jour un service (version X → version Y), on passera le tag du fichier Compose de X à Y. 
 +* Si on met juste à jour un fichier "maison" ou une configuration intégrée dans l'image, mais qu'on ne change pas la version du logiciel, on pourra ajouter au tag quelque chose comme `-Z`, de sorte que le tag deviennent `registry.picasoft.net/pica-<service>:vX-Z`.
  
-Si le code du service à copier dans l'image est intégré au dépôt par un submodule, on lancera la commande suivante pour le mettre à jour à la dernière version. Voir la documentation des submodules pour utiliser un tag ou une branche spécifique+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 ?
-git submodule update --recursive --remote <dossier du service> +
-```+
  
-Synchronisez ensuite le tout avec le dépôt (`git commit``git push...`).+Une fois arrivé à ce stadevotre nouvelle version du service est prête à être déployée depuis n'importe quelle machine de PicasoftLa 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).
  • technique/docker/picasoft/update.1602091920.txt.gz
  • de qduchemi