Préparer un projet Docker Compose simple
Dans cette étape, nous allons préparer un projet Docker Compose simple. Comme Docker Compose n'est pas préinstallé dans l'environnement LabEx, nous allons d'abord l'installer. Ensuite, nous créerons une application web simple et un fichier Docker Compose pour la définir et l'exécuter.
Tout d'abord, installons Docker Compose. Nous allons télécharger le binaire Docker Compose et le rendre exécutable.
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
Maintenant, vérifions l'installation en consultant la version de Docker Compose.
docker-compose --version
Vous devriez voir la version installée de Docker Compose dans la sortie.
Ensuite, nous allons créer une application web simple. Nous utiliserons une application Python Flask basique. Créez un répertoire pour notre projet et accédez-y.
mkdir my-web-app
cd my-web-app
Dans le répertoire my-web-app
, créez un fichier nommé app.py
avec le contenu suivant :
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, Docker Compose!'
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')
Il s'agit d'une application Flask simple qui renvoie "Hello, Docker Compose!" lorsqu'elle est accédée.
Maintenant, nous avons besoin d'un Dockerfile
pour construire une image Docker pour notre application Flask. Créez un fichier nommé Dockerfile
dans le répertoire my-web-app
avec le contenu suivant :
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["python", "app.py"]
Ce Dockerfile utilise une image Python 3.9 slim, définit le répertoire de travail, copie et installe les dépendances depuis requirements.txt
, copie le code de l'application, expose le port 5000 et spécifie la commande pour exécuter l'application.
Nous avons également besoin d'un fichier requirements.txt
pour la dépendance Flask. Créez un fichier nommé requirements.txt
dans le répertoire my-web-app
avec le contenu suivant :
Flask==2.2.2
Enfin, nous allons créer un fichier docker-compose.yml
pour définir notre service. Créez un fichier nommé docker-compose.yml
dans le répertoire my-web-app
avec le contenu suivant :
version: "3.8"
services:
web:
build: .
ports:
- "5000:5000"
Ce fichier docker-compose.yml
définit un service nommé web
. Il indique à Docker Compose de construire l'image en utilisant le Dockerfile
dans le répertoire courant (.
) et de mapper le port 5000 de l'hôte vers le port 5000 dans le conteneur.
Maintenant, construisons et exécutons le service en utilisant Docker Compose. Assurez-vous d'être dans le répertoire ~/project/my-web-app
.
docker-compose up -d
Cette commande construit l'image (si elle n'est pas déjà construite), crée un conteneur pour le service web
et le démarre en mode détaché (-d
).
Vous pouvez vérifier si le conteneur est en cours d'exécution en utilisant la commande docker ps
.
docker ps
Vous devriez voir un conteneur pour le service my-web-app-web-1
en cours d'exécution.
Pour vérifier que l'application fonctionne, vous pouvez y accéder en utilisant curl
.
curl http://localhost:5000
Vous devriez voir la sortie "Hello, Docker Compose!".