Skip to main content

Dockerfile

Qu'est-ce qu'un Dockerfile ?

Un Dockerfile est un fichier texte qui contient toutes les commandes qu'un utilisateur peut appeler sur la ligne de commande pour assembler une image Docker. Il sert de script pour automatiser le processus de création d'images Docker, en définissant un ensemble d'étapes successives qui doivent être exécutées pour construire l'image finale. 

Structure d'un Dockerfile

Un Dockerfile typique inclut une série de directives, chacune spécifiant une partie de l'image Docker et comment elle doit être construite.

Voici quelques-unes des directives les plus courantes :

  • FROM : Définit l'image de base à utiliser pour l'image Docker. C'est souvent une distribution Linux légère comme Alpine ou Debian, ou une image préexistante contenant déjà l'environnement nécessaire à votre application.
  • RUN : Exécute une commande dans le conteneur. Utilisé pour installer des logiciels, créer des fichiers, etc.
  • COPY / ADD : Copie des fichiers et des répertoires de votre système de fichiers local dans le conteneur.
  • CMD : Fournit la commande par défaut à exécuter lorsque le conteneur démarre.
  • ENTRYPOINT : Configure une commande qui ne sera pas remplacée au démarrage du conteneur. CMD peut être utilisé pour fournir des arguments par défaut à ENTRYPOINT.
  • ENV : Définit des variables d'environnement.
  • EXPOSE : Indique les ports sur lesquels un conteneur écoute pour les connexions.
  • VOLUME : Crée un point de montage pour accéder à et stocker les données persistantes.
  • WORKDIR : Définit le répertoire de travail pour les instructions CMD, RUN, ENTRYPOINT, COPY et ADD.

Exemple :

# Utilise une image de base officielle de Python 3.8
FROM python:3.8-slim

# Définit le répertoire de travail dans le conteneur
WORKDIR /app

# Copie les fichiers requirements.txt dans le conteneur pour installer les dépendances
COPY requirements.txt ./

# Installe les dépendances Python spécifiées dans requirements.txt
RUN pip install --no-cache-dir -r requirements.txt

# Copie le reste du code source de l'application dans le conteneur
COPY . .

# Expose le port 5000 sur lequel l'application va s'exécuter
EXPOSE 5000

# Commande exécutée au démarrage du conteneur pour lancer l'application
CMD ["python", "./app.py"]

Dans cet exemple, le Dockerfile crée une image pour une application Python simple :

  • Il commence par utiliser l'image Docker officielle de Python 3.8 comme base.
  • Il définit /app comme répertoire de travail dans le conteneur.
  • Il copie requirements.txt dans le conteneur et installe les dépendances Python nécessaires.
  • Il copie ensuite le reste du code source de l'application dans le conteneur.
  • Il expose le port 5000, sur lequel l'application va écouter.
  • Enfin, il définit la commande par défaut pour exécuter l'application avec Python.

Ce Dockerfile illustre comment préparer un environnement pour une application Python, en installant des dépendances et en configurant l'application pour qu'elle soit prête à être exécutée dans un conteneur Docker.