Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente | |||
technique:docker:picasoft:dockerfiles [2021/12/19 19:41] – qduchemi | technique:docker:picasoft:dockerfiles [2022/05/24 19:56] (Version actuelle) – ppom | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{indexmenu_n> | ||
+ | # Comprendre la gestion des services | ||
+ | |||
+ | < | ||
+ | Prérequis : les articles de [[technique: | ||
+ | </ | ||
+ | |||
+ | ## Préambule | ||
+ | |||
+ | Par service, on entend la plupart des applications tournant sur les serveurs de Picasoft, qu'ils soient publics, comme Mattermost, ou " | ||
+ | Ces services sont majoritairement gérés par Docker. Une *rule of thumb* est ce tout ce qui touche à l' | ||
+ | |||
+ | Pour le reste, qui pourrait être lancé sur une machine virtuelle quelconque, on privilégiera Docker (qui a justement l' | ||
+ | |||
+ | < | ||
+ | Les fichiers permettant de construire les images, de créer les conteneurs et de configurer les services sont sauvegardés dans leurs dépôts Git. Chaque dépôt se suffit à lui-même pour lancer le service Picasoft en question. Ils sont accessibles ici : https:// | ||
+ | |||
+ | < | ||
+ | |||
+ | ## Objectifs | ||
+ | |||
+ | Historiquement, | ||
+ | |||
+ | * Rédiger les Dockerfiles et la configuration sur sa machine personnelle, | ||
+ | * Construire les images Docker à partir de ces fichiers sur une machine quelconque, puis les tagger et pousser manuellement sur un registre privé, | ||
+ | * Gérer un fichier Compose global par machine virtuelle, qui contient la configuration et les secrets. | ||
+ | |||
+ | Cette approche pose plusieurs problèmes. | ||
+ | |||
+ | < | ||
+ | |||
+ | L' | ||
+ | |||
+ | * Cloner le bon dépôt | ||
+ | * Se rendre dedans | ||
+ | * Lancer un `docker-compose up -d` pour démarrer le service | ||
+ | |||
+ | Son objectif secondaire est de pouvoir revenir à l' | ||
+ | |||
+ | * Cloner le dépôt | ||
+ | * *Checkout* le commit correspondant | ||
+ | * Lancer le service normalement | ||
+ | |||
+ | Son dernier objectif est de permettre de rendre publics nos fichiers Compose et la configuration, | ||
+ | |||
+ | Mis à part les données à proprement parler du service, il n'y a donc aucune différence entre un service lancé sur une de nos machines et un service lancé à partir de ce dépôt sur une machine quelconque, ce qui s' | ||
+ | |||
+ | ## Contenu des dépôts | ||
+ | |||
+ | Chaque dépôt correspond à un *service* Picasoft au sens large, c' | ||
+ | |||
+ | < | ||
+ | |||
+ | Ainsi, chaque dépôt contient, selon les situations : | ||
+ | |||
+ | * Zéro, un ou plusieurs `Dockerfile` permettant de construire des images personnalisées pour Picasoft, | ||
+ | * Un fichier `docker-compose.yml` permettant de lancer le service, | ||
+ | * Si possible, un ou des fichiers de configuration permettant de personnaliser le service selon nos besoins, | ||
+ | * Un fichier d' | ||
+ | * Un `README.md` résumant les paramètres modifiables sur le dépôt, les mécanismes pour en rajouter, etc, | ||
+ | * Pour les images maison, un `CHANGELOG.md` résumant les modifications faites au fil des versions. | ||
+ | |||
+ | ## Utiliser les dépôts sur les machines | ||
+ | |||
+ | < | ||
+ | |||
+ | Si la machine virtuelle est toute nouvelle, on créé le dossier où l'on clonera les services : | ||
+ | ``` | ||
+ | mkdir / | ||
+ | ``` | ||
+ | |||
+ | On clone le dépôt : | ||
+ | |||
+ | ``` | ||
+ | cd / | ||
+ | git clone https:// | ||
+ | ``` | ||
+ | |||
+ | Le dépôt sera partagé et les fichiers doivent être éditables par tous les membres de Picasoft. | ||
+ | |||
+ | Or, avec Git, tout `git pull` va associer les nouveaux fichiers écrits au compte qui effectue la commande, avec des permissions d' | ||
+ | |||
+ | Une solution pour rendre le dépôt " | ||
+ | |||
+ | Éditer `/ | ||
+ | |||
+ | ``` | ||
+ | sharedrepository = group | ||
+ | ``` | ||
+ | |||
+ | Ainsi, le dépôt sera " | ||
+ | |||
+ | Pour être certain que les fichiers créés manuellement sur la machine par les utilisateurs soient accessibles par le groupe `docker`, on entrera la commande suivante : | ||
+ | |||
+ | ```bash | ||
+ | sudo setfacl -Rdm g: | ||
+ | ``` | ||
+ | |||
+ | Ainsi, les fichiers créés auront le groupe `docker` par défaut ainsi que les permissions d' | ||
+ | |||
+ | On terminera, pour être sûr·e, par : | ||
+ | |||
+ | ```bash | ||
+ | sudo chgrp -R docker / | ||
+ | sudo chmod -R g+w / | ||
+ | sudo chmod g-w / | ||
+ | find / | ||
+ | ``` |