Zrozumienie wielostopniowych kompilacji Docker

Zrozumienie wielostopniowych kompilacji Docker
Wielostopniowa kompilacja w Docker określa serię kompilacji w Dockerfile. Instrukcje Dockerfile są podzielone na wiele sekcji lub poziomów i zawierają więcej niż jeden „Z" oświadczenie. W wielostopniowej kompilacji proces rozwoju jest podzielony na wieloetapowe. Pierwsze polecenie „z” określa obraz nadrzędny lub podstawowy, a niniejsza sekcja zawiera głównie instrukcje instalacji lub konfiguracji, a podsekcje używają zależności instrukcji podstawowej.

Ten post pokaże podstawową koncepcję wielostopniowej kompilacji Docker.

Różnica między prostą budową a wieloetapową kompilacją

Prosta kompilacja zawiera tylko jedną „Z”Aby określić obraz podstawowy. Wszystkie zależności instalacyjne i pliki źródłowe są przetwarzane w jednej sekcji. Obraz zbudowany przez prostą kompilację jest również ogromny. Jednak wielostopniowe kompilacje są podzielone na wielokrotnie i mają wiele instrukcji „z”. Wielowarstwowa kompilacja jest również pomocna w zmniejszaniu rozmiaru obrazu. Można go również wykorzystać, jeśli użytkownicy chcą przetwarzać lub tworzyć obrazy w fragmentach, aby wykonywać kod w sekcjach.

Jak zrobić obraz z wieloetapowych kompilacji?

Aby zrobić prosty obraz dokera z wieloetapowych kompilacji, najpierw utwórz wielopoziomowy plik dokujący. Następnie wykonaj „zbudować„Polecenie Dockera do zbudowania obrazu. Aby to zrobić, spójrz na podane kroki.

Krok 1: Otwarty terminal

Najpierw uruchom terminal z menu Start, aby użyć Docker CLI. Za to wykorzystamy „Git Bash”W systemie Windows:

Otwórz katalog/folder aplikacji za pomocą „płyta CD" Komenda:

$ CD wielopiętrowy

Krok 2: Utwórz plik kodu

Następnie utwórz plik programu. W tym celu wykorzystaliśmy nano edytor tekstu do utworzenia „główny.Iść" plik programu. Możesz jednak użyć Edytora kodu Notate lub Visual Studio Code:

$ nano main.Iść

Wklej poniżej przekazany kod do pliku:

import (
„FMT”
"dziennik"
„net/http”
)
Funchandler (w http.ResponseWriter, r *http.Wniosek)
fmt.Fprintf (w, „Witam! Witamy w samouczku Linuxhint ”)

funcMain ()
http.Hevingfunc („/”, obsługa)
dziennik.Fatalny (HTTP.Słuchaj i serwera ("0.0.0.0: 8080 ", zero))

Krok 3: Utwórz wieloetapowe pliki dokerowe

Następnie generuj i otwórz ”Dockerfile„W edytorze tekstu Nano, aby określić wieloetapowe instrukcje dla wielostopniowej kompilacji:

$ Nano Dockerfile

Skopiuj poniższy fragment do DockerFile. Tutaj instrukcje Dockerfile są podzielone na dwie sekcje:

  • Pierwsza sekcja używa „Golang: 1.8”Jako obraz podstawowy i zawiera podstawowe instrukcje.
  • Druga sekcja wykorzystuje „alpejski”Obraz i definiuje wartość domyślną lub punkt wprowadzania za pośrednictwem instrukcji„ CMD ”:
Od Golang: 1.8 jako podstawa
WorkDir/Go/Src/App
Kopiuj główny.Iść .
RUN GO BUDLE -O WEBSERVER .
Z alpejskiego
WorkDir /App
Kopiuj - -from = base/go/src/app/app/app/
CMD [”./serwer internetowy"]

Krok 4: Wygeneruj wieloetapowy obraz Docker

Korzystając z wieloetapowego pliku dokera, wygeneruj obraz przez „Docker Build" Komenda. Tutaj, aby zdefiniować tag/nazwę obrazu, wykorzystaliśmy „-T" flaga:

$ Docker Build -t New-Web-Image .

Sprawdź, czy obraz jest tworzony, czy nie, używając „Obrazy dokera " Komenda:

$ Docker Images New-Web-Imagage

Poniższe wyjście pokazuje, że obraz jest tworzony, a rozmiar obrazu jest tylko „12.9 MB”:

Krok 4: Uruchom obraz Docker

Aby wykonać obraz, aby utworzyć i uruchomić kontener do wdrożenia programu, przejdź przez wspomniane polecenie. Tutaj "-P„Flaga jest wykorzystywana do przydzielenia odsłoniętego portu kontenera:

$ Docker Run -p 8080: 8080 New-Web-Imagage

Odwiedź port eksponujący lokalnego hosta w przeglądarce, aby sprawdzić, czy kontener jest uruchomiony, czy nie:

Z powyższego obrazu może być oczywiste, że wdrożyliśmy program za pośrednictwem wielostopniowej kompilacji.

Wniosek

W wielostopniowej kompilacji proces rozwoju jest podzielony na wieloetapowe. Plik dokujący jest podzielony na wiele sekcji i ma wiele „Z" sprawozdania. Można go wykorzystać, jeśli użytkownicy chcą przetwarzać lub tworzyć obrazy w fragmentach, aby wykonywać kod w sekcjach. Wielowarstwowa kompilacja jest również pomocna w zmniejszaniu rozmiaru obrazu. W tym artykule pokazano podstawowe zrozumienie wielostopniowych kompilacji Docker.