Einführung
Docker Multi-stage Build ist eine Funktion, mit der du mehrere Phasen (Stages) in einem Dockerfile verwenden kannst, um ein finales Docker-Image zu erstellen. In dieser Challenge lernst du, wie du Docker Multi-stage Build einsetzt, um ein kleineres und effizienteres Docker-Image zu erstellen.
Erstellen eines Dockerfile mit Multi-stage Build
In diesem Abschnitt erstellst du ein Dockerfile, das einen Multi-stage Build verwendet.
Aufgaben
- Erstelle ein neues
Dockerfilemit zwei Phasen. Die erste Phase baut die Anwendung, indem sie die erforderlichen Abhängigkeiten installiert und das Build-Skript ausführt. Die zweite Phase erstellt das finale Image, indem sie den kompilierten Code aus der ersten Phase kopiert, nur die Produktionsabhängigkeiten installiert und den notwendigen Port freigibt.
Beispiel
Hier ist ein Beispiel für die Schritte, die du durchführen wirst:
Erstelle ein neues Verzeichnis namens
myappund wechsle hinein.mkdir myapp cd myappLade den NodeJS-Quellcode von
https://github.com/labex-labs/nodejs-example.githerunter.git clone https://github.com/labex-labs/nodejs-example.gitVerschiebe den heruntergeladenen Code in das
myapp-Verzeichnis.mv nodejs-example/* . rm -rf nodejs-exampleErstelle eine neue Datei namens
Dockerfileimmyapp-Verzeichnis mit folgendem Inhalt:## 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" ]
Anforderungen
Um diese Challenge abzuschließen, musst du:
- Ein Verzeichnis namens
myappim Verzeichnis/home/labex/projecterstellen. - Den NodeJS-Quellcode in das
myapp-Verzeichnis klonen. - Ein
Dockerfileimmyapp-Verzeichnis mit dem angegebenen Inhalt erstellen.
Erstellen eines Docker-Images
In diesem Schritt erstellst du ein Image unter Verwendung des Dockerfile.
Aufgaben
- Erstelle ein neues Image namens
myapp.
Beispiel
Hier ist ein Beispiel für das, was du erreichen solltest:
Verwende den Befehl
docker build, um ein neues Image namensmyappzu erstellen.docker build -t myapp .Überprüfe mit
docker images, ob das Image erfolgreich erstellt wurde.
Anforderungen
Um diese Challenge abzuschließen, musst du:
- Den Befehl
docker buildim Verzeichnis/home/labex/project/myappausführen. - Das Image
myappnennen.
Ausführen eines Docker-Containers
In diesem Schritt verwendest du das Docker-Image, um einen Container auszuführen.
Aufgaben
- Verwende das
myapp-Image, um einen Container zu starten. Der Container sollte den Port3000des Containers auf den Port3030des Hosts weiterleiten, damit du die Anwendung in deinem Browser aufrufen kannst.
Beispiel
Hier ist ein Beispiel für das, was du erreichen solltest:
Starte einen neuen Docker-Container namens
my-app.docker run --name my-app -p 3030:3000 myappÖffne einen Webbrowser und navigiere zu
http://localhost:3030, um auf die laufende Anwendung zuzugreifen.
Anforderungen
Um diese Challenge abzuschließen, musst du:
- Den Container mit dem Namen
my-appausführen. - Den Port
3000innerhalb des Containers auf den Port3030auf dem Host mappen.
Zusammenfassung
In dieser Challenge hast du gelernt, wie man Docker Multi-stage Build verwendet, um ein kleineres und effizienteres Docker-Image zu erstellen. Durch die Verwendung mehrerer Phasen in einem Dockerfile kannst du Build- und Laufzeitumgebungen trennen und die Größe des finalen Docker-Images reduzieren. Mit diesem Wissen kannst du nun beginnen, deine eigenen Docker-Images mithilfe von Multi-stage Builds zu erstellen.



