Recherche de site Web

Dockerfile vs. Docker Compose : comprendre les différences et les cas d’utilisation


Docker a révolutionné la conteneurisation, en fournissant des outils puissants pour la création et la gestion d’applications conteneurisées. Les deux concepts principaux de Docker sont Dockerfile et Docker Compose. Bien que les deux soient essentiels, ils servent des objectifs différents. Un Dockerfile est utilisé pour définir une image de conteneur unique, tandis que Docker Compose simplifie la gestion des applications multi-conteneurs.

Dans ce tutoriel, vous allez apprendre :

  • Les différences fondamentales entre Dockerfile et Docker Compose
  • Quand utiliser Dockerfile et quand utiliser Docker Compose
  • Exemples pratiques des deux approches

Dockerfile contre Docker Compose

Un Dockerfile est un script contenant un ensemble d’instructions pour construire une image Docker. Il spécifie l’image de base, les dépendances, les configurations et les commandes requises pour configurer l’environnement.

Docker Compose, quant à lui, est un outil qui définit et exécute des applications Docker multi-conteneurs à l’aide d’un fichier docker-compose.yml. Il permet d’orchestrer plusieurs conteneurs avec des variables de mise en réseau, de volumes et d’environnement.

Remarque : Les exemples suivants ne sont pas des applications entièrement fonctionnelles. Ils servent de squelette de base pour aider à comprendre les concepts de Dockerfile et Docker Compose.

Exemple 1 : Création d’une application web simple à l’aide de Dockerfile

Dans cet exemple, nous créons une application Web Flask basée sur Python à l’aide d’un Dockerfile.

  1. Dockerfile pour l’application Flask : Vous trouverez ci-dessous un Dockerfile simple pour une application Python Flask.

    Use an official Python runtime as base image
    FROM python:3.9
    
    Set the working directory
    WORKDIR /app
    
    Copy application files
    COPY . .
    
    Install dependencies
    RUN pip install -r requirements.txt
    
    Define the command to run the app
    CMD ["python", "app.py"]
    
  2. Ce Dockerfile extrait une image Python, configure l’environnement, copie les fichiers de l’application, installe les dépendances et exécute l’application.

Exemple 2 : Utilisation de Docker Compose pour gérer plusieurs conteneurs

Voyons maintenant comment Docker Compose peut être utilisé pour gérer une application Flask avec une base de données PostgreSQL.

  1. docker-compose.yml pour Flask et PostgreSQL : vous trouverez ci-dessous une configuration Docker Compose pour une application Flask et une base de données PostgreSQL.

    version: '3.8'
    services:
      web:
        build: .
        ports:
          - "5000:5000"
        depends_on:
          - db
      db:
        image: postgres:13
        environment:
          POSTGRES_USER: user
          POSTGRES_PASSWORD: password
          POSTGRES_DB: mydatabase
    

    Cette configuration définit deux services :

    • web : Il s’agit du service d’application Flask. La directive build : . indique à Docker Compose de construire l’image en utilisant le Dockerfile présent dans le même répertoire. Cela signifie qu’il suit toutes les étapes définies dans le Dockerfile, y compris la configuration de l’environnement, l’installation des dépendances et la définition du mode d’exécution de l’application.
    • db : Il s’agit du service de base de données PostgreSQL. Au lieu de créer une image personnalisée, il extrait une image PostgreSQL officielle de Docker Hub. Les variables d’environnement configurent l’utilisateur, le mot de passe et le nom de la base de données.

    La directive depends_on garantit que le service Web ne démarre qu’une fois le conteneur de base de données actif.

Conclusion

Comprendre la différence entre Dockerfile et Docker Compose est crucial pour un déploiement efficace d’applications conteneurisées. Utilisez Dockerfile lorsque vous avez besoin de définir et de générer une image, et utilisez Docker Compose pour orchestrer plusieurs conteneurs avec mise en réseau et dépendances.