Kungcono sekwephuzile kunanini ngaphambili. Noma ukuthi sicishe senza kanjani iphutha elibi kakhulu ngokungasekeli ama-Dockerfiles ajwayelekile ukuze sakhe izithombe zohlelo lokusebenza.
Sizokhuluma ngakho
- qoqa futhi ushicilele izithombe,
- sebenzisa izinhlelo zokusebenza ku-Kubernetes,
- susa izithombe ezingasetshenzisiwe usebenzisa izinqubomgomo ezikhethekile.
Ifilosofi yephrojekthi ukuqoqa amathuluzi asezingeni eliphansi abe yisistimu eyodwa ebumbene enikeza onjiniyela be-DevOps ukulawula izinhlelo zokusebenza. Uma kungenzeka, izinsiza ezikhona (njenge-Helm ne-Docker) kufanele zisetshenziswe. Uma singekho isisombululo senkinga, singakha futhi sisekele konke okudingekayo kulokhu.
Ingemuva: isiqoqi sezithombe sakho
Yilokhu okwenzekile ngomqoqi wesithombe ku-werf: i-Dockerfile evamile ibinganele kithi. Uma ubheka ngokushesha umlando wephrojekthi, le nkinga ivele kakade ezinguqulweni zokuqala ze-werf (bese
Ngenkathi sidala ithuluzi lokwakha izinhlelo zokusebenza ezithombeni ze-Docker, sisheshe sabona ukuthi i-Dockerfile ibingasifanele imisebenzi ethile:
- Isidingo sokwakha izinhlelo zokusebenza zewebhu ezijwayelekile ngokuya ngohlelo olujwayelekile olulandelayo:
- faka okuncike kuhlelo olubanzi lwesistimu,
- faka inqwaba yemitapo yolwazi encike kuhlelo lokusebenza,
- qoqa izimpahla,
- futhi okubaluleke kakhulu, buyekeza ikhodi esesithombeni ngokushesha nangempumelelo.
- Lapho izinguquko zenziwa kumafayela ephrojekthi, umakhi kufanele enze ngokushesha isendlalelo esisha ngokusebenzisa isichibi kumafayela ashintshiwe.
- Uma amafayela athile eshintshile, ngakho-ke kuyadingeka ukwakha kabusha isigaba esincike esihambelanayo.
Namuhla umqoqi wethu unezinye izinto eziningi ezingenzeka, kodwa lezi kwakuyizifiso nezifiso zokuqala.
Ngokuvamile, ngaphandle kokucabanga kabili, sazihlomisa ngolimi lokuhlela esasilusebenzisa (bona ngezansi) bese ushaya umgwaqo ukuze uqalise umnikazi we-DSL! Ngokuvumelana nezinjongo, kwakuhloswe ukuthi kuchazwe inqubo yokuhlanganisa ngezigaba futhi kunqunywe ukuncika kwalezi zigaba kumafayela. Futhi kwagcwalisa umqoqi wakhe, eguqule i-DSL yaba umgomo wokugcina - isithombe esihlanganisiwe. Ekuqaleni i-DSL yayiseRuby, kodwa njengoba
Ukulungiselelwa okudala kwe-dapp ku-Ruby
Ukulungiselelwa kwamanje kwe-werf ku-YAML
Indlela yomqoqi nayo yashintsha ngokuhamba kwesikhathi. Ekuqaleni, simane sakha i-Dockerfile yesikhashana endizeni kusuka ekucushweni kwethu, sabe sesiqala ukusebenzisa imiyalo yomhlangano ezitsheni zesikhashana nokuzibophezela.
NB: Okwamanje, umqoqi wethu, osebenza ngohlelo lwakhe (ku-YAML) futhi obizwa ngokuthi umqoqi we-Stapel, usethuthuke waba ithuluzi elinamandla. Incazelo yayo enemininingwane ifanele izindatshana ezihlukene, futhi imininingwane eyisisekelo ingatholakala kuyo
Ukuqwashisa ngenkinga
Kodwa saqaphela, hhayi ngokushesha, ukuthi senze iphutha elilodwa: asizange silengeze ikhono yakha izithombe nge-Dockerfile ejwayelekile futhi uzihlanganise nengqalasizinda efanayo yokuphatha uhlelo lokusebenza (okungukuthi, qoqa izithombe, uzisebenzise futhi uzihlanze). Kungenzeka kanjani ukwenza ithuluzi lokuthunyelwa ku-Kubernetes futhi ungasebenzisi ukusekelwa kwe-Dockerfile, i.e. indlela ejwayelekile yokuchaza izithombe zamaphrojekthi amaningi?..
Esikhundleni sokuphendula lo mbuzo, sinikeza isixazululo. Kuthiwani uma usunayo i-Dockerfile (noma isethi yama-Dockerfiles) futhi ufuna ukusebenzisa i-werf?
NB: Phela, kungani uzofuna ukusebenzisa i-werf? Izici eziyinhloko zehlela kulokhu okulandelayo:
- umjikelezo wokuphatha wohlelo olugcwele ohlanganisa ukuhlanzwa kwesithombe;
- ikhono lokuphatha ukuhlanganiswa kwezithombe eziningana ngesikhathi esisodwa kusuka ku-config eyodwa;
- Inqubo yokuthumela ethuthukisiwe yamashadi ahambisana ne-Helm.
Uhlu oluphelele lwazo lungatholakala kokuthi
Ngakho-ke, ukube ngaphambili besingathanda ukubhala kabusha i-Dockerfile ku-config yethu, manje sizothi ngenjabulo: "Vumela i-werf yakhe i-Dockerfiles yakho!"
Ungayisebenzisa kanjani?
Ukuqaliswa okuphelele kwalesi sici kuvele ekukhishweni werf build
... futhi yilokho - i-werf izohlanganisa isithombe. Ake sibheke isibonelo esingabonakali.
Ake simemezele olandelayo Dockerfile
kumsuka wephrojekthi:
FROM ubuntu:18.04
RUN echo Building ...
Futhi sizomemezela werf.yaml
esebenzisa lokhu Dockerfile
:
configVersion: 1
project: dockerfile-example
---
image: ~
dockerfile: ./Dockerfile
Konke! Kwesokunxele gijima werf build
:
Ngaphezu kwalokho, ungakwazi ukumemezela okulandelayo werf.yaml
ukwakha izithombe ezimbalwa ezivela kuma-Dockerfiles ahlukene ngesikhathi esisodwa:
configVersion: 1
project: dockerfile-example
---
image: backend
dockerfile: ./dockerfiles/Dockerfile-backend
---
image: frontend
dockerfile: ./dockerfiles/Dockerfile-frontend
Okokugcina, futhi isekela ukudlula imingcele yokwakha eyengeziwe, njenge --build-arg
и --add-host
- nge-werf config. Incazelo ephelele yokucushwa kwesithombe se-Dockerfile iyatholakala kokuthi
Isebenza kanjani?
Ngesikhathi senqubo yokwakha, inqolobane evamile yezendlalelo zasendaweni emisebenzini ye-Docker. Nokho, okubalulekile ukuthi i-werf nayo ihlanganisa ukucushwa kwe-Dockerfile kungqalasizinda yayo. Kusho ukuthini lokhu?
- Isithombe ngasinye esakhiwe nge-Dockerfile siqukethe isigaba esisodwa esibizwa ngokuthi
dockerfile
(ungafunda kabanzi mayelana nokuthi yiziphi izigaba eziku-werflapha ). - Okwesiteji
dockerfile
i-werf ibala isiginesha encike kokuqukethwe kokucushwa kwe-Dockerfile. Lapho ukucushwa kwe-Dockerfile kushintsha, isiginesha yesiteji iyashintshadockerfile
futhi i-werf iqala ukwakhiwa kabusha kwalesi sigaba ngokulungiselelwa okusha kwe-Dockerfile. Uma isiginesha ingashintshi, i-werf ithatha isithombe kunqolobane (imininingwane eyengeziwe mayelana nokusetshenziswa kwamasiginesha ku-werf ichazwe kulombiko ). - Okulandelayo, izithombe eziqoqiwe zingashicilelwa ngomyalo
werf publish
(nomawerf build-and-publish
) futhi uyisebenzisele ukuthunyelwa ku-Kubernetes. Izithombe ezishicilelwe ku-Docker Registry zizohlanzwa kusetshenziswa amathuluzi ajwayelekile okuhlanza i-werf, i.e. Izithombe ezindala (ezindala kunezinsuku ezingu-N), izithombe ezihlobene namagatsha e-Git angekho, nezinye izinqubomgomo zizohlanzwa ngokuzenzakalelayo.
Imininingwane eyengeziwe mayelana namaphuzu achazwe lapha ingatholakala kumadokhumenti:
Amanothi nezinyathelo zokuphepha
1. I-URL yangaphandle ayisekelwe ku-ADD
Okwamanje ayisekelwe ukusebenzisa i-URL yangaphandle kumyalelo ADD
. I-Werf ngeke iqale ukwakha kabusha lapho insiza ku-URL eshiwo ishintsha. Sihlela ukungeza lesi sici maduze.
2. Awukwazi ukwengeza i-.git esithombeni
Ngokuvamile, wengeza uhla lwemibhalo .git
esithombeni - umkhuba omubi ononya futhi yingakho:
- Uma
.git
uhlala emfanekisweni wokugcina, lokhu kwephula izimiso12 factor app : Njengoba isithombe sokugcina kufanele sixhunywe esivumelwaneni esisodwa, akufanele kwenzekegit checkout
ukuzibophezela ngokungafanele. -
.git
kwandisa usayizi wesithombe (inqolobane ingaba nkulu ngenxa yokuthi amafayela amakhulu ake afakwa kuyo bese esuswa). Usayizi wesihlahla somsebenzi ohlotshaniswa kuphela nesibopho esithile ngeke uncike emlandweni wokusebenza ku-Git. Kulokhu, ukwengeza nokususwa okwalandela.git
kusuka esithombeni sokugcina ngeke kusebenze: isithombe sisazothola isendlalelo esengeziwe - yile ndlela i-Docker esebenza ngayo. - I-Docker ingaqala ukwakhiwa kabusha okungadingekile, noma ngabe kwakhiwa ukuzinikela okufanayo, kodwa kusuka ezihlahleni zomsebenzi ezihlukene. Isibonelo, i-GitLab idala izinkomba ezihlukene ezihlanganisiwe
/home/gitlab-runner/builds/HASH/[0-N]/yourproject
uma ukuhlanganisa okuhambisanayo kunikwe amandla. Ukuhlanganisa kabusha okwengeziwe kuzoba ngenxa yokuthi uhla lwemibhalo.git
yehlukile kuzinguqulo ezikhiqiziwe ezihlukene zenqolobane efanayo, noma ngabe isibopho esifanayo sakhiwe.
Iphuzu lokugcina nalo linemiphumela uma usebenzisa i-werf. I-Werf idinga inqolobane eyakhiwe ukuthi ibe khona lapho usebenzisa eminye imiyalo (isb. werf deploy
). Uma le miyalo isebenza, i-werf ibala amasiginesha esiteji ezithombe ezicaciswe kuzo werf.yaml
, futhi kumelwe zibe kunqolobane yomhlangano - ngaphandle kwalokho umyalo ngeke ukwazi ukuqhubeka nokusebenza. Uma isiginesha yesiteji incike kokuqukethwe .git
, bese sithola inqolobane engazinzile ekushintsheni kumafayela angabalulekile, futhi i-werf ngeke ikwazi ukuthethelela ukweqa okunjalo (ukuthola imininingwane eyengeziwe, bona
Sekukonke wengeza kuphela amafayela athile adingekayo ngokusebenzisa imiyalelo ADD
kunoma yikuphi kwandisa ukusebenza kahle nokuthembeka kokubhaliwe Dockerfile
, futhi iphinde ithuthukise ukuzinza kwenqolobane eqoqwe ngalokhu Dockerfile
, kuzinguquko ezingabalulekile ku-Git.
Umphumela
Indlela yethu yokuqala yokubhalela umakhi wethu ngezidingo ezithile yayinzima, ithembekile futhi iqondile: esikhundleni sokusebenzisa izinduku phezu kwe-Dockerfile evamile, sabhala isisombululo sethu nge-syntax yangokwezifiso. Futhi lokhu kwakunezinzuzo zayo: umqoqi we-Stapel ubhekana nomsebenzi wawo ngokuphelele.
Kodwa-ke, ngesikhathi sokubhala umakhi wethu, salahlekelwa umbono wokusekelwa kwama-Dockerfiles akhona. Manje leli phutha selilungisiwe, futhi esikhathini esizayo sihlela ukuthuthukisa ukwesekwa kwe-Dockerfile kanye nomakhi wethu we-Stapel wangokwezifiso wokwakha okusabalalisiwe kanye nokwakhiwa kusetshenziswa i-Kubernetes (okungukuthi yakhela kubagijimi abangaphakathi kwe-Kubernetes, njengoba kwenziwa ku-kaniko).
Ngakho-ke, uma ngokungazelelwe unama-Dockerfiles ambalwa alele... zama
PS Uhlu lwemibhalo ngesihloko
-
Imihlahlandlela yokuqala ngokushesha ; -
dockerfile builder ukucushwa ; -
Isiteji sedivayisi ku-werf ; -
Inqubo yokushicilela isithombe ; -
Ukuhlanganiswa nenqubo yokuphakelwa kwe-Kubernetes ; -
Inqubo yokuhlanza ; -
Umakhi we-Stapel njengenye indlela ye-Dockerfile .
Funda futhi kubhulogi yethu: "
Source: www.habr.com