Introduction
La construction multi-étapes (Multi-stage Build) de Docker est une fonctionnalité qui vous permet d'utiliser plusieurs étapes dans un Dockerfile pour générer une image Docker finale optimisée. Dans ce défi, vous apprendrez à utiliser cette technique pour créer une image Docker plus légère et plus efficace.
Créer un Dockerfile avec une construction multi-étapes
Dans cette section, vous allez créer un Dockerfile qui utilise une construction multi-étapes.
Tâches
- Créez un nouveau
Dockerfileutilisant deux étapes. La première étape construit l'application en installant les dépendances requises et en exécutant le script de build. La seconde étape crée l'image finale en copiant le code compilé depuis la première étape, en n'installant que les dépendances de production et en exposant le port nécessaire.
Exemple
Voici un exemple des étapes que vous allez suivre :
Créez un nouveau répertoire nommé
myappet placez-vous dedans.mkdir myapp cd myappTéléchargez le code source NodeJS depuis
https://github.com/labex-labs/nodejs-example.git.git clone https://github.com/labex-labs/nodejs-example.gitDéplacez le code téléchargé dans le répertoire
myapp.mv nodejs-example/* . rm -rf nodejs-exampleCréez un nouveau fichier nommé
Dockerfiledans le répertoiremyappavec le contenu suivant :## Stage 1: Build the application FROM node:14-alpine AS base WORKDIR /app COPY . ./ RUN npm install ## Stage 2: Create the final image FROM node:14-alpine WORKDIR /app COPY --from=base /app/ . EXPOSE 3000 CMD [ "npm", "start" ]
Prérequis
Pour terminer ce défi, vous devrez :
- Créer un répertoire nommé
myappdans le répertoire/home/labex/project. - Cloner le code source NodeJS dans le répertoire
myapp. - Créer un
Dockerfiledans le répertoiremyappavec le contenu spécifié.
Construire une image Docker
Dans cette étape, vous allez créer une image en utilisant le Dockerfile.
Tâches
- Construisez une nouvelle image nommée
myapp.
Exemple
Voici un exemple de ce que vous devriez être capable d'accomplir :
Utilisez la commande
docker buildpour construire une nouvelle image nomméemyapp.docker build -t myapp .Vérifiez que l'image a été construite avec succès en utilisant
docker images.
Prérequis
Pour terminer ce défi, vous devrez :
- Exécuter la commande
docker builddans le répertoire/home/labex/project/myapp. - Nommer l'image
myapp.
Exécuter un conteneur Docker
Dans cette étape, vous allez utiliser l'image Docker pour exécuter un conteneur.
Tâches
- Utilisez l'image
myapppour exécuter un conteneur. Le conteneur doit exposer le port3000du conteneur vers le port3030de l'hôte, puis accédez à l'application via votre navigateur.
Exemple
Voici un exemple de ce que vous devriez être capable d'accomplir :
Démarrez un nouveau conteneur Docker nommé
my-app.docker run --name my-app -p 3030:3000 myappOuvrez un navigateur web et accédez à
http://localhost:3030pour accéder à l'application en cours d'exécution.
Prérequis
Pour terminer ce défi, vous devrez :
- Exécuter le conteneur avec le nom
my-app. - Mapper le port
3000à l'intérieur du conteneur vers le port3030sur l'hôte.
Résumé
Dans ce défi, vous avez appris à utiliser la construction multi-étapes Docker pour créer une image Docker plus petite et plus efficace. En utilisant plusieurs étapes dans un Dockerfile, vous pouvez séparer les environnements de construction et d'exécution, et réduire la taille de l'image Docker finale. Grâce à ces connaissances, vous pouvez désormais commencer à construire vos propres images Docker en utilisant la construction multi-étapes.



