Skip to content
Snippets Groups Projects

Dockerfiles de Picasoft

Ce dépôt centralise les Dockerfiles et autre ressources utilisées pour construire et déployer les images Docker tournant en production sur l'infrastructure de Picasoft.

Certains services ne respectent pas encore la structure de ce dépôt (exemple : nextcloud-docker, ou Traefik qui reste géré uniquement sur les VM) : ils seront migrés prochainement.

Philosophie

Historiquement, Picasoft procède de la manière suivante :

  • Construire les images Docker à partir de Dockerfiles sur une machine quelconque, puis les pousser manuellement sur un registre privé.
  • Gérer un Docker Compose global par VM, qui contient la configuration et les secrets.

Cette approche pose plusieurs problèmes. Comment savoir ce qu'il y a dans une image, si on perd le Dockerfile ? Quel Dockerfile correspond à quelle version de l'image ? Si on perd l'accès à la machine, comment récupérer la configuration, remonter rapidement le service ? Comment versionner les changements de configuration ? Revenir à la version d'il y a deux semaines ?

L'objectif de ce dépôt est de rendre possible le déploiement de n'importe quel service Picasoft avec la procédure suivante :

  • Cloner le dépôt
  • Se rendre dans le répertoire du service
  • Lancer un docker-compose up -d pour démarrer le service

Son objectif secondaire est de pouvoir revenir à l'état antérieur d'un service. En versionnant toute la configuration nécessaire, revenir à une ancienne version du service revient à :

  • Cloner le dépôt
  • Checkout un commit quelconque
  • Lancer le service normalement

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 virtuelle quelconque, ce qui s'inscrit dans la philosophie Docker.

Contenu du dépôt

Le dépôt est organisé en dossiers. Chaque dossier correspond à un service Picasoft au sens large, c'est-à-dire à un ensemble de conteneurs liés entre eux techniquement (e.g. Mattermost et sa base de données) et/ou sémantiquement (e.g. sites web statiques, relai et boîte à mail).

Ainsi, chaque dossier de ce dépôt contiendra, selon les situations :

  • Zéro, un ou plusieurs Dockerfile permettant de construire les 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'exemple de secrets (mot de passe...) nécessaire au lancement du service,
  • 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.

Il n'y a pas de Docker Compose global : chaque service a son propre Docker Compose, lui permettant d'être déployé indépendamment des autres.

Un exemple concret peut être trouvé au niveau de pica-mattermost ou pica-etherpad.

Guides d'utilisation

Lancer ou redémarrer un service sur une machine de Picasoft

Lire la documentation de déploiement et de maintenance.

Mettre à jour un service ou sa configuration

Lire la documentation de mise à jour des services.

Mettre en place un nouveau service

Lire la documentation de versionnage d'un nouveau service et les bonnes pratiques pour Docker.

Un dossier template prêt à copier est aussi disponible.