technique:etudes:mail:deploiement

Ancienne étude : Déploiement et mise à jour du serveur mail

Cette page ne reflète PAS le fonctionnement actuel des mails à Picasoft mais une ancienne étude pour auto-héberger notre serveur mail.

Un tuto sur le déploiement de l'infra actuelle se trouve ici.

Pour son serveur mail, Picasoft fait le choix de se baser sur l’image Docker ''tomav/docker-mailserver''. C’est une grosse image Docker (~500Mo) qui contient tout ce qu’il faut pour héberger son serveur mail dans un conteneur, mais aussi un bon paquet de fonctionnalités supplémentaires (gestion des certificats, DKIM, spam, etc.) que l’on peut activer ou non à l’aide de variables d’environnement.

Comme Picasoft souhaite utiliser des images que l’on build nous même (pour ne pas tout tirer directement depuis le Docker Hub) on va récupérer le code (Dockerfile et autres fichiers) pour faire le build nous même (on utilise –recursive car le repository utilise un certain nombre de sous-modules).

git clone --recursive https://github.com/tomav/docker-mailserver.git && cd docker-mailserver

On constate à l’instruction FROM du Dockerfile que l’image va se baser sur debian:stretch-slim. C’est une image officielle sur le Docker Hub que Picasoft accepte d’utiliser, on lance donc directement le build.

docker build -t registry.picasoft.net:5000/mailserver .

Le build est assez long, il va installer beaucoup de paquets, copier des fichiers, mettre à jour Clamav (c’est très long!), bref préparer notre grosse image Docker.

NOTES : Ajouter l’étape de tag/push sur la registry lorsque l’on voudra utiliser en prod
NOTES : Ajouter un processus de mise à jour de l’image

Pour de déploiement du service, on va reprendre 2 fichiers d’exemples du repository : docker-compose.yml.dist et .env.dist (que l’on va copier en supprimant le .dist).

Le premier fichier (docker-compose.yml) sert à décrire le déploiement du conteneur, le second (.env) contient l’ensemble des variables d’environnement injectées dans le fichier docker-compose.yml (et donc dans le conteneur). Cela permet d’avoir un fichier de configuration unique, le fichier .env pour notre service mail (même si on va devoir modifier le fichier docker-compose.yml pour l’adapter à nos besoins).

On commence donc par adapter le fichier docker-compose.yml

  • technique/etudes/mail/deploiement.1581686652.txt.gz
  • de qduchemi