Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
technique:docker:picasoft:dockerfiles [2020/09/30 16:45] – créée qduchemi | technique:docker:picasoft:dockerfiles [2022/05/24 19:56] (Version actuelle) – ppom | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | # Comprendre la gestion des services de Picasoft | + | {{indexmenu_n> |
+ | |||
+ | # Comprendre la gestion des services | ||
+ | |||
+ | < | ||
+ | Prérequis : les articles | ||
+ | </ | ||
## Préambule | ## Préambule | ||
- | Par service, on entend la plupart des applications tournant sur les serveurs de Picasoft, qu'ils soient publics ou " | + | Par service, on entend la plupart des applications tournant sur les serveurs de Picasoft, qu'ils soient publics, comme Mattermost, |
Ces services sont majoritairement gérés par Docker. Une *rule of thumb* est ce tout ce qui touche à l' | 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' | Pour le reste, qui pourrait être lancé sur une machine virtuelle quelconque, on privilégiera Docker (qui a justement l' | ||
- | Pour gérer les conteneurs Docker, nous utilisons [Docker Compose](https:// | + | < |
- | Les fichiers permettant de construire les images, de créer les conteneurs et de configurer les services sont centralisés sur un dépôt | + | 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 |
- | Traditionnellement, | + | < |
- | ## Philosophie | + | ## Objectifs |
Historiquement, | Historiquement, | ||
+ | |||
* Rédiger les Dockerfiles et la configuration sur sa machine personnelle, | * 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é, | * 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. | * Gérer un fichier Compose global par machine virtuelle, qui contient la configuration et les secrets. | ||
- | Cette approche pose plusieurs problèmes. | + | Cette approche pose plusieurs problèmes. |
- | L' | + | < |
- | * Cloner le dépôt | + | |
- | * Se rendre | + | L' |
+ | |||
+ | * Cloner le bon dépôt | ||
+ | * Se rendre | ||
* Lancer un `docker-compose up -d` pour démarrer le service | * Lancer un `docker-compose up -d` pour démarrer le service | ||
Son objectif secondaire est de pouvoir revenir à l' | Son objectif secondaire est de pouvoir revenir à l' | ||
+ | |||
* Cloner le dépôt | * Cloner le dépôt | ||
- | * Checkout le commit correspondant | + | * *Checkout* le commit correspondant |
* Lancer le service normalement | * Lancer le service normalement | ||
Son dernier objectif est de permettre de rendre publics nos fichiers Compose et la configuration, | Son dernier objectif est de permettre de rendre publics nos fichiers Compose et la configuration, | ||
- | Mises à 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' | + | 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 | + | ## Contenu |
- | Le dépôt est organisé en dossiers. | + | Chaque |
- | Ainsi, chaque | + | < |
+ | |||
+ | Ainsi, chaque dépôt contient, selon les situations : | ||
* Zéro, un ou plusieurs `Dockerfile` permettant de construire des images personnalisées pour Picasoft, | * Zéro, un ou plusieurs `Dockerfile` permettant de construire des images personnalisées pour Picasoft, | ||
Ligne 47: | Ligne 60: | ||
* Un fichier d' | * Un fichier d' | ||
* Un `README.md` résumant les paramètres modifiables sur le dépôt, les mécanismes pour en rajouter, etc, | * 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 version. | + | * Pour les images maison, un `CHANGELOG.md` résumant les modifications faites au fil des versions. |
- | Chaque service a son propre fichier Compose, lui permettant d' | + | ## Utiliser les dépôts sur les machines |
- | ## Utiliser le dépôt sur les machines | + | < |
- | Si vous clonez le dépôt sur une nouvelle | + | Si la machine virtuelle est toute nouvelle, on créé le dossier où l'on clonera les services : |
+ | ``` | ||
+ | mkdir / | ||
+ | ``` | ||
- | À moins qu'on ouvre une nouvelle machine, ça ne devrait pas arriver - le dépôt | + | On clone le dépôt |
+ | |||
+ | ``` | ||
+ | cd / | ||
+ | git clone https:// | ||
+ | ``` | ||
- | En effet, le dépôt sera partagé et les fichiers doivent être éditables par tous les membres de Picasoft. | + | 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' | Or, avec Git, tout `git pull` va associer les nouveaux fichiers écrits au compte qui effectue la commande, avec des permissions d' | ||
Ligne 63: | Ligne 84: | ||
Une solution pour rendre le dépôt " | Une solution pour rendre le dépôt " | ||
- | Éditer `/ | + | Éditer `/ |
``` | ``` | ||
Ligne 74: | Ligne 95: | ||
```bash | ```bash | ||
- | sudo setfacl -Rdm g: | + | sudo setfacl -Rdm g: |
``` | ``` | ||
Ainsi, les fichiers créés auront le groupe `docker` par défaut ainsi que les permissions d' | Ainsi, les fichiers créés auront le groupe `docker` par défaut ainsi que les permissions d' | ||
- | On terminera, pour être sûr, par : | + | On terminera, pour être sûr·e, par : |
```bash | ```bash | ||
- | sudo chgrp -R docker / | + | sudo chgrp -R docker / |
- | sudo chmod -R g+w / | + | sudo chmod -R g+w / |
- | sudo chmod g-w / | + | sudo chmod g-w / |
- | find / | + | find / |
``` | ``` |