1000 Outils

Générateur de Dockerfile

Créez un Dockerfile professionnel adapté à votre stack technique en quelques clics. Choisissez parmi Node.js, Python, PHP, Go ou Java, configurez la version, le port et les variables d'environnement. Notre générateur produit un Dockerfile avec build multi-étapes pour des images légères en production, accompagné d'un .dockerignore adapté.

Dockerfile

# Étape de build
FROM node:20-alpine AS builder
WORKDIR /app

COPY package*.json .
RUN npm ci --only=production

COPY . .
RUN npm run build

# Étape de production
FROM node:20-alpine
WORKDIR /app
COPY --from=builder /app/package*.json .
RUN npm ci --only=production
COPY --from=builder /app/dist ./dist

EXPOSE 3000

CMD ["node", "dist/index.js"]

.dockerignore

node_modules
.git
.gitignore
*.md
.env
.env.*
docker-compose*.yml
Dockerfile*
.dockerignore
.vscode
.idea
dist
coverage
.next
.nuxt

Qu'est-ce qu'un Dockerfile et pourquoi l'optimiser ?

Un Dockerfile est un fichier texte contenant les instructions pour construire une image Docker. Chaque instruction (FROM, RUN, COPY) crée une couche dans l'image. Un Dockerfile mal optimisé produit des images volumineuses, lentes à construire et à télécharger. Les bonnes pratiques incluent l'utilisation d'images Alpine légères, les builds multi-étapes pour séparer la compilation du runtime, la minimisation des couches et l'ordre des instructions pour maximiser le cache Docker.

Le build multi-étapes (multi-stage)

Le build multi-étapes utilise plusieurs instructions FROM dans un seul Dockerfile. La première étape (builder) contient tous les outils de compilation et produit l'artefact final. La seconde étape copie uniquement cet artefact dans une image minimale. Pour Go, cela permet de passer d'une image de 1 Go (SDK complet) à moins de 20 Mo (binaire statique sur Alpine). Pour Node.js, on exclut les devDependencies. C'est la technique la plus efficace pour réduire la taille des images en production.

L'importance du .dockerignore

Le fichier .dockerignore fonctionne comme .gitignore : il exclut des fichiers du contexte de build Docker. Sans lui, Docker copie tout le répertoire (y compris node_modules, .git, .env) dans le contexte, ce qui ralentit le build et peut inclure des fichiers sensibles dans l'image. Un bon .dockerignore exclut les dépendances locales, les fichiers de version control, les variables d'environnement, la documentation et les fichiers de configuration IDE.

Questions fréquentes

Outils similaires