Construire ou personnaliser une image avec Docker-Compose

Dans ce nouveau tutoriel dédié à Docker et docker-compose, je vais vous expliquer comment construire une image personnalisé pour une conteneur depuis un stack de service que l’on a créé avec docker-compose

Comme exemple, on va partir de l’image Openlitespeed sur laquelle on souhaite ajouter l’extension LDAP pour PHP.

Voici le fichier docker-compose.yml de départ :

On va maintenant personnaliser l’image Openlitespeed pour ajouter l’extension LDAP au niveau de PHP.

Dans le répertoire où se trouve le fichier docker-compose.yml, créer un nouveau dossier que l’on va appeler custom.

Dans le répertoire custom, créer un fichier nommer Dockerfile.

Ajouter le contenu ci-dessous, pour personnaliser l’image :

Ici, on part de l’image de base openlitespeed 1.7.16 avec LSPHP 7.4 et on ajoute le paquet lsphp74-ldap qui permet d’avoir l’extension LDAP dans PHP.

Il faut maintenant éditer le fichier docker-compose.yml, pour indiquer quel fichier utiliser pour construire la nouvelle image et aussi indiquer un nom à notre image.

Voici le fichier docker-compose.yml avec les modifications :

Ligne 19 : il faut personnaliser le nom de l’image, celui-ci sera utiliser lors du build de l’image
Ligne 20 : indiquer l’emplacement du fichier Dockerfile, qui va permettre de construire l’image.

Il faut maintenant construire l’image avec la commande suivante :

sudo docker-compose build

Une fois terminée, il est possible de vérfifier que l’image est présente à l’aide de la commande ci-après :

sudo docker image list

Vous avez construit une image personnalisé depuis un fichier docker-compose.

Il ne vous reste plus qu’à démarrer normalement vos conteneurs :

sudo docker-compose up -d

Vous savez maintenant comment personnaliser / construire une image personnalisée avec docker-compose.

En complément, si vous débutez avec Docker, je vous invite à lire ce cours : https://learn.rdr-it.io/Le%C3%A7on/utiliser-docker-pour-deployer-un-serveur-web/ qui va vous permettre de comprendre la construction de l’image.