Isang Gabay ng Baguhan sa isang Multistage Docker Build

Isang Gabay Ng Baguhan Sa Isang Multistage Docker Build



Ang multi-stage build ng Docker ay ang proseso ng pagtukoy ng isang serye ng mga build sa isang Dockerfile. Sa madaling salita, ang Dockerfile ay naglalaman ng maramihang ' MULA SA ” na mga pahayag sa iisang file, at ang bagong mula sa pahayag ay gumagamit ng iba o nakaraang mga baseng tagubilin. Ang multistage build ay nagbibigay-daan sa mga developer na hatiin ang proseso ng pagbuo sa multistage. Bukod dito, ang batayang pagtuturo ay tinutukoy bilang mga tagubilin sa pag-install o pag-setup, at ang iba pang mga tagubilin ay gumagamit ng mga dependency ng batayang pagtuturo upang gumana nang maayos.

Ang write-up na ito ay magbibigay ng gabay sa isang multistage na Docker build.

Isang Gabay ng Baguhan sa isang Multistage Docker Build

Upang makalikha ng Docker na imahe sa pamamagitan ng simpleng Dockerfile, at multistage Dockerfile build, tingnan ang mga nakalistang pamamaraan:







Paano Gumawa ng Simpleng Imahe ng Docker?

Upang lumikha ng isang simpleng imahe ng Docker gamit ang isang simpleng Dockerfile, pumunta sa mga ibinigay na tagubilin.



Hakbang 1: Buksan ang Terminal
Mula sa Windows ' Magsimula ” menu, buksan ang Git terminal:







Hakbang 2: Gumawa ng Bagong Direktoryo
Susunod, lumikha ng isang bagong direktoryo ng proyekto gamit ang ibinigay na utos:

$ mkdir Multistage



Pagkatapos nito, buksan ang direktoryo ng proyekto sa tulong ng ' cd ” utos:

$ cd Multistage

Hakbang 3: Lumikha ng File ng Programa
Lumikha at magbukas ng bagong file ng programa upang ipatupad ang ' golang ” programa. Halimbawa, lumikha kami ng ' main.go ” file:

$ nano main.go

Idikit ang ibinigay na code sa “ main.go ” file. Ang program na ito ay magpi-print ng simpleng output ' Kamusta! Maligayang pagdating sa LinuxHint Tutorial ” sa lokal na host:

angkat (
'fmt'
'log'
'net/http'
)

func handler ( w http . ResponseWriter , r * http. Kahilingan ) {
fmt . Fprintf ( sa , 'Hello! Welcome sa LinuxHint Tutorial' )
}
func pangunahing () {
http . HandleFunc ( '/' , handler )
log . Nakamamatay ( http . ListenAndServe ( '0.0.0.0:8080' , wala ))
}

Pindutin ang ' CTRL+O ” para i-save ang mga pagbabago at “ CTRL+X ' para lumabas.

Hakbang 4: Lumikha ng DockerFile
Lumikha at magbukas ng bagong Dockerfile sa Nano text editor gamit ang ' nano Dockerfile ” utos:

$ nano Dockerfile

Idikit ang sumusunod na code sa loob ng “ Dockerfile ” na magtuturo sa container kung paano i-deploy ang proyekto:

MULA sa golang: 1.8
WORKDIR / pumunta ka / src / app
Kopyahin ang main.go .
RUN go build -O webserver .

CMD [ './webserver' ]

Pindutin ang ' CTRL+O ” para i-save ang file at “ CTRL+X ” upang lumabas sa editor:

Hakbang 5: Lumikha ng Larawan ng Docker
Sa tulong ng Dockerfile, lumikha ng bagong imahe ng Docker sa pamamagitan ng “ pagtatayo ng docker ” utos. Ang ' -t Ang tag na ” ay ginagamit upang tukuyin ang tag/pangalan ng larawan:

$ pagtatayo ng docker -t bagong-web-image .

Hakbang 6: Patakbuhin ang Docker Image
Matapos gawin ang imahe ng Docker, gamitin ang nabanggit na command sa ibaba upang patakbuhin ang imahe ng Docker. Ang ' -p 'Ang opsyon ay ginagamit upang tukuyin ang numero ng port kung saan ipapatupad ng Docker container ang programa:

$ tumakbo sa pantalan -p 8080 : 8080 bagong-web-image

Pagkatapos nito, mag-navigate sa ' http://localhost:8080 ” para tingnan kung tumatakbo ang application o hindi:

Mula sa output sa itaas, makikita mo na matagumpay naming nai-deploy ang application sa localhost:

Hakbang 7: Suriin ang Mga Larawan ng Docker
Panghuli, isagawa ang ' mga docker na larawan ” utos upang suriin ang karagdagang impormasyon tungkol sa bagong likhang imahe ng Docker:

$ mga larawan ng docker new-web-image

Mapapansin na ang laki ng imahe ng Docker ay masyadong malaki upang maisagawa ang maliit na proyekto. Sa ganitong sitwasyon, ang multi-stage build ay maaaring gamitin upang bawasan ang laki ng imahe ng Docker:

Paano Gumawa ng Imahe ng Docker Mula sa Multistage Dockerfile?

Upang lumikha ng isang multistage na Dockerfile upang hatiin ang mga proseso ng pagbuo sa mga yugto at upang bawasan ang laki ng imahe, tingnan ang mga ibinigay na hakbang.

Hakbang 1: Buksan ang Dockerfile
Una, buksan ang Dockerfile sa ' Nano text editor ” sa pamamagitan ng nabanggit na utos:

$ nano Dockerfile

Hakbang 2: Lumikha ng Multistage Dockerfile
I-paste ang sumusunod na code sa Dockerfile. Mapapansin na ang Docker file ay naglalaman ng higit sa isang ' MULA SA ” na pahayag, na nangangahulugang lumilikha kami ng isang multi-stage na Dockerfile:

MULA sa golang: 1.8 AS base
WORKDIR / pumunta ka / src / app
Kopyahin ang main.go .
RUN go build -O webserver .

MULA sa alpine
WORKDIR / app
KOPYA --mula sa =base / pumunta ka / src / app / app /
CMD [ './webserver' ]

Pindutin ang ' CTRL+O ” para i-save ang mga pagbabago at “ CTRL+X ” para lumabas sa editor.

Hakbang 3: Lumikha ng Larawan ng Docker
Ngayon, buuin ang bagong imahe ng Docker sa tulong ng isang multistage na build. Para sa layuning ito, isagawa ang ibinigay na utos:

$ pagtatayo ng docker -t bagong-web-image .

Muli, suriin ang karagdagang impormasyon tungkol sa imahe ng Docker sa pamamagitan ng ' mga larawan ng docker ” utos:

$ mga larawan ng docker new-web-image

Ang output ay nagpapakita na kami ay matagumpay na nakagawa ng isang docker file at ang laki ng Docker file ay nabawasan lamang sa ' 12.9MB ”:

Hakbang 4: Patakbuhin ang Docker Image
Panghuli, patakbuhin ang imahe ng Docker upang maisagawa ang lalagyan upang ma-verify kung gumagana nang maayos ang imahe ng Docker o hindi:

$ tumakbo sa pantalan -p 8080 : 8080 bagong-web-image

Buksan ang lokal na host server sa pamamagitan ng pag-navigate sa “ http://localhost:8080 ” sa browser:

Ipinapakita ng output na matagumpay naming nai-deploy ang program sa pamamagitan ng multistage build.

Konklusyon

Tinutukoy ng Docker multistage build ang serye ng mga build sa mga yugto. Upang lumikha ng isang multistage Dockerfile, tukuyin ang higit sa isang 'MULA' na pahayag at sumangguni sa unang ' MULA SA ” pahayag bilang base build. Pagkatapos nito, lumikha ng isang bagong imahe ng Docker gamit ang ' docker build -t . ” utos. Ang post ay nagpaliwanag ng kumpletong gabay sa isang multistage na Docker build.