Le Dockerfile Generator
À quoi sert cet écran
Le formulaire qui produit le Dockerfile : image de base, répertoire de travail, étapes de dépendances et de build, ports exposés et commande exécutée par le conteneur.
Avant de commencer
| Pour faire ceci | Il vous faut |
|---|---|
| Utiliser le générateur | la permission de lecture Dockerfile de local-env |
Ouvrir l’écran
Build › Image Builder, ou ouvrez un modèle depuis Tools › Templates Library.
Le Dockerfile Generator offre un contrôle complet sur la création de votre Dockerfile grâce à une interface de formulaire intuitive avec aperçu en direct. Que vous commenciez à partir de zéro ou d’un modèle, vous pouvez personnaliser tous les aspects.
📸 Capture d’ecran : Le générateur avec un formulaire complété et sa sortie. Repères : (1) l’image de base, (2) les étapes de dépendances, (3) les étapes de build, (4) la commande d’exécution, (5) le Dockerfile généré.
Disposition de l’interface
L’interface est divisée en deux panneaux :
┌────────────────────────────────────────────────────────────────────┐
│ │ │
│ Formulaire de configuration │ Aperçu Dockerfile │
│ │ │
│ - Base Image │ FROM node:20 │
│ - Environment Vars │ WORKDIR /app │
│ - Labels │ COPY package.json ./ │
│ - Working Directory │ RUN npm install │
│ - Files │ EXPOSE 3000 │
│ - Run Commands │ CMD ["npm", "start"] │
│ - User │ │
│ - Args │ │
│ - Volume │ │
│ - Port │ │
│ - Entrypoint │ │
│ - CMD │ │
│ │ │
│ [Valider le Dockerfile] │ │
└────────────────────────────────────┴───────────────────────────────┘
Options de configuration
Chaque section du formulaire correspond à une directive Dockerfile :
| Section | Directive | Requis | Description |
|---|---|---|---|
| Base Image | FROM |
Oui | L’image parent de votre conteneur |
| Environment Variables | ENV |
Non | Définir les variables d’environnement du conteneur |
| Labels | LABEL |
Non | Ajouter des métadonnées à votre image |
| Working Directory | WORKDIR |
Non | Définir le répertoire de travail pour les instructions |
| Files | COPY |
Non | Copier des fichiers de l’hôte vers le conteneur |
| Run Commands | RUN |
Non | Exécuter des commandes lors de la construction |
| User | USER |
Non | Définir l’utilisateur pour exécuter le conteneur |
| Arguments | ARG |
Non | Définir les variables au moment de la construction |
| Volume | VOLUME |
Non | Créer un point de montage pour les volumes externes |
| Port | EXPOSE |
Non | Exposer les ports du conteneur |
| Entrypoint | ENTRYPOINT |
Non | Configurer le point d’entrée du conteneur |
| CMD | CMD |
Non | Commande par défaut au démarrage du conteneur |
Créer un Dockerfile
Base Image
Saisissez l’image parent (ex. node:20, python:3.11-slim, golang:1.21). Utilisez des tags de version spécifiques au lieu de latest pour des builds reproductibles. Envisagez les variantes slim/alpine pour des images plus petites.
Environment Variables
Ajoutez des paires clé-valeur via le bouton ”+ Add Environment Variable” (ex. NODE_ENV = production).
Labels
Ajoutez des métadonnées en paires clé-valeur via ”+ Add Label” (ex. maintainer = team@example.com).
Working Directory
Définissez le répertoire d’exécution des commandes suivantes (ex. /app).
Files (COPY)
Ajoutez des instructions de copie via ”+ Add File” :
| Champ | Description | Exemple |
|---|---|---|
| Host Path | Chemin source dans le contexte de construction | package.json |
| Container Path | Chemin de destination dans le conteneur | ./ |
| Option | Flags COPY optionnels | --chown=1000 |
Conseil : Copiez d’abord les fichiers de dépendances (package.json), puis le code source (.), pour exploiter la mise en cache des couches Docker.
Run Commands
Ajoutez des commandes de construction via ”+ Add Run Command” (ex. npm install). Enchaînez les commandes connexes avec && pour réduire les couches. Nettoyez les fichiers temporaires dans la même instruction RUN.
Options restantes
| Champ | Notes | Exemple |
|---|---|---|
| Args | Variables au moment de la construction | VERSION=1.0.0 |
| User | Exécuter en tant que non-root pour la sécurité | node, 1000 |
| Volume | Point de montage des données persistantes | /data |
| Port | Port écouté par votre application | 3000 |
| Entrypoint | Point d’entrée du conteneur (format tableau JSON) | "node", "server.js" |
| CMD | Commande par défaut (format tableau JSON) | "npm", "start" |
Panneau d’aperçu en direct
Le panneau de droite se met à jour en temps réel à mesure que vous remplissez le formulaire.
Réorganisation des instructions
Glissez-déposez pour réorganiser les instructions et optimiser la mise en cache des couches. Directives réorganisables : LABEL, WORKDIR, USER, RUN, COPY. L’instruction FROM doit toujours rester en première position.
Conseil : Complétez d’abord tous les champs du formulaire, puis réorganisez si nécessaire.
Validation et analyse
- Vérifiez votre Dockerfile dans le panneau d’aperçu
- Cliquez sur “Validate Dockerfile”
- Un workflow GitHub Actions construit l’image et l’analyse avec Trivy
Résultats de l’analyse
| Statut | Signification |
|---|---|
| Validated | Aucune vulnérabilité critique, sûr à utiliser |
| Not Validated | Vulnérabilités trouvées nécessitant attention |
| Scan Failed | L’analyse n’a pas pu se terminer (vérifiez la configuration) |
Actions disponibles : Download Dockerfile, View Detailed Report, Cancel Scan.
Télécharger votre Dockerfile
Après la validation, cliquez sur “Download Dockerfile” dans le dialogue de résultats. Le fichier se télécharge sous le nom Dockerfile.
Scénario
Obtenir une image qui démarre, puis une image légère.
- Réglez d’abord l’image de base. Tout ce qui suit — gestionnaire de paquets disponible, shell, versions de bibliothèques — en découle, et la changer ensuite invalide l’essentiel de votre saisie.
- Renseignez les étapes de dépendances et de build dans l’ordre d’exécution. Le générateur les écrit dans l’ordre donné ; il ne raisonne pas sur le cache à votre place.
- Réglez les ports exposés sur ce que l’application écoute réellement, pas sur ce que vous prévoyez qu’elle écoute plus tard.
- Générez et construisez localement. C’est le premier moment où quoi que ce soit est vérifié : le formulaire ne compile pas.
- Une fois que cela démarre, revoyez l’ordre des couches. Dépendances avant sources : c’est ce qui rend les reconstructions rapides, et c’est le changement au plus fort effet.
- Analysez l’image — voir Analyse de sécurité.
En cas de problème
| Symptôme | Cause | Comment vérifier | Solution |
|---|---|---|---|
| Le build échoue sur un paquet absent | L’image de base ne le contient pas | L’image de base | Ajoutez une étape d’installation, ou choisissez une base plus complète |
| Les reconstructions sont lentes | Les sources sont copiées avant les dépendances | L’ordre des étapes | Placez les dépendances en premier |
| Le conteneur démarre puis s’arrête | La commande est erronée ou non persistante | Le champ de commande | Pointez-la vers le processus qui reste actif |
| Le port est ouvert mais rien ne répond | Le port exposé diffère de celui écouté | La configuration applicative | Alignez-les |
Pour aller plus loin
- Analyse de sécurité — avant l’arrivée en environnement