Forstå Docker Multistage Builds

Forstå Docker Multistage Builds
Multi-trinns bygg i Docker spesifiserer en serie bygg i en Dockerfile. DockerFile -instruksjoner er delt inn i flere seksjoner eller nivåer og inneholder mer enn en "FRA”Uttalelse. I flerstegbygget er utviklingsprosessen delt opp i flerstadier. Den første "fra" -kommandoen definerer foreldre- eller basebildet, og denne delen inneholder for det meste installasjons- eller installasjonsinstruksjoner, og underavsnitt bruker avhengighetene til baseinstruksjon.

Dette innlegget vil demonstrere det grunnleggende konseptet med multistage docker build.

Forskjell mellom enkel bygg og flerstegbygg

Enkelt bygg inneholder bare en “FRA”For å spesifisere basisbildet. Alle installasjonsavhengighetene og kildefilene blir behandlet i en enkelt seksjon. Bildet bygget gjennom den enkle bygningen er også enormt i størrelse. Imidlertid er flerstegbygg delt inn i flere stadier og har flere "fra" -uttalelser. Flerstegbygget er også nyttig for å redusere bildestørrelsen. Det kan også brukes hvis brukere ønsker å behandle eller lage bilder i biter for å utføre kode i seksjoner.

Hvordan lage et bilde fra flerstegbygg?

For å lage et enkelt Docker-bilde fra flerstegbygg, lager du først et flernivå dockerfile. Deretter utføre "bygge”Kommando av Docker for å bygge bildet. For å gjøre det, se på de gitte trinnene.

Trinn 1: Åpen terminal

Først må du starte terminalen fra startmenyen for å bruke Docker CLI. For å gjøre det, vil vi bruke "Git bash”På Windows:

Åpne applikasjonskatalogen/mappen ved hjelp av "CD”Kommando:

$ CD Multistage

Trinn 2: Opprett kodefil

Neste, opprette en programfil. For dette formålet har vi brukt Nano Text Editor for å lage en “hoved-.gå”Programfil. Du kan imidlertid også bruke Notisblokk eller Visual Studio Code Editor:

$ nano main.gå

Lim inn den gitte koden nedenfor i filen:

import (
"FMT"
"Logg"
"Nett/http"
)
Funchandler (W http.ResponseWriter, R *http.Be om)
fmt.Fprintf (w, "Hei! Velkommen til Linuxhint Tutorial ")

FUNCMAIN ()
http.HandleFunc ("/", handler)
Logg.Fatal (http.Listenandserve ("0.0.0.0: 8080 ", null))

Trinn 3: Lag multistage dockerfile

Deretter genererer du og åpner “Dockerfile”I en Nano -tekstredigerer for å spesifisere multistage -instruksjonene for multistage build:

$ nano dockerfile

Kopier utdraget i DockerFile. Her er dockerfile -instruksjoner delt inn i to seksjoner:

  • Den første delen bruker "Golang: 1.8”Som et basisbilde og inneholder de grunnleggende instruksjonene.
  • Den andre delen bruker "Alpine”Bilde og definerer standardverdiene eller inngangspunktet gjennom“ CMD ”-uttalelsen:
Fra Golang: 1.8 som base
Workdir/go/src/app
Kopier Main.gå .
Run Go Build -o Webserver .
Fra alpine
WorkDir /App
Kopier -fra = base/go/src/app/app/
Cmd ["./Internett server"]

Trinn 4: Generer multistage Docker -bilde

Ved hjelp av en multistage dockerfile, generer du bildet gjennom "Docker Build”Kommando. Her, for å definere taggen/navnet på et bilde, har vi brukt "-t" flagg:

$ docker build -t new-web-image .

Bekreft om bildet er opprettet eller ikke ved å bruke "Docker -bilder ”Kommando:

$ docker bilder new-web-image

Utgangen nedenfor viser at bildet opprettes og størrelsen på bildet bare er "12.9MB”:

Trinn 4: Kjør Docker -bilde

For å utføre bildet for å opprette og starte en container for programdistribusjon, gå gjennom den nevnte kommandoen. Her, "-p”Flagget brukes til å tildele beholderens utsatte port:

$ Docker Run -P 8080: 8080 New-Web-Image

Besøk eksponeringsporten til den lokale verten i nettleseren for å sjekke om beholderen er startet eller ikke:

Fra bildet over kan det være klart at vi har distribuert programmet gjennom multistage build.

Konklusjon

I flerstegbygget er utviklingsprosessen delt opp i flerstadier. Dockerfile er delt inn i flere seksjoner og har flere “FRA”Uttalelser. Det kan brukes hvis brukere ønsker å behandle eller lage bilder i biter for å utføre kode i seksjoner. Flerstegbygget er også nyttig for å redusere bildestørrelsen. Denne artikkelen har vist den grunnleggende forståelsen av Docker Multistage Builds.