Docker

Gestion des conteneurs

L’ensemble des données spécifiques aux applications, donc l’ensemble des données des conteneurs est stocké dans /srv sur une partition chiffrée.

Orchestration

L’organisation des conteneurs repose sur les concepts de Compose. Les conteneurs sont organisés par application, le moins de mutualisation possible es# Gestion des conteneurs

L’ensemble des données spécifiques aux applications, donc l’ensemble des données des conteneurs est stocké dans /srv sur une partition chiffrée.

Le /srv lui-même est découpé en fonction des usages :

  • /srv/conf : configurations générales
  • /srv/docker : données internes de Docker
  • /srv/templates : modèles de configuration de services
  • /srv/core : projets compose d’infrastructure
  • /srv/apps : projets compose des applications
  • /srv/users : projets compose des services hébergés pour les utilisateurs

Orchestration

L’organisation des conteneurs repose sur les concepts de Compose. Les conteneurs sont organisés par application, le moins de mutualisation possible est effectuée. Par exemple, chaque application dispose de son serveur de bases de données, de son serveur Redis si besoin, etc.

La configuration et les données de chaque application est stockée dans un dossier dédié dans /srv/apps ou /srv/users. Par exemple, /srv/apps/mastodon, /srv/apps/mumble. Ce dossier abrite ensuite idéalement un fichier compose docker-compose.yml, un dossier pour les éventuels fichiers de configuration ./conf et un dossier de données, ./data. Les applications plus complexes disposent d’une arborescence adaptée.

Le fichier docker-compose.yml ne doit pas contenir de données spécifiques à TeDomum et doit être publiable. Les données spécifiques sont importées par variables depuis un fichier .env situé dans le dossier de l’application.

Documentation

La documentation est effectuée in situ, ou bien dans les fichiers .yml, de configuration, etc. ou bien dans des fichiers README.md, pour l’arborescence et les choix locaux de conception par exemple.

L’ensemble des fichiers docker-compose.yml, des fichiers de documentation, et des fichiers de configuration ne contenant pas de données sensibles, sont versionnés sur un dépôt Git public et commun à l’ensemble des hôtes.

Services centraux

Les services mutualisés sont regroupés dans des projets compose dans /srv/core. A titre d’exemple, les services traefik (reverse proxy Web) et fw (gestion du firewall) sont dans /srv/core/front. Ils doivent être démarrés avant le reste de l’infrastructure.