ProHoster > Блог > Whakahaerenga > Ka taea e koe te hanga whakaahua Docker i roto i te werf ma te whakamahi i te Dockerfile auau
Ka taea e koe te hanga whakaahua Docker i roto i te werf ma te whakamahi i te Dockerfile auau
He pai ake te mutunga mai i te kore. Me pehea ranei i tata he hapa nui na te kore tautoko mo nga Dockerfiles auau ki te hanga whakaahua tono.
Ka korero tatou mo werf — Ko nga taputapu GitOps e hono ana ki tetahi punaha CI/CD me te whakahaere i te huringa ora katoa o te tono, ka taea:
kohikohi me te whakaputa whakaahua,
toha tono ki Kubernetes,
whakakorehia nga whakaahua kaore i whakamahia ma te whakamahi i nga kaupapa here motuhake.
Ko te kaupapa o te kaupapa ko te kohi taputapu taumata-iti ki roto i te punaha whakakotahi kotahi ka whakawhiwhia ki nga miihini DevOps te mana whakahaere mo nga tono. Mena ka taea, me whakamahi nga taputapu o mua (penei i a Helm me Docker). Mena kaore he otinga mo tetahi raruraru, ka taea e tatou te hanga me te tautoko i nga mea katoa e tika ana mo tenei.
Papamuri: ko to kaikohi whakaahua
Koinei te mea i pa ki te kaikohi whakaahua i werf: ko te Dockerfile o mua kaore i ranea mo matou. Mena ka ata titiro koe ki te hitori o te kaupapa, kua puta kee tenei raru i nga putanga tuatahi o werf (katahi ano e mohiotia ana ko dapp).
I a matou e hanga ana i tetahi taputapu mo te hanga tono ki nga whakaahua Docker, ka mohio matou kaore i pai a Dockerfile mo matou mo etahi mahi tino motuhake:
Ko te hiahia ki te hanga i nga tono paetukutuku iti kia rite ki te kaupapa paerewa e whai ake nei:
tāutahia nga whakawhirinakitanga tono puta noa i te punaha,
whakauruhia he paihere o nga whare pukapuka whakawhirinakitanga tono,
kohikohi rawa,
me te mea nui, kia tere, kia pai te whakahou i te waehere i roto i te ahua.
Ina he huringa ki nga konae kaupapa, me tere te hanga e te kaihanga he paparanga hou ma te tono papaki ki nga konae kua whakarereketia.
Mena kua rereke etahi o nga konae, katahi ka tika te hanga ano i te waahanga whakawhirinaki e pa ana.
I tenei ra he maha atu nga huarahi ka taea e taatau kaikohi, engari koinei nga hiahia me nga akiaki tuatahi.
I te nuinga o te waa, me te kore whakaaro rua, ka mau matou i a matou ano ki te reo hotaka i whakamahia e matou (tirohia ki raro) ka pa ki te huarahi ki te whakatinana ake DSL! I runga ano i nga whaainga, i whakaarohia kia whakaahuahia nga waahanga o te huihuinga me te whakatau i nga whakawhirinakitanga o enei waahanga ki runga i nga konae. Na ka whakakiia ake kaikohi, i huri i te DSL ki te whainga whakamutunga - he ahua huihui. I te tuatahi ko te DSL i Ruby, engari hei whakawhiti ki Golang — Ko te whirihora o ta matou kaikohi i timata ki te whakaahua i roto i te konae YAML.
Te whirihora tawhito mo te dapp i Ruby
Whirihoranga o naianei mo te werf i runga i te YAML
I rereke ano te tikanga o te kaikohi i te waa. I te tuatahi, i hanga noa e matou he Dockerfile rangitahi i runga i te rere mai i ta maatau whirihoranga, katahi ka tiimata matou ki te whakahaere i nga tohutohu huihuinga i roto i nga ipu rangitahi me te mahi.
NB: I tenei wa, ko ta matou kaikohi, e mahi ana me tana ake whirihora (i roto i te YAML) ka kiia ko te kaikohi Stapel, kua whakawhanakehia hei taputapu tino kaha. Ko tana whakamaarama taipitopito e tika ana mo nga tuhinga motuhake, ka kitea nga korero taketake i roto tuhinga.
Te mohio ki te raruraru
Engari ka mohio matou, kaore i te wa tonu, kua he matou: kaore matou i taapiri i te kaha hanga whakaahua ma te Dockerfile paerewa me te whakauru ki roto i nga hanganga whakahaere tono mutunga-ki-mutunga (arā, kohikohi whakaahua, tohatoha me te horoi). Me pehea e taea ai te hanga taputapu mo te tuku ki Kubernetes me te kore e whakatinana i te tautoko Dockerfile, ara. ara paerewa hei whakaahua whakaahua mo te nuinga o nga kaupapa?..
Engari i te whakautu i tenei patai, ka tukuna e matou he otinga. Ka pehea mena kei a koe he Dockerfile (he huinga ranei o Dockerfiles) me te hiahia ki te whakamahi werf?
NB: Ae ra, he aha koe i hiahia ai ki te whakamahi werf? Ko nga ahuatanga matua ka heke iho ki nga mea e whai ake nei:
te huringa whakahaere tono katoa tae atu ki te horoi whakaahua;
te kaha ki te whakahaere i te huihuinga o nga whakaahua maha i te wa kotahi mai i te whirihora kotahi;
Kua pai ake te mahi tukunga mo nga tūtohi Hototahi-Helm.
Na, ki te mea i mua ka tukuna e matou ki te tuhi ano i te Dockerfile i roto i ta maatau whirihora, inaianei ka koa matou ki te kii: "Kia werf te hanga i o Dockerfiles!"
Me pehea te whakamahi?
Ko te whakatinanatanga katoa o tenei ahuatanga i puta i te tukunga werf v1.0.3-beta.1. He maamaa te maapono whanui: ka tohua e te kaiwhakamahi te ara ki tetahi Dockerfile kei roto i te whirihora werf, katahi ka whakahaere i te whakahau werf build... a koinei - ka whakahiato e werf te ahua. Kia titiro tatou ki tetahi tauira waitara.
Kia panuitia te korero e whai ake nei Dockerfile i te pakiaka kaupapa:
FROM ubuntu:18.04
RUN echo Building ...
A ka panuitia e matou werf.yamle whakamahi ana i tenei Dockerfile:
Ka mutu, ka tautoko hoki i te tuku i nga taapiri hanga taapiri, penei i --build-arg и --add-host - mā te werf config. He whakaahuatanga katoa mo te whirihoranga whakaahua Dockerfile kei te waatea i wharangi tuhinga.
Ka pēhea te mahi i te reira?
I te wa o te hangahanga, ka mahi te keteroki paerewa o nga paparanga rohe i Docker. Heoi, ko te mea nui ko tera werf hoki ka whakauru i te whirihoranga Dockerfile ki ona hanganga. He aha te tikanga o tenei?
Ko ia ahua i hangaia mai i te Dockerfile he waahanga kotahi e kiia ana dockerfile (Ka taea e koe te panui atu mo nga waahanga kei roto i te werf konei).
Mo te atamira dockerfile Werf te tatau i tetahi waitohu e whakawhirinaki ana ki nga ihirangi o te whirihoranga Dockerfile. Ina huri te whirihoranga Dockerfile, ka huri te hainatanga atamira dockerfile ka timata a werf ki te hanga ano i tenei waahanga me tetahi whirihora Dockerfile hou. Ki te kore e huri te hainatanga, ka tangohia e werf te ahua mai i te keteroki (Ko etahi atu korero mo te whakamahi i nga hainatanga i roto i te werf i whakaahuahia i roto i tenei purongo).
I muri mai, ka taea te whakaputa i nga whakaahua kua kohia me te whakahau werf publish (ranei werf build-and-publish) me te whakamahi mo te tuku ki nga Kubernetes. Ko nga whakaahua kua whakaputaina ki te Rehita Docker ka horoia ma te whakamahi i nga taputapu horoi werf, ara. Ko nga whakaahua tawhito (tawhito ake i nga ra N), ko nga whakaahua e pa ana ki nga manga Git kore-kore, me etahi atu kaupapa here ka horoi aunoa.
Ka kitea etahi atu korero mo nga korero i konei i roto i nga tuhinga:
I tenei wa kaore i te tautokohia te whakamahi i tetahi URL o waho i roto i te tohutohu ADD. Kaore a Werf e timata i te hanga ano ina huri te rauemi i te URL kua tohua. Kei te whakamahere matou ki te taapiri i tenei waahanga apopo.
2. Kaore e taea e koe te taapiri .git ki te ahua
Ko te tikanga, te taapiri i te raarangi whaiaronga .git i roto i te ahua - he mahi kino kino, a koinei te take:
ki te .git ka noho tonu ki te ahua whakamutunga, ka takahi tenei i nga kaupapa 12 take taupānga: I te mea me hono te ahua whakamutunga ki te mahi kotahi, kaore e taea te mahi git checkout mahi noa.
.git ka whakanui ake i te rahi o te ahua (ka taea te nui o te putunga na te mea i taapirihia nga konae nui ki reira ka mukua). Ko te rahi o te rakau-mahi e hono ana ki tetahi mahi motuhake kaore e whakawhirinaki ki te hitori o nga mahi i Git. I tenei keehi, ko te taapiri me te tango i muri mai .git mai i te ahua whakamutunga kaore e mahi: ka whiwhi tonu te ahua i tetahi paparanga taapiri - koinei te mahi a Docker.
Ka taea e Docker te hanga i nga mahi koretake, ahakoa kei te hangahia taua mahi, engari mai i nga rakau-mahi rereke. Hei tauira, ka hangaia e GitLab nga raarangi motuhake kua kati /home/gitlab-runner/builds/HASH/[0-N]/yourproject ina whakahohea te hui whakarara. Ko te taapiri taapiri ka tika na te mea ko te whaiaronga .git he rereke i roto i nga momo rereke rereke o te putunga kotahi, ahakoa he rite te hanga.
Ka whai hua ano te tohu whakamutunga ina whakamahi werf. E hiahia ana a Werf kia noho te keteroki hanga i te wa e whakahaere ana etahi whakahau (hei tauira. werf deploy). Ka rere enei whakahau, ka tatauhia e werf nga hainatanga atamira mo nga whakaahua kua tohua ki roto werf.yaml, a me noho i roto i te keteroki hui - ki te kore ka kore e taea e te whakahau te mahi tonu. Mena ka whakawhirinaki te hainatanga atamira ki te ihirangi .git, ka whiwhi tatou i te keteroki e kore e mau ki nga huringa o nga konae koretake, a ka kore e taea e werf te muru i tera mahi he (mo etahi atu korero, tirohia tuhinga).
Te whānui te taapiri i etahi o nga konae e tika ana na roto i nga tohutohu ADD i roto i tetahi take whakapiki i te pai me te pono o te tuhituhi Dockerfile, me te whakapai ake hoki i te pumau o te keteroki kua kohia mo tenei Dockerfile, ki nga huringa kore i roto i te Git.
Ko te hua
Ko ta matou huarahi tuatahi ki te tuhi i ta matou ake kaihanga mo nga hiahia motuhake he uaua, he pono, he maamaa: hei utu mo te whakamahi i nga tootoo ki runga ake o te Dockerfile paerewa, i tuhia e matou ta matou otinga me te wetereo ritenga. He painga ano tenei: ko te kaikohi a Stapel te tino whakatutuki i ana mahi.
Heoi, i te wa e tuhi ana i ta matou ake kaihanga, kua ngaro matou i te tautoko mo Dockerfiles o naianei. Inaianei kua whakatikahia tenei koha, a a meake nei ka whakamahere matou ki te whakawhanake i te tautoko Dockerfile me ta matou Kaihanga Stapel ritenga mo nga hanga toha me te hanga ma te whakamahi i nga Kubernetes (arā, he hanga i runga i nga kaiwhaiwhai o roto o Kubernetes, pera i te kaniko).
Na, mena ka kitea e koe etahi Dockerfiles e rua e takoto ana ... whakamatauria werf!