**Ceci est une ancienne révision du document !**
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.
Build de l'image Docker
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
Déploiement du service
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