Préparer un projet Docker Compose simple avec un contexte de build
Dans cette étape, nous allons préparer un projet Docker Compose simple incluant un contexte de build. Un contexte de build est l'ensemble des fichiers situés à un emplacement spécifié (PATH ou URL) qui sont envoyés au démon Docker pour construire une image Docker. Ceci est important car le Dockerfile et tous les fichiers nécessaires (comme le code de l'application) doivent se trouver dans le contexte de build.
Commencez par créer un répertoire pour notre projet. Nous le nommerons my-watch-app
.
mkdir ~/project/my-watch-app
cd ~/project/my-watch-app
Maintenant, créons un fichier d'application simple. Nous utiliserons un script Python basique qui affiche un message.
nano app.py
Ajoutez le contenu suivant dans app.py
:
print("Hello from the Docker container!")
Enregistrez et fermez le fichier (Ctrl+X, Y, Entrée).
Ensuite, nous devons créer un Dockerfile qui construira une image pour notre application. Le Dockerfile copiera notre script Python dans l'image puis l'exécutera.
nano Dockerfile
Ajoutez le contenu suivant dans le Dockerfile :
FROM python:3.9-slim
WORKDIR /app
COPY app.py .
CMD ["python", "app.py"]
Ce Dockerfile utilise une image Python 3.9 slim comme base, définit le répertoire de travail sur /app
, copie app.py
dans le répertoire /app
, et enfin définit la commande pour exécuter le script Python au démarrage du conteneur.
Enfin, nous devons créer un fichier docker-compose.yaml
pour définir notre service. Ce fichier indiquera à Docker Compose comment construire et exécuter notre application.
nano docker-compose.yaml
Ajoutez le contenu suivant dans docker-compose.yaml
:
version: "3.8"
services:
myapp:
build: .
volumes:
- .:/app
Ce fichier docker-compose.yaml
définit un service nommé myapp
. L'instruction build: .
indique à Docker Compose de construire l'image en utilisant le Dockerfile du répertoire courant (qui est notre contexte de build). La ligne volumes: - .:/app
monte le répertoire courant (.
) de la machine hôte dans le répertoire /app
du conteneur. Ceci est crucial pour docker compose watch
car il permet aux modifications sur l'hôte d'être reflétées dans le conteneur.
Maintenant, construisons et exécutons notre service avec Docker Compose pour vérifier que tout est correctement configuré. Comme Docker Compose n'est pas préinstallé, nous devons d'abord l'installer.
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Nous pouvons maintenant utiliser docker-compose
.
docker-compose up --build
Vous devriez voir une sortie indiquant que l'image est en cours de construction et que le conteneur s'exécute, affichant "Hello from the Docker container!". Appuyez sur Ctrl+C
pour arrêter le conteneur.