Construire des images avant de démarrer les conteneurs
Dans les étapes précédentes, nous avons utilisé des images Docker pré-construites depuis Docker Hub (comme nginx:latest
). Cependant, vous aurez souvent besoin de construire vos propres images Docker personnalisées pour vos applications.
Docker Compose peut automatiquement construire les images définies dans votre fichier docker-compose.yml
avant de démarrer les services. Cela se fait généralement en spécifiant un contexte de build
au lieu d'un nom d'image
pour un service.
Modifions notre fichier docker-compose.yml
pour construire une simple image Nginx personnalisée.
D'abord, créez un nouveau répertoire nommé nginx_custom
dans ~/project
.
cd ~/project
mkdir nginx_custom
Maintenant, créez un Dockerfile
dans le répertoire nginx_custom
.
nano ~/project/nginx_custom/Dockerfile
Ajoutez le contenu suivant au Dockerfile
:
FROM nginx:latest
RUN echo '<h1>Hello from Custom Nginx!</h1>' >/usr/share/nginx/html/index.html
Ce Dockerfile
part de l'image officielle nginx:latest
puis remplace le fichier index.html
par défaut par un contenu personnalisé.
Ensuite, modifiez votre fichier ~/project/docker-compose.yml
pour utiliser ce Dockerfile
afin de construire l'image du service web
. Ouvrez le fichier pour l'éditer :
nano ~/project/docker-compose.yml
Modifiez la définition du service web
pour utiliser build
au lieu de image
:
version: "3.8"
services:
web:
build: ./nginx_custom
ports:
- "80:80"
Maintenant, lorsque vous exécuterez docker compose up
, Docker Compose construira d'abord l'image définie par le Dockerfile
dans le répertoire ./nginx_custom
puis démarrera un conteneur utilisant cette nouvelle image.
Assurez-vous d'être dans le répertoire ~/project
et exécutez :
cd ~/project
docker compose up -d
Vous verrez une sortie indiquant que Docker Compose construit l'image puis crée et démarre le conteneur.
Pour vérifier que la page Nginx personnalisée est servie, utilisez curl
:
curl http://localhost
Vous devriez voir le résultat <h1>Hello from Custom Nginx!</h1>
, confirmant que l'image a été construite et que le conteneur fonctionne avec le contenu personnalisé.
Pour nettoyer, arrêtez les services en cours d'exécution :
cd ~/project
docker compose down