Déploiement et orchestration de services via Docker
Dans le cadre de mon apprentissage et de mes projets personnels, j'apprécie particulièrement l'utilisation de Docker. C'est un outil qui me facilite grandement la vie et me fait gagner un temps précieux lors des déploiements. Fini les conflits de dépendances ou les longues procédures d'installation : tout est packagé, prêt à être exécuté, peu importe la machine hôte.
Je suis capable d'installer le moteur Docker sur une machine Linux et de gérer son écosystème en ligne de commande (CLI).
docker pull.Pour déployer des services nécessitant plusieurs conteneurs interconnectés (par exemple une application web et sa base de données), je sais rédiger de simples fichiers docker-compose.yml.
Voici un exemple concret de fichier que j'ai créé et que j'utilise pour déployer mon propre serveur Nextcloud avec une base de données MariaDB :
# docker-compose.yml pour Nextcloud
services:
db:
image: mariadb:10.6
restart: always
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
volumes:
- ./db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=sqlroot
- MYSQL_PASSWORD=sqluser
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
app:
image: nextcloud
restart: always
ports:
- 8888:80
links:
- db
volumes:
- ./data:/var/www/html
environment:
- MYSQL_PASSWORD=maxxedoutZ240!
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=db
Une fois mon fichier YAML configuré, je maîtrise le processus de lancement pour que mes services tournent de manière autonome sur le serveur.
J'utilise la commande de démarrage en arrière-plan (mode détaché) afin de libérer mon terminal tout en laissant les conteneurs s'exécuter :
# Lancement de la stack en mode détaché
docker compose up -d