On passe au Docker Compose !

Présentation
L’intérêt que je trouve à Docker c’est de pouvoir tester des solutions assez simplement.
Du coup, je recherche assez souvent des solutions type self-hosting.
On va donc découvrir Firefly III,
un gestionnaire de finances personnelles gratuit et open source.
Une démo est disponible ici.

Installation de Docker Compose
Avant toute chose, on installe Docker Compose. Cet outil va nous permettre de définir et de lancer des applications en Docker constituées de multiples conteneurs.
Pour l’installer, je vous invite à consulter le
GitHub pour la dernière release.
À l’heure où j’édite ces lignes, la dernière version stable est la 2.5.0 :
|
|
On vérifie que l’outil est bien installé :
|
|
Docker Compose version v2.5.0
Firefly III
Configuration
Répertoire de travail
Pour mes solutions Docker, je créer un dossier spécifique à la solution
dans le dossier /root
en passant en root (sudo -i
).
Honnêtement, je ne connais pas la méthode propre
(si celle-ci n’en est pas une…).
On crée donc notre environnement de travail et on se positionne dedans :
|
|
Fichier Docker Compose
On va donc télécharger le fichier exemple du développeur :
|
|
Ce fichier précise deux services :
- L’application : Firefly III 🐖
- La base de données : PostgreSQL 🐘
Nous allons apporter des modifications sur ce fichier en appliquant notamment
une passphrase digne de ce nom pour la BDD.
Vous remarquerez que j’ai aussi modifié le port exposé car j’ai déjà mon
serveur Web qui utilise ce port.
|
|
Ficher des variables d’environnement
Le docker-compose.yml
met en évidence un fichier de variable d’environnement
pour le conteneur de Firefly III (ligne 9).
On va donc récupérer le fichier d’exemple et travaillé sur une version finale :
|
|
Le fichier est bien documenté et les variables ont aussi le mérite d’être explicites.
Vous pouvez simplement regarder les lignes de configuration (sans les commentaires)
avec la commande :
cat .env | grep -v ^# | awk 'NF > 0'
Je vous invite à modifier ces variables-là :
APP_KEY=3OMlGWE5e4iCLWHvAIl5b4pK9lyXIyp5
DEFAULT_LANGUAGE=fr_FR
TZ=Europe/Paris
DB_PASSWORD=M0n_M0t$_D3_P@$$3
La variable APP_KEY
demande une chaine d’exactement 32 caractères alphanumériques.
Vous pouvez en générer une simplement avec cette commande :
head /dev/urandom | LANG=C tr -dc 'A-Za-z0-9' | head -c 32 ; echo
Lancement
On lance donc notre composition :
|
|
L’option -f
permet de préciser le fichier utilisé.
Si cette option n’est pas mise, compose
cherchera un fichier
de nom docker-compose.{yml,yaml}
dans le répertoire courant.
Ici, il n’est donc pas nécessaire. On peut simplement faire un :
|
|
On peut visualiser les conteneurs avec un docker container ls
:
CONTAINER ID | IMAGE | COMMAND | CREATED | STATUS | PORTS | NAMES |
---|---|---|---|---|---|---|
38122b466079 | jc5x/firefly-iii:latest | “/entrypoint.sh” | 2 minutes ago | Up 2 minutes | 0.0.0.0:4040->80/tcp | firefly-iii_firefly_iii_1 |
0318eb7de984 | postgres:10-alpine | “docker-entrypoint.s…” | 3 minutes ago | Up 2 minutes | 5432/tcp | firefly-iii_firefly_iii_db_1 |
firefly-iii_firefly_iii_db_1 au lieu de
firefly_iii_db_1 …
Il en est de même pour les volumes…
EDIT : En fait, les conteneurs prennent par défaut le nom du répertoire courant suivis du nom du service !
En cas de problème, on peut visualiser les logs du conteneur avec cette commande :
|
|
Après quelques minutes, Firefly III devrait-être accessible via l’adresse IP de votre serveur et le port de communication (cette dernière n’est pas nécessaire si vous avez laissé le 80 dans le fichier de configuration de Docker Compose).
Voilà ! Vous pouvez maintenant essayer cet outil et pourquoi pas l’adopter !
Vous trouverez la documentation complète ici.
Mise à jour des conteneurs
Pour mettre à jour les conteneurs d’une composition,
on exécute les commandes suivantes depuis le répertoire contenant
le fichier docker-compose.yml
:
|
|
Suppression
Voici une fois de plus mes commandes pour virer tout votre travail fait en Docker :
|
|
Bilan
Nous avons donc vu pour une première fois l’utilisation de Docker Compose.
Ce tutoriel servira donc de base pour établir des projets plus complexes.
Une chose me chagrine, ce gestionnaire (que j’ai décidé de garder) ne supporte pas le HTTPS !
Rassurez-vous, j’ai déjà la solution. Mais bon, chaque chose en son temps.
PS : J’ai trouvé un outil en ligne permettant de convertir les commandes docker run
en docker compose
! Le lien est juste ici.