Générateur Dockerfile
Dockerfile En Ligne
Docker Multi-Stage
Docker Devops
Conteneur Docker
Dockerfile Nodejs Php Python
Outil En Ligne De Génération De Dockerfile
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é
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.
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/