diff --git a/doc/guide_bonnes_pratiques.md b/doc/guide_bonnes_pratiques.md index d926bbc725638f659c4b6cdacd8814bfc4669a02..4093d3acd1cf70425e7aeb7e186dd57a8c716b02 100644 --- a/doc/guide_bonnes_pratiques.md +++ b/doc/guide_bonnes_pratiques.md @@ -10,6 +10,33 @@ Pour une plongée plus complète dans les différents concepts abordés ici, on * [Orchestrer le lancement de conteneurs avec Docker Compose](https://docs.docker.com/compose/) * [Référence pour l'écriture de fichiers Docker Compose](https://docs.docker.com/compose/compose-file/) +## Se baser sur un autre Dockerfile ? + +Tous les services tournant sur l'infrastructure de Picasoft sont voués à être pris en charge par ce dépôt. Cela permet notamment d'assurer leur présence sur notre registre Docker privé (`registry.picasoft.net`), ce qui permet notamment de réduire le temps de téléchargement des images, d'assurer leur intégrité et de décentraliser le stockage des images du seul Hub Docker officiel. Enfin, cela nous permet de tester la sécurité des images en amont. + +Il y a plusieurs cas. + +### Je veux faire tourner un service existant, tel quel + +Si un service existant a une image Docker officielle, référencée sur le Docker Hub, alors on créera un Dockerfile *dummy*, ne contenant qu'une instruction `FROM`. Exemple : + +```Dockerfile +FROM grafana:4.8 +``` + +Le reste est identique : on crée notre `docker-compose.yml`, notre `README.md`, notre `clair-whitelist.yml`, et les fichiers de secrets d'exemple. + +### Je veux customiser un service existant + +Supposons que l'image Docker officielle ne nous convienne pas, que l'on soit obligés de la modifier pour régler des problèmes de sécurité, ou tout simplement qu'on veuille l'étendre, il faut créer un Dockerfile plus complet. Il y a deux solutions : + +* Soit on part de l'image officielle, avec un `FROM`, et on travaille dessus en rajoutant des fichiers, en enlevant des paquets... Cette solution a l'inconvénient de multiplier les *layers* inutiles, et d'augmenter la taille de l'image. +* Soit on copie le Dockerfile de l'image officielle (c'est le cas pour [Mattermost](../pica-mattermost)), et on fait nos modifications. Cette solution a pour inconvénient de devoir se synchroniser avec les modifications du Dockerfile officiel à chaque mise à jour, s'il contient des améliorations ou corrections importantes. + +### Je veux écrire un Dockerfile de zéro. + +Allez-y ! :D + ## Dockerfile Une [série de recommendations](https://wiki.picasoft.net/doku.php?id=technique:docker:tips) est disponible ici pour l'écriture des Dockerfile.