Zvirinani kunonoka pane kusamboita. Kana kuti isu takapotsa taita chikanganiso chakakomba nekusave nerutsigiro rwenguva dzose Dockerfiles kuvaka mifananidzo yekushandisa.
Tichataura nezvazvo
- unganidza uye buritsa mifananidzo,
- tumira zvikumbiro muKubernetes,
- bvisa mifananidzo isina kushandiswa uchishandisa yakakosha marongero.
Huzivi hwepurojekiti ndeyekuunganidza maturusi epasi-chikamu mune imwechete yakabatana system inopa DevOps mainjiniya kutonga pamusoro pekushandisa. Kana zvichibvira, zviripo zvinoshandiswa (seHelm neDocker) zvinofanira kushandiswa. Kana pasina mhinduro kune dambudziko, tinogona kugadzira uye kutsigira zvese zvinodiwa kune izvi.
Kumashure: yako wega mufananidzo muunganidzi
Izvi ndizvo zvakaitika nemuunganidzi wemufananidzo muwerf: yakajairika Dockerfile yakanga isina kutikwanira. Kana iwe ukatarisa nekukurumidza nhoroondo yepurojekiti, dambudziko iri rakatoonekwa mushanduro dzekutanga dzewerf (zvino zvichiri
Tichiri kugadzira chishandiso chekuvaka zvikumbiro muDocker mifananidzo, takakurumidza kuona kuti Dockerfile yakanga isina kufanira isu kune mamwe mabasa chaiwo:
- Iko kudikanwa kwekuvaka akajairwa madiki mawebhu application zvinoenderana neinotevera chiyero chirongwa:
- isa system-wide application zvinoenderana,
- isa bundle remaraibhurari ekutsamira application,
- unganidza assets,
- uye zvinonyanya kukosha, gadziridza kodhi mumufananidzo nekukurumidza uye zvinobudirira.
- Kana shanduko dzichiitwa kumafaira eprojekiti, muvaki anofanira kukurumidza kugadzira dhizaini nekushandisa chigamba kune akachinja mafaera.
- Kana mamwe mafaera achinja, saka zvinodikanwa kuvakazve danho rinoenderana rinoenderana.
Nhasi muunganidzi wedu ane zvimwe zvakawanda zvingangoitika, asi izvi zvaive zvishuwo zvekutanga uye zvinokurudzira.
Kazhinji, tisina kufunga kaviri, takazvigadzirira mutauro wepurogiramu wataishandisa (ona pazasi) uye rova ββββnzira yekushandisa yavo DSL! Zvinoenderana nezvinangwa, zvakaitirwa kutsanangura maitiro egungano mumatanho uye kuona kutsamira kwematanho aya pamafaira. Uye akawedzera muunganidzi wake, iyo yakashandura DSL kuva chinangwa chekupedzisira - mufananidzo wakaungana. Pakutanga DSL yaive muRuby, asi se
Old config ye dapp muRuby
Ikozvino gadziriso yewerf paYAML
Iyo nzira yemuunganidzi yakachinjawo nekufamba kwenguva. Pakutanga, isu takangogadzira yenguva pfupi Dockerfile panhunzi kubva pakumisikidzwa kwedu, tobva tatanga kumhanyisa mirairo yegungano mumidziyo yenguva pfupi uye kuzvipira.
NB: Parizvino, muunganidzi wedu, anoshanda neayo config (muYAML) uye anonzi Stapel muunganidzi, atogadzira kuita chishandiso chine simba. Tsanangudzo yaro yakadzama inokodzera zvinyorwa zvakasiyana, uye zvekutanga zvekutanga zvinogona kuwanikwa mukati
Kuziva dambudziko
Asi takaona, uye kwete pakarepo, kuti takanga takanganisa chimwe chete: isu hatina kuwedzera kugona gadzira mifananidzo kuburikidza neyakajairwa Dockerfile uye uvasanganise mune imwechete-yekupedzisira-yekupedzisira application manejimendi zvivakwa (kureva kuunganidza mifananidzo, kuendesa uye kuichenesa). Zvingaite sei kugadzira chishandiso chekuisa muKubernetes uye kusaita Dockerfile rutsigiro, i.e. nzira yakajairika yekutsanangura mifananidzo yemapurojekiti mazhinji?..
Panzvimbo pokupindura mubvunzo uyu, tinopa mhinduro. Ko kana iwe uchitova neDockerfile (kana seti yeDockerfiles) uye uchida kushandisa werf?
NB: Nenzira, sei iwe ungatoda kushandisa werf? Iwo maficha makuru anouya kune anotevera:
- yakazara application manejimendi kutenderera kunosanganisira kuchenesa mufananidzo;
- kugona kubata kuungana kwemifananidzo yakati wandei kamwechete kubva kune imwechete config;
- Yakavandudzwa nzira yekuendesa kune Helm-inoenderana machati.
Rondedzero yakazara yavo inogona kuwanikwa pa
Saka, dai takambozvipira kunyora zvakare Dockerfile mune yedu config, ikozvino tichati nerufaro: "Rega werf kuvaka yako Dockerfiles!"
Nzira yekushandisa sei?
Kuitwa kuzere kwechinhu ichi kwakaonekwa mukuburitswa werf build
... uye ndizvozvo - werf ichaunganidza mufananidzo. Ngatitarisei muenzaniso usingaoneki.
Ngatizivise chinotevera Dockerfile
mumudzi weprojekiti:
FROM ubuntu:18.04
RUN echo Building ...
Uye tichazivisa werf.yaml
iyo inoshandisa iyi Dockerfile
:
configVersion: 1
project: dockerfile-example
---
image: ~
dockerfile: ./Dockerfile
Zvose! Ruboshwe mhanya werf build
:
Mukuwedzera, iwe unogona kuzivisa zvinotevera werf.yaml
kuvaka mifananidzo yakati wandei kubva kwakasiyana Dockerfiles kamwechete:
configVersion: 1
project: dockerfile-example
---
image: backend
dockerfile: ./dockerfiles/Dockerfile-backend
---
image: frontend
dockerfile: ./dockerfiles/Dockerfile-frontend
Chekupedzisira, inotsigirawo kupfuudza mamwe ekuvaka paramita, senge --build-arg
ΠΈ --add-host
- kuburikidza ne werf config. Tsanangudzo yakazara yeDockerfile mufananidzo kumisikidzwa inowanikwa pa
Sei kushanda?
Munguva yekuvaka maitiro, iyo yakajairwa cache yenzvimbo dzenzvimbo muDocker mabasa. Nekudaro, chakakosha ndechekuti werf zvakare inosanganisa Dockerfile kumisikidzwa mune yayo masisitimu. Izvi zvinorevei?
- Imwe neimwe mufananidzo wakavakwa kubva kuDockerfile une nhanho imwe inonzi
dockerfile
(unogona kuverenga zvakawanda nezve matanho ari muwerfpano ). - Yechikuva
dockerfile
werf inoverengera siginecha zvinoenderana nezviri mukati meiyo Dockerfile kumisikidzwa. Kana iyo Dockerfile kumisikidzwa yachinja, siginecha yedanho inoshandukadockerfile
uye werf inotanga kuvakwazve kweichi nhanho neiyo Dockerfile config. Kana siginicha ikasachinja, saka werf inotora mufananidzo kubva kune cache (zvimwe zvakawanda pamusoro pekushandiswa kwemasaini mu werf zvakatsanangurwa mukatireport iyi ). - Tevere, iyo yakaunganidzwa mifananidzo inogona kuburitswa nemurairo
werf publish
(kanawerf build-and-publish
) uye shandisa iyo kuendesa kuKubernetes. Yakadhindwa mifananidzo kuDocker Registry ichacheneswa uchishandisa yakajairwa werf yekuchenesa maturusi, i.e. Mifananidzo yekare (yakakura kupfuura N mazuva), mifananidzo yakabatana neasipo Git mapazi, uye mamwe marongero anozocheneswa otomatiki.
Rumwe ruzivo nezve mapoinzi anotsanangurwa pano anogona kuwanikwa mune zvinyorwa:
Zvinyorwa uye zvidziviriro
1. URL yekunze haitsigirwe muADD
Parizvino haitsigirwe kushandisa URL yekunze mugwara ADD
. Werf haisi kuzotanga kuvakazve kana sosi pane yakatsanangurwa URL yachinja. Tinoronga kuwedzera chikamu ichi munguva pfupi.
2. Iwe haugone kuwedzera .git kumufananidzo
Kazhinji kutaura, kuwedzera dhairekitori .git
mumufananidzo - tsika yakaipa yakaipa uye heino chikonzero nei:
- kana
.git
inoramba iri mumufananidzo wekupedzisira, izvi zvinotyora mitemo12 factor app : Sezvo mufananidzo wekupedzisira uchifanirwa kubatanidzwa kune imwechete kuzvipira, hazvifanirwe kuitagit checkout
kuita zvemapoto. -
.git
inowedzera saizi yemufananidzo (iyo repository inogona kuve yakakura nekuda kwekuti mafaera makuru akambowedzerwa kwairi obva adzimwa). Saizi yemuti webasa unongobatanidzwa chete nechisungo chakasarudzika haibvi pane nhoroondo yekushanda muGit. Muchiitiko ichi, kuwedzera uye kubviswa kwakatevera.git
kubva pamufananidzo wekupedzisira hazvishande: mufananidzo ucharamba uchiwana imwe yekuwedzera - iyi ndiyo mashandiro anoita Docker. - Docker inogona kutanga kuvakazve kusingakoshi, kunyangwe kuzvipira kumwechete kuri kuvakwa, asi kubva kune akasiyana mabasa-miti. Semuenzaniso, GitLab inogadzira akaparadzana akaumbwa madhairekitori mukati
/home/gitlab-runner/builds/HASH/[0-N]/yourproject
apo parallel assembly inogoneswa. Iyo yekuwedzera reassembly ichave nekuda kwekuti dhairekitori.git
yakasiyana mune dzakasiyana-siyana dzakaumbwa shanduro dzeiyo imwechete repository, kunyangwe iyo imwechete kuzvipira yakavakwa.
Pfungwa yekupedzisira inewo mhedzisiro kana uchishandisa werf. Werf inoda kuti cache yakavakirwa ivepo paunenge uchimhanyisa mimwe mirairo (semuenzaniso. werf deploy
) Kana iyi mirairo ichimhanya, werf inoverengera masiginecha ematanho emifananidzo yakataurwa mukati werf.yaml
, uye dzinofanira kunge dziri mudura regungano - zvikasadaro murairo hauzokwanisi kuramba uchishanda. Kana siginicha yedariro inoenderana nezviri mukati .git
, tobva tawana cache isina kugadzikana kuchinja mune zvisina basa mafaera, uye werf haizokwanisi kuregerera kutarisisa kwakadaro (kuti uwane rumwe ruzivo, ona
Zvose kuwedzera mamwe mafaira anodiwa chete kuburikidza nemirayiridzo ADD
chero ipi zvayo inowedzera kushanda uye kuvimbika kwezvakanyorwa Dockerfile
, uye zvakare inovandudza kugadzikana kwecache yakaunganidzwa nekuda kweizvi Dockerfile
, kune shanduko dzisina basa muGit.
Mugumisiro
Nzira yedu yekutanga yekunyora muvaki wedu pachedu zvinodiwa yaive yakaoma, yakatendeseka uye yakatwasuka: pachinzvimbo chekushandisa madondoro pamusoro peiyo yakajairwa Dockerfile, isu takanyora mhinduro yedu netsika syntax. Uye izvi zvaive nezvakanakira: iyo Stapel muunganidzi inobata nebasa rayo zvakakwana.
Nekudaro, mukunyora kwedu muvaki, takarasa kuona rutsigiro rweDockerfiles iripo. Chikanganiso ichi chagadziriswa, uye mune ramangwana tinoronga kugadzira rutsigiro rweDockerfile pamwe chete netsika yedu yeStapel muvaki wegungano rakagoverwa uye rekuungana uchishandisa Kubernetes (kureva kuungana kwevanomhanya mukati meKubernetes, sezvinoitwa mukaniko).
Saka, kana iwe ukaerekana uine akati wandei eDockerfiles akarara akatenderedza ... edza
PS Rondedzero yezvinyorwa pamusoro wenyaya
-
Mazano ekukurumidza kutanga ; -
dockerfile muvaki zvigadziriso ; -
Matanho mudziyo mu werf ; -
Kuburitsa mifananidzo ; -
Kubatanidzwa neKubernetes deployment process ; -
Kuchenesa nzira ; -
Stapel anovaka seimwe nzira yeDockerfile .
Verenga zvakare mublog redu: "
Source: www.habr.com