Kungcono ufike mva kunokuba ungezi. Okanye indlela esiphantse senze ngayo impazamo enkulu ngokungafumani nkxaso kwiiDockerfiles eziqhelekileyo zokwakha imifanekiso yesicelo.
Siza kuthetha ngayo
- qokelela kwaye upapashe imifanekiso,
- sebenzisa izicelo kwi-Kubernetes,
- cima imifanekiso engasetyenziswanga usebenzisa imigaqo-nkqubo ekhethekileyo.
Ifilosofi yeprojekthi kukuqokelela izixhobo ezikumgangatho ophantsi zibe yinkqubo enye edibeneyo enika iinjineli ze-DevOps ukulawula izicelo. Ukuba kunokwenzeka, izinto eziluncedo ezikhoyo (ezifana neHelm kunye neDocker) kufuneka zisetyenziswe. Ukuba akukho sisombululo kwingxaki, sinokwenza kwaye sixhase yonke into eyimfuneko kule nto.
Imvelaphi: umqokeleli wemifanekiso yakho
Oku kwenzeka ngomqokeleli wemifanekiso kwi-werf: i-Dockerfile eqhelekileyo yayinganelanga kuthi. Ukuba ujonga ngokukhawuleza kwimbali yeprojekthi, le ngxaki ivele kwiinguqulelo zokuqala ze-werf (ngoko
Ngelixa sisenza isixhobo sokwakha usetyenziso kwimifanekiso yeDocker, sikhawuleze saqonda ukuba iDockerfile ibingasifanelanga eminye imisebenzi ethile:
- Isidingo sokwakha usetyenziso oluncinci lwewebhu ngokwesikimu somgangatho olandelayo:
- faka inkqubo yokuxhomekeka kwesicelo esibanzi,
- fakela inyanda yokuxhomekeka kwesicelo kumathala eencwadi,
- qokelela impahla,
- kwaye okona kubaluleke kakhulu, hlaziya ikhowudi emfanekisweni ngokukhawuleza nangempumelelo.
- Xa utshintsho lwenziwa kwiifayile zeprojekthi, umakhi kufuneka enze ngokukhawuleza uluhlu olutsha ngokusebenzisa i-patch kwiifayile ezitshintshileyo.
- Ukuba iifayile ezithile zitshintshile, ngoko kuyimfuneko ukuphinda kwakhiwe isigaba esixhomekeke kuyo esihambelanayo.
Namhlanje umqokeleli wethu unamanye amaninzi anokwenzeka, kodwa le yayiyiminqweno yokuqala kunye nezibongozo.
Ngokubanzi, ngaphandle kokucinga kabini, sazixhobisa ngolwimi lwenkqubo esilusebenzisileyo (bona ngezantsi) kwaye ubethe indlela ukuphumeza eyakho iDSL! Ngokuhambelana neenjongo, bekujoliswe ekuchazeni inkqubo yendibano ngezigaba kunye nokumisela ukuxhomekeka kwezi zigaba kwiifayile. Kwaye yaphelelisa umqokeleli owakhe, eyajika i-DSL ibe yinjongo yokugqibela - umfanekiso odibeneyo. Ekuqaleni i-DSL yayiseRuby, kodwa njenge
Uqwalaselo oludala lwe-dapp kwiRuby
Ubumbeko lwangoku lwe-werf kwi-YAML
Indlela yomqokeleli nayo yatshintsha ngokuhamba kwexesha. Ekuqaleni, siye savelisa i-Dockerfile yethutyana kubhabho ukusuka kuqwalaselo lwethu, emva koko saqala ukuqhuba imiyalelo yendibano kwizikhongozeli zexeshana kwaye sizibophelele.
NB: Okwangoku, umqokeleli wethu, osebenza kunye noqwalaselo lwakhe (kwi-YAML) kwaye ubizwa ngokuba ngumqokeleli we-Stapel, sele ephuhlisiwe waba sisixhobo esinamandla. Inkcazo yayo ecacileyo ifanelwe ngamanqaku ahlukeneyo, kwaye iinkcukacha ezisisiseko zinokufumaneka
Ukuqonda ingxaki
Kodwa siye saqaphela, kwaye kungekhona ngokukhawuleza, ukuba senze impazamo enye: asizange songeze isakhono Yakha imifanekiso ngeDockerfile eqhelekileyo kwaye udibanise kwisiseko esifanayo solawulo lwesicelo sokugqibela (oko kukuthi ukuqokelela imifanekiso, ukuhambisa kunye nokucoca). Kunokwenzeka njani ukuba wenze isixhobo sokuthunyelwa kwi-Kubernetes kwaye ungayisebenzisi inkxaso ye-Dockerfile, okt. indlela esemgangathweni yokuchaza imifanekiso yeeprojekthi ezininzi?..
Endaweni yokuphendula lo mbuzo, sinikezela ngesisombululo. Kuthekani ukuba sele unayo iDockerfile (okanye iseti yeeDockerfiles) kwaye ufuna ukusebenzisa i-werf?
NB: Haybo kutheni uzofuna ukusebenzisa i-werf? Iimpawu eziphambili zehla koku kulandelayo:
- umjikelo wolawulo olupheleleyo lwesicelo kubandakanya ukucocwa komfanekiso;
- ukukwazi ukulawula indibano yemifanekiso emininzi ngexesha elinye ukusuka kuqwalaselo olunye;
- Inkqubo yokusasazwa ephuculweyo yeetshathi ezihambelana neHelm.
Uluhlu olupheleleyo lwazo lunokufumaneka apha
Ke, ukuba ngaphambili besiza kuphinda sibhale i-Dockerfile kuqwalaselo lwethu, ngoku siya kuthi ngovuyo: "Makhe i-Dockerfiles yakho!"
Ungayisebenzisa njani?
Ukuphunyezwa ngokupheleleyo kolu phawu kubonakale kukhupho werf build
... kwaye yiloo nto-i-werf iya kudibanisa umfanekiso. Makhe sijonge umzekelo ocacileyo.
Masibhengeze olandelayo Dockerfile
kwingcambu yeprojekthi:
FROM ubuntu:18.04
RUN echo Building ...
Kwaye siya kubhengeza werf.yaml
esebenzisa oku Dockerfile
:
configVersion: 1
project: dockerfile-example
---
image: ~
dockerfile: ./Dockerfile
Konke! Khohlo ukubaleka werf build
:
Ukongeza, unokubhengeza oku kulandelayo werf.yaml
ukwakha imifanekiso emininzi kwiiDockerfiles ezahlukeneyo ngaxeshanye:
configVersion: 1
project: dockerfile-example
---
image: backend
dockerfile: ./dockerfiles/Dockerfile-backend
---
image: frontend
dockerfile: ./dockerfiles/Dockerfile-frontend
Okokugqibela, ikwaxhasa ukudlula iiparamitha zokwakha ezongezelelweyo, ezinje --build-arg
ΠΈ --add-host
- nge-werf config. Inkcazo epheleleyo yoqwalaselo lomfanekiso weDockerfile iyafumaneka
Isebenza njani?
Ngexesha lenkqubo yokwakha, i-cache esemgangathweni yeeleyile zasekhaya kwimisebenzi yeDocker. Nangona kunjalo, into ebalulekileyo kukuba i-werf nayo idibanisa ubumbeko lweDockerfile kwisiseko sayo. Ithetha ntoni le nto?
- Umfanekiso ngamnye owakhiwe kwiDockerfile unenqanaba elinye elibizwa ngokuba
dockerfile
(unokufunda ngakumbi malunga nokuba zeziphi izigaba kwi-werfapha ). - Kwiqonga
dockerfile
i-werf ibala utyikityo oluxhomekeke kwimixholo yoqwalaselo lweDockerfile. Xa uqwalaselo lweDockerfile lutshintsha, utyikityo lweqonga luyatshintshadockerfile
kwaye i-werf iqalisa ulwakhiwo lweli nqanaba ngoqwalaselo olutsha lweDockerfile. Ukuba utyikityo alutshintshi, ngoko i-werf ithatha umfanekiso kwi-cache (iinkcukacha ezithe vetshe malunga nokusebenzisa imisayino kwi-werf zichazwe aphale ngxelo ). - Okulandelayo, imifanekiso eqokelelweyo ingapapashwa ngomyalelo
werf publish
(okanyewerf build-and-publish
) kwaye uyisebenzisele ukuthunyelwa kwi-Kubernetes. Imifanekiso epapashiweyo kwiRegistry yeDocker iya kucocwa kusetyenziswa izixhobo ezisemgangathweni zokucoca i-werf, okt. Imifanekiso emidala (emidala kuneentsuku ezi-N), imifanekiso eyayanyaniswa namasebe angekhoyo eGit, kunye neminye imigaqo-nkqubo iya kucocwa ngokuzenzekelayo.
Iinkcukacha ezithe vetshe malunga neengongoma ezichazwe apha zinokufumaneka kuxwebhu:
Amanqaku kunye nezilumkiso
1. I-URL yangaphandle ayixhaswanga kwi-ADD
Okwangoku ayixhaswanga ukusebenzisa i-URL yangaphandle kumyalelo ADD
. I-Werf ayiyi kuqalisa ukwakha kwakhona xa uvimba kwi-URL echaziweyo utshintsha. Siceba ukongeza eli nqaku kungekudala.
2. Awukwazi ukongeza .git kumfanekiso
Ngokubanzi, ukongeza uvimba weefayili .git
emfanekisweni - isenzo esibi esibi kwaye nantsi isizathu:
- ukuba
.git
uhlala kumfanekiso wokugqibela, oku kuphula imigaqo12 factor app : Kuba umfanekiso wokugqibela kufuneka uqhagamshelwe kwisibophelelo esinye, akufuneki ukuba kwenzekegit checkout
ukuzibophelela ngokungenasizathu. -
.git
kwandisa ubungakanani bomfanekiso (uvimba unokuba mkhulu ngenxa yokuba iifayile ezinkulu ziye zongezwa kuyo kwaye zacinywa). Ubungakanani bomthi womsebenzi onxulumene kuphela nesibophelelo esithile abuyi kuxhomekeka kwimbali yokusebenza kwiGit. Kule meko, ukongezwa kunye nokususwa okulandelayo.git
ukusuka kumfanekiso wokugqibela awuyi kusebenza: umfanekiso useza kufumana umaleko owongezelelweyo- yindlela iDocker esebenza ngayo. - I-Docker inokuqalisa ukwakhiwa kwakhona ngokungeyomfuneko, nokuba isibophelelo esifanayo siyakhiwa, kodwa sisuka kwimithi eyahlukeneyo yomsebenzi. Umzekelo, i-GitLab yenza abalawuli abahlukeneyo abadibeneyo
/home/gitlab-runner/builds/HASH/[0-N]/yourproject
xa udibaniso olunxuseneyo luvuliwe. Ukudityaniswa kwakhona okungaphezulu kuya kuba ngenxa yokuba uvimba weefayili.git
yahlukile kwiinguqulelo eziqingqiweyo zogcino olufanayo, nokuba isibophelelo esifanayo sakhiwe.
Inqaku lokugqibela lineziphumo xa usebenzisa i-werf. I-Werf ifuna i-cache eyakhelweyo ukuba ibekho xa uqhuba eminye imiyalelo (umz. werf deploy
). Xa le miyalelo iqhuba, i-werf ibala utyikityo lweqonga lwemifanekiso echazwe kuyo werf.yaml
, kwaye kufuneka babe kwi-cache yendibano - kungenjalo umyalelo awuyi kukwazi ukuqhubeka nokusebenza. Ukuba utyikityo lweqonga luxhomekeke kumxholo .git
, emva koko sifumana i-cache engazinzanga kutshintsho kwiifayile ezingabalulekanga, kwaye i-werf ayiyi kuba nako ukuxolela ulongamelo olunjalo (ukufumana iinkcukacha ezingaphezulu, bona
Ngokubanzi ukongeza kuphela iifayile ezithile eziyimfuneko ngemiyalelo ADD
kuyo nayiphi na imeko kwandisa ukusebenza kakuhle kunye nokuthembeka kokubhaliweyo Dockerfile
, kunye nokuphucula ukuzinza kwe-cache eqokelelwe oku Dockerfile
, kwiinguqu ezingabalulekanga kwiGit.
Isiphumo
Indlela yethu yokuqala yokubhala umakhi wethu kwiimfuno ezithile yayinzima, inyanisekile kwaye ithe ngqo: endaweni yokusebenzisa iintonga phezu kweDockerfile eqhelekileyo, sabhala isisombululo sethu nge-syntax yesiko. Kwaye oku kuneenzuzo zayo: umqokeleli weStapel uhlangabezana nomsebenzi wakhe ngokugqibeleleyo.
Nangona kunjalo, kwinkqubo yokubhala umakhi wethu, siye saphulukana nombono wenkxaso yeeDockerfiles ezikhoyo. Esi siphoso ngoku sele silungisiwe, kwaye kwixesha elizayo siceba ukuphuhlisa inkxaso ye-Dockerfile kunye nomakhi wethu we-Stapel yesiko lokusasazwa kolwakhiwo kunye nolwakhiwo olusebenzisa i-Kubernetes (okt ukwakha phezu kweembaleki ngaphakathi kwe-Kubernetes, njengoko kwenziwa kwi-kaniko).
Ke, ukuba ngequbuliso uneeDockerfiles ezimbalwa ezilele ngeenxa zonke... zama
PS Uluhlu lwamaxwebhu ngesihloko
-
Izikhokelo zokuqalisa ngokukhawuleza ; -
dockerfile uqwalaselo lomakhi ; -
Isixhobo senqanaba kwi-werf ; -
Inkqubo yokushicilela umfanekiso ; -
Ukudibanisa kunye nenkqubo yokuthunyelwa kwe-Kubernetes ; -
Inkqubo yokucoca ; -
Umakhi weStapel njengenye indlela yeDockerfile .
Funda nakwibhlog yethu: "
umthombo: www.habr.com