Generateur Dockerfile
Dockerfile En Ligne
Docker Multi-Stage
Docker Devops
Conteneur Docker
Dockerfile Nodejs Php Python
Outil En Ligne De Generation De Dockerfile
Créez votre Dockerfile complet en ligne : choisissez le runtime (Node.js, PHP, Python, Go, Java…), activez le multi-stage build, configurez les variables d'environnement, HEALTHCHECK, ARG, volumes, utilisateur non-root et labels OCI. Export et téléchargement en un clic.
Générateur de Dockerfile
🏗️ Image de base
📁 Configuration projet
🔨 Type de build
Sépare l'étape de build de l'image finale (image plus petite)
📦 Dépendances
Copie les fichiers de dépendances avant le code source
--production, --no-dev, etc.
⚙️ Variables d'environnement
🔑 Arguments de build (ARG)
🔒 Sécurité
Évite d'exécuter l'app en tant que root
--read-only au runtime (commentaire dans le Dockerfile)
💾 Volumes
❤️ Healthcheck
🏷️ Labels OCI / Docker
org.opencontainers.image.*
▶️ Commandes de démarrage
Dockerfile généré
Pourquoi un Dockerfile ?
Un Dockerfile est un fichier texte qui décrit comment construire une image Docker. Il permet de reproduire un environnement identique partout : développement, CI/CD, production.
- ✅ Reproductibilité : même image sur toutes les machines
- ✅ Versioning : le Dockerfile vit avec le code dans Git
- ✅ Automatisation : intégration CI/CD native
- ✅ Isolation : dépendances encapsulées dans le conteneur
Instructions essentielles
| Instruction | Rôle | Exemple |
|---|---|---|
FROM | Image de base | FROM node:20-alpine |
WORKDIR | Répertoire de travail | WORKDIR /app |
COPY | Copier des fichiers | COPY . . |
RUN | Exécuter une commande | RUN npm install |
ENV | Variable d'environnement | ENV NODE_ENV=production |
ARG | Argument de build | ARG VERSION=1.0 |
EXPOSE | Port documenté | EXPOSE 3000 |
VOLUME | Point de montage | VOLUME ["/data"] |
USER | Utilisateur d'exécution | USER appuser |
HEALTHCHECK | Vérification de santé | HEALTHCHECK CMD curl -f ... |
ENTRYPOINT | Point d'entrée fixe | ENTRYPOINT ["node"] |
CMD | Commande par défaut | CMD ["server.js"] |
LABEL | Métadonnées | LABEL version="1.0" |
Multi-stage build
Le multi-stage build permet de séparer l'étape de compilation de l'image finale, réduisant considérablement la taille de l'image.
# Étape 1 : build
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
# Étape 2 : image finale (légère)
FROM node:20-alpine
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
CMD ["node", "dist/server.js"]
Gain typique : une image Node.js avec builder peut passer de ~800 MB à ~120 MB en utilisant le multi-stage build avec Alpine.
Bonnes pratiques
- ✅ Une instruction par layer : ordonnez du moins au plus changeant
- ✅ Copier les fichiers de dépendances en premier (
package.json) pour profiter du cache - ✅ Ne jamais exécuter en root : créez un utilisateur dédié avec
USER - ✅ Utilisez des images Alpine ou Slim pour réduire la surface d'attaque
- ✅ Combinez les
RUNavec&&pour réduire le nombre de layers - ✅ Épinglez les versions (
node:20.11-alpine) pour des builds reproductibles - ✅ Utilisez
HEALTHCHECKen production pour l'orchestration
Rappel :
EXPOSE ne publie pas le port — c'est uniquement de la documentation. La publication se fait avec docker run -p 8080:3000.
.dockerignore
Créez un fichier .dockerignore à la racine pour exclure les fichiers inutiles du contexte de build et éviter de copier des secrets :
node_modules/
.git/
.env
.env.local
*.log
dist/
coverage/
.DS_Store
Thumbs.db
*.md
docker-compose*.yml
.github/
Questions fréquentes
Selectionnez l'image de base (Node.js, Python, PHP, Go, Java...), configurez le port d'exposition, le repertoire de travail, les variables d'environnement, les instructions COPY et RUN, puis activez les options avancees (multi-stage build, healthcheck, utilisateur non-root). Le Dockerfile est genere instantanement.
Un build multi-stage utilise plusieurs instructions FROM dans un seul Dockerfile pour separer la phase de compilation de l'image finale. Par exemple, compiler une application Go dans une image build et copier uniquement le binaire dans une image alpine minimale. Cela reduit significativement la taille de l'image de production.
Par defaut, les conteneurs Docker s'executent en tant que root, ce qui est un risque de securite si un attaquant compromet le conteneur. L'option utilisateur non-root ajoute les instructions "RUN addgroup" et "RUN adduser" puis "USER" pour executer l'application avec des privileges limites.
Le HEALTHCHECK permet a Docker de surveiller l'etat de sante du conteneur. L'outil genere automatiquement la directive HEALTHCHECK avec une commande curl ou wget adaptee a votre application, l'intervalle de verification, le timeout et le nombre de retries avant de marquer le conteneur comme "unhealthy".