Défi : Construction multi-étapes Docker

DockerIntermediate
Pratiquer maintenant

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 Dockerfile utilisant 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 :

  1. Créez un nouveau répertoire nommé myapp et placez-vous dedans.

    mkdir myapp
    cd myapp
    
  2. Téléchargez le code source NodeJS depuis https://github.com/labex-labs/nodejs-example.git.

    git clone https://github.com/labex-labs/nodejs-example.git
    

    Déplacez le code téléchargé dans le répertoire myapp.

    mv nodejs-example/* .
    rm -rf nodejs-example
    
  3. Créez un nouveau fichier nommé Dockerfile dans le répertoire myapp avec 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é myapp dans le répertoire /home/labex/project.
  • Cloner le code source NodeJS dans le répertoire myapp.
  • Créer un Dockerfile dans le répertoire myapp avec 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 :

  1. Utilisez la commande docker build pour construire une nouvelle image nommée myapp.

    docker build -t myapp .
    
  2. 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 build dans 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 myapp pour exécuter un conteneur. Le conteneur doit exposer le port 3000 du conteneur vers le port 3030 de l'hôte, puis accédez à l'application via votre navigateur.

Exemple

Voici un exemple de ce que vous devriez être capable d'accomplir :

  1. Démarrez un nouveau conteneur Docker nommé my-app.

    docker run --name my-app -p 3030:3000 myapp
    
  2. Ouvrez un navigateur web et accédez à http://localhost:3030 pour 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 port 3030 sur 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.

✨ Vérifier la solution et pratiquer✨ Vérifier la solution et pratiquer✨ Vérifier la solution et pratiquer