Manje usungakwazi ukwakha izithombe ze-Docker ku-werf usebenzisa i-Dockerfile evamile

Kungcono sekwephuzile kunanini ngaphambili. Noma ukuthi sicishe senza kanjani iphutha elibi kakhulu ngokungasekeli ama-Dockerfiles ajwayelekile ukuze sakhe izithombe zohlelo lokusebenza.

Manje usungakwazi ukwakha izithombe ze-Docker ku-werf usebenzisa i-Dockerfile evamile

Sizokhuluma ngakho i-werf - Insiza ye-GitOps ehlanganisa nanoma yiluphi uhlelo lwe-CI/CD futhi inikeze ukuphathwa kwawo wonke umjikelezo wokuphila wohlelo lokusebenza, okuvumela:

  • 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 eyaziwa ngokuthi i-dapp).

Ngenkathi sidala ithuluzi lokwakha izinhlelo zokusebenza ezithombeni ze-Docker, sisheshe sabona ukuthi i-Dockerfile ibingasifanele imisebenzi ethile:

  1. 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.
  2. Lapho izinguquko zenziwa kumafayela ephrojekthi, umakhi kufanele enze ngokushesha isendlalelo esisha ngokusebenzisa isichibi kumafayela ashintshiwe.
  3. 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 ukushintshela eGolang - ukulungiselelwa komqoqi wethu kuqale ukuchazwa kufayela le-YAML.

Manje usungakwazi ukwakha izithombe ze-Docker ku-werf usebenzisa i-Dockerfile evamile
Ukulungiselelwa okudala kwe-dapp ku-Ruby

Manje usungakwazi ukwakha izithombe ze-Docker ku-werf usebenzisa i-Dockerfile evamile
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 imibhalo.

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 ikhasi lephrojekthi.

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 i-werf v1.0.3-beta.1. Umgomo ojwayelekile ulula: umsebenzisi ucacisa indlela eya ku-Dockerfile ekhona ku-werf config, bese eqhuba umyalo. 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.yamlesebenzisa lokhu Dockerfile:

configVersion: 1
project: dockerfile-example
---
image: ~
dockerfile: ./Dockerfile

Konke! Kwesokunxele gijima werf build:

Manje usungakwazi ukwakha izithombe ze-Docker ku-werf usebenzisa i-Dockerfile evamile

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 ikhasi lemibhalo.

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?

  1. Isithombe ngasinye esakhiwe nge-Dockerfile siqukethe isigaba esisodwa esibizwa ngokuthi dockerfile (ungafunda kabanzi mayelana nokuthi yiziphi izigaba eziku-werf lapha).
  2. Okwesiteji dockerfile i-werf ibala isiginesha encike kokuqukethwe kokucushwa kwe-Dockerfile. Lapho ukucushwa kwe-Dockerfile kushintsha, isiginesha yesiteji iyashintsha dockerfile 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 ku lombiko).
  3. Okulandelayo, izithombe eziqoqiwe zingashicilelwa ngomyalo werf publish (noma werf 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:

  1. Uma .git uhlala emfanekisweni wokugcina, lokhu kwephula izimiso 12 factor app: Njengoba isithombe sokugcina kufanele sixhunywe esivumelwaneni esisodwa, akufanele kwenzeke git checkout ukuzibophezela ngokungafanele.
  2. .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.
  3. 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 imibhalo).

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 i-werf!

PS Uhlu lwemibhalo ngesihloko

Funda futhi kubhulogi yethu: "i-werf - ithuluzi lethu le-CI / CD ku-Kubernetes (uhlolojikelele nombiko wevidiyo)".

Source: www.habr.com

Engeza amazwana