Utiliser Docker Compose pour le Développement Python (2023)

Dans le monde du développement logiciel, Docker est devenu un outil incontournable pour sa capacité à créer et répliquer des images sur n'importe quel hôte, éliminant ainsi les incohérences des environnements de développement. Parmi les nombreux avantages, Docker réduit considérablement les délais d'intégration, offrant une solution efficace pour les développeurs.

Exemple concret : Construction d'une API Todo avec Python, Django REST Framework et PostgreSQL

Pour illustrer l'intégration de Docker dans le développement, nous allons créer une API Todo simple en utilisant Python, Django REST Framework et PostgreSQL, avec Docker Compose pour le développement, les tests, et éventuellement dans notre pipeline CI/CD.

Prérequis pour ce tutoriel

Avant de commencer, assurez-vous d'avoir installé Docker Community Edition, Docker Compose, et téléchargé l'exemple de l'application Todo en dehors de Docker.

Création du Dockerfile

Au cœur de toute application Dockerisée, se trouve le Dockerfile. Pour notre projet, nous utilisons l'image Python préconstruite. Voici les étapes de base pour créer le Dockerfile :

FROM python:3.6.1-alpine

RUN apk update \
    && apk add build-base postgresql postgresql-dev libpq

RUN mkdir /usr/src/app
WORKDIR /usr/src/app

COPY ./requirements.txt .
RUN pip install -r requirements.txt

ENV PYTHONUNBUFFERED 1
COPY . .

Ces instructions mettent en place l'environnement nécessaire, installent les dépendances, et copient le code de l'application dans l'image Docker.

Utilisation de Docker Compose pour les services

Maintenant que notre image est prête, utilisons Docker Compose pour créer des services connectés, notamment notre application web et une base de données PostgreSQL. Créez le fichier docker-compose.yml avec le contenu suivant :

version: '3'
services:
  web:
    build: .
    command: gunicorn -b 0.0.0.0:8000 todosapp.wsgi:application
    depends_on:
      - postgres
    volumes:
      - .:/usr/src/app
    ports:
      - "8000:8000"
    environment:
      DATABASE_URL: postgres://todoapp@postgres/todos

  postgres:
    image: postgres:9.6.2-alpine
    environment:
      POSTGRES_USER: todoapp
      POSTGRES_DB: todos

Ce fichier définit les services web et postgres, spécifiant comment ils doivent être construits et exécutés ensemble.

Exécution de l'application

Avec tout en place, exécutez l'application en utilisant la commande docker-compose up. Cela construira les images et démarrera les services. Assurez-vous de migrer le schéma de la base de données avec docker-compose exec web python manage.py migrate.

Tests de l'application

Les tests sont cruciaux. Exécutez-les dans un environnement isolé avec la commande suivante :

docker-compose -p tests run -p 8000 --rm web python manage.py test

Cela garantit que les tests s'exécutent dans un environnement propre, assurant un comportement fiable de l'application.

Conclusion

L'utilisation de Docker Compose pour le développement Python offre une approche efficace et propre. Cette méthodologie permet de créer des environnements de développement cohérents, tout en facilitant les tests et les déploiements ultérieurs. Si votre équipe utilise Docker, cette approche pourrait grandement améliorer votre flux de travail de développement. Experimentez avec ces concepts et découvrez les avantages concrets pour votre projet.

Top Articles
Latest Posts
Article information

Author: Rob Wisoky

Last Updated: 14/11/2023

Views: 5975

Rating: 4.8 / 5 (48 voted)

Reviews: 87% of readers found this page helpful

Author information

Name: Rob Wisoky

Birthday: 1994-09-30

Address: 5789 Michel Vista, West Domenic, OR 80464-9452

Phone: +97313824072371

Job: Education Orchestrator

Hobby: Lockpicking, Crocheting, Baton twirling, Video gaming, Jogging, Whittling, Model building

Introduction: My name is Rob Wisoky, I am a smiling, helpful, encouraging, zealous, energetic, faithful, fantastic person who loves writing and wants to share my knowledge and understanding with you.