Accueil

Programmation Python dans VS Code via un Conteneur Docker

Avez-vous déjà essayé de partager votre code Python avec un collègue, pour finalement passer des heures à déboguer des problèmes du type « mais ça marche sur ma machine » ? Les conteneurs Docker sont comme des conteneurs d’expédition pour le code : ils emballent votre environnement Python, vos bibliothèques et vos dépendances dans une boîte scellée qui fonctionne de la même manière partout. De plus, vous avez accès à des dizaines de milliers d’images pré-construites sur Docker Hub, où les développeurs de logiciels publient des environnements prêts à l’emploi, vous évitant les difficultés de l’installation manuelle de logiciels. Ce tutoriel vous montre comment exécuter Python dans un environnement isolé et reproductible en utilisant VS Code et Docker Desktop.

Concepts Clés

Ce Dont Vous Aurez Besoin

Étape 1 : Installez Docker Desktop

Étape 2 : Installez l’Extension Dev Containers

Étape 3 : Créez un Dossier de Projet Python

Étape 4 : Créez le Dockerfile

# Choose the official Python slim image
FROM python:3.12-slim

# 1. Install system dependencies
RUN apt-get update && apt-get install -y \
    git curl build-essential && \
    rm -rf /var/lib/apt/lists/*

# 2. Install Python packages for data science and web apps
RUN pip install --no-cache-dir \
    pandas matplotlib seaborn streamlit jupyter

# 3. Install Node.js LTS from NodeSource
RUN curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - \
    && apt-get install -y nodejs \
    && npm install -g npm@latest

# 4. Install Claude Code globally
RUN npm install -g @anthropic-ai/claude-code

# 5. Expose Streamlit port
EXPOSE 8501

Étape 5 : Créez la Configuration Dev Container

{
  "name": "Python in Docker",
  "build": {
    "dockerfile": "Dockerfile"
  },
  "customizations": {
    "vscode": {
      "extensions": [
        "ms-python.python",
        "ms-python.debugpy"
      ]
    }
  },
  "forwardPorts": [8501],
  "postCreateCommand": "python3 --version"
}

Étape 6 : Créez un Script d’Analyse de Données Python

# Simple data analysis using the iris dataset
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris

# Load the iris dataset
iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['species'] = iris.target

# Display first few rows
print(df.head())

# Summary statistics
print("\nSummary statistics:")
print(df.describe())

# Create histograms
plt.figure(figsize=(10, 6))
plt.hist(df['sepal length (cm)'], bins=20, alpha=0.7, label='Sepal Length')
plt.hist(df['sepal width (cm)'], bins=20, alpha=0.7, label='Sepal Width')
plt.xlabel('Measurement (cm)')
plt.ylabel('Frequency')
plt.title('Iris Sepal Measurements')
plt.legend()
plt.show()

Étape 7 : Créez une Application Web Streamlit

import streamlit as st
import numpy as np
import matplotlib.pyplot as plt

st.title("Old Faithful Geyser Data")

# Slider for number of bins
bins = st.slider("Number of bins:", min_value=5, max_value=50, value=30)

# Generate sample data (simulating Old Faithful eruption durations)
np.random.seed(42)
data = np.concatenate([
    np.random.normal(2, 0.5, 100),
    np.random.normal(4.5, 0.5, 150)
])

# Create histogram
fig, ax = plt.subplots()
ax.hist(data, bins=bins, edgecolor='black')
ax.set_xlabel('Eruption Duration (minutes)')
ax.set_ylabel('Frequency')
ax.set_title(f'Histogram with {bins} bins')

st.pyplot(fig)

Étape 8 : Rouvrez dans le Conteneur

Étape 9 : Comprenez l’Environnement du Conteneur

Maintenant, vous codez à l’intérieur d’un conteneur Linux. Explorons ce que cela signifie.

pwd

Vous verrez /workspaces/python-docker-demo - c’est votre dossier de projet à l’intérieur du conteneur.

ls

Vous verrez les dossiers que vous avez créés : .devcontainer/, python/, etc.

cd ..
ls

Vous ne verrez que python-docker-demo/ - le conteneur est isolé. Vous ne pouvez pas accéder aux autres dossiers de votre ordinateur, Bureau ou Documents. Cette isolation garantit que votre environnement Python est propre et reproductible.

cd python-docker-demo

Étape 10 : Exécutez du Code Python Ligne par Ligne

Le conteneur a Python pré-installé avec des packages de science des données. Exécutons le script d’analyse.

Étape 11 : Exécutez l’Application Streamlit

Le projet inclut une application Streamlit de démonstration qui crée un histogramme interactif.

cd python
streamlit run app.py

Étape 12 : Effectuez un Changement Simple

Modifions l’application pour voir comment fonctionne le développement.

st.title("My First Python Docker App")

Étape 13 : Comprendre le Dockerfile (Optionnel)

Parties clés :

Autres images Python que vous pouvez utiliser :

Après avoir changé l’image de base, reconstruisez le conteneur pour appliquer les modifications.

Étape 14 : Installez des Packages Python dans l’Image Docker (Optionnel)

Les packages installés via pip dans le terminal (pip install package) sont temporaires et disparaissent lorsque vous reconstruisez le conteneur. Pour rendre les packages permanents, ajoutez-les au Dockerfile.

RUN pip install --no-cache-dir \
    pandas matplotlib seaborn streamlit jupyter scikit-learn
import sklearn
print(sklearn.__version__)

Si cela affiche la version sans erreurs, le package est installé de manière permanente.

Prochaines Étapes

Dépannage

Vue d’Ensemble du Flux de Travail

Cette configuration vous donne un environnement de développement Python professionnel :

Flux de Travail Quotidien

Une fois que tout est configuré, voici votre routine quotidienne :

  1. Démarrez Docker Desktop - Ouvrez l’application et attendez l’indicateur d’état vert (Docker doit être en cours d’exécution)
  2. Ouvrez VS Code - Lancez VS Code et ouvrez votre dossier de projet
  3. Rouvrez dans le Conteneur - Si vous n’êtes pas déjà dans le conteneur, cliquez sur l’icône verte (en bas à gauche) et sélectionnez Reopen in Container
  4. Écrivez et exécutez du code - Éditez les fichiers .py, exécutez ligne par ligne avec Shift+Enter, ou exécutez des applications avec streamlit run app.py
  5. Enregistrez votre travail - Vos fichiers de code (.py, .ipynb) sont enregistrés sur votre ordinateur et persistent entre les sessions
  6. Validez et poussez - Utilisez GitHub Desktop pour valider vos modifications et pousser vers le dépôt

Créé par Steven Ge le 7 décembre 2025.