Dockerfile multi-étapes et docker-compose prêts pour la production

Créez un Dockerfile multi-étapes sûr et léger et un docker-compose avec base de données, cache et worker : utilisateur non root, healthchecks, volumes et secrets hors de l’image. Conçu pour ChatGPT, Claude, Gemini et Microsoft Copilot. Il comprend 4 variables personnalisables et vous pouvez le copier gratuitement en un clic.

Intermédiaire · Code · En attente de relecture éditoriale

Prompt

Agis comme un ingénieur DevOps expérimenté dans la conteneurisation d’applications en production.

Je veux conteneuriser cette application :
- Stack et commande de démarrage : {{stack}}
- Services nécessaires : {{services}}
- Environnement cible : {{environnement}}
- Architecture CPU des serveurs : {{plateforme}}

Livrables :
1. Un `Dockerfile` multi-étapes : dépendances, build et une étape d’exécution minimale. Image de base à version figée, bonne utilisation du cache des couches, utilisateur non root, `WORKDIR`, `HEALTHCHECK`, gestion correcte des signaux d’arrêt et aucun outil de compilation dans l’image finale.
2. Un `.dockerignore` adapté à la stack.
3. Un `docker-compose.yml` avec tous les services : réseaux, volumes nommés pour les données, `depends_on` avec `condition: service_healthy`, un healthcheck par service, des limites de ressources raisonnables et une politique de redémarrage.
4. Des variables d’environnement issues d’un fichier `.env` (avec un `.env.example` sans vraies valeurs) et la façon de passer les secrets sans les intégrer à l’image.
5. Si l’environnement inclut le développement : un `compose.override.yml` avec rechargement à chaud et ports de débogage, séparé de la configuration de production.
6. Les commandes pour construire, démarrer, suivre les logs, lancer les migrations et faire un build multiplateforme si besoin.
7. Une liste de contrôle sécurité et taille : quoi vérifier avec un scanner de vulnérabilités et comment alléger l’image.

Contraintes :
- Ajoute un court commentaire à chaque instruction non évidente.
- N’invente ni versions de dépendances ni noms de variables : indique [À COMPLÉTER] pour ce que je n’ai pas précisé.
- Si ma stack impose un choix (serveur d’application, collecte des fichiers statiques…), demande-moi d’abord.

Format : un bloc de code par fichier et une section finale de commandes.

Comment l'utiliser

  1. Indiquez comment vous lancez l’application en local aujourd’hui (commande exacte) et quels services elle utilise.
  2. Choisissez production seule ou production plus développement.
  3. Construisez l’image, vérifiez sa taille et passez-la au scanner de vulnérabilités avant de la publier.

Exemple d'utilisation

Stack : Django 5 avec Gunicorn · Services : PostgreSQL 16, Redis et un worker Celery · Environnement : les deux · Plateforme : linux/amd64.

Exemple de résultat

1. Dockerfile

# Fixez aussi le patch ou le digest : python:3.12.[À COMPLÉTER]-slim-bookworm
FROM python:3.12-slim-bookworm AS builder
WORKDIR /app
# Outils de compilation uniquement dans cette étape
RUN apt-get update && apt-get install -y --no-install-recommends build-essential libpq-dev \
    && rm -rf /var/lib/apt/lists/*
COPY requirements.txt .
# Copier les dépendances d’abord préserve le cache des couches
RUN pip wheel --no-cache-dir --wheel-dir /wheels -r requirements.txt

FROM python:3.12-slim-bookworm AS runtime
ENV PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1
WORKDIR /app
# Seulement la bibliothèque client PostgreSQL et un utilisateur non privilégié
RUN apt-get update && apt-get install -y --no-install-recommends libpq5 \
    && rm -rf /var/lib/apt/lists/* \
    && useradd --create-home --uid 10001 app
COPY --from=builder /wheels /wheels
RUN pip install --no-cache-dir /wheels/* && rm -rf /wheels
COPY --chown=app:app . .
USER app
EXPOSE 8000
# Nécessite un endpoint de santé : [À COMPLÉTER] le chemin
HEALTHCHECK --interval=30s --timeout=3s --retries=3 \
  CMD python -c "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/healthz/')"
# Forme exec : Gunicorn est le PID 1 et reçoit SIGTERM directement
CMD ["gunicorn", "config.wsgi:application", "--bind", "0.0.0.0:8000", "--workers", "3"]

Le worker Celery réutilise la même image dans docker-compose.yml, seule la directive command change.

Question avant de continuer

Servez-vous les fichiers statiques avec WhiteNoise ou via un nginx séparé ? Cela décide si collectstatic s’exécute au build ou au démarrage…

Informations clés

Catégorie
Programmation et développement · DevOps
Type de résultat
Code
Niveau
Intermédiaire
Conçu pour
ChatGPT, Claude, Gemini et Microsoft Copilot
Vérifié sur
En attente de vérification éditoriale
Variables
Stack et démarrage, Services nécessaires, Environnement cible et Architecture CPU
Langue
Français
Prix
Gratuit, sans inscription
Mis à jour
07/11/2026

Questions fréquentes

Quel est l’intérêt d’un Dockerfile multi-étapes ?

Il sépare la compilation de l’exécution : l’image finale ne contient que le nécessaire pour faire tourner l’application, elle est donc plus légère et moins exposée.

Pourquoi ne pas exécuter le conteneur en root ?

Si une faille de l’application est exploitée, un utilisateur sans privilèges limite ce que l’attaquant peut faire dans le conteneur et réduit le risque d’atteindre l’hôte.

depends_on garantit-il que la base est prête ?

Seulement avec `condition: service_healthy` et un vrai healthcheck sur la base. Sans cela, Compose attend uniquement le démarrage du conteneur.

À quoi sert ce prompt ?

Créez un Dockerfile multi-étapes sûr et léger et un docker-compose avec base de données, cache et worker : utilisateur non root, healthchecks, volumes et secrets hors de l’image.

Avec quels outils d'IA fonctionne-t-il ?

Il est conçu pour ChatGPT, Claude, Gemini et Microsoft Copilot. Nous ne l'avons pas encore vérifié sur ces outils ; les résultats peuvent donc varier de l'un à l'autre.

Comment personnaliser le prompt ?

Cliquez sur « Personnaliser » et remplissez les variables (Stack et démarrage, Services nécessaires, Environnement cible et Architecture CPU). Le texte se met à jour instantanément et vous pouvez ensuite le copier en un clic. Les valeurs sont stockées uniquement dans votre navigateur.

Faut-il de l'expérience pour l'utiliser ?

Il est de niveau intermédiaire : il vaut mieux connaître le sujet pour fournir un bon contexte et relire le résultat d'un œil critique.

Ce prompt est-il gratuit ?

Oui. Tous les prompts de HomeCasa Prompts sont gratuits, sans inscription ni abonnement. Vous pouvez aussi les utiliser dans des projets professionnels.

Puis-je me fier au résultat de l'IA ?

Considérez-le comme un brouillon de qualité : vérifiez toujours les données, les chiffres et les affirmations importantes avant de publier ou de prendre des décisions.

Prompts similaires