Is féidir leat íomhánna Docker a thógáil anois i werf ag baint úsáide as Dockerfile rialta

Níos fearr déanach ná riamh. Nó conas a rinne muid beagnach botún tromchúiseach trí gan tacaíocht a bheith againn do Dockerfiles rialta chun íomhánna feidhmchláir a thógáil.

Is féidir leat íomhánna Docker a thógáil anois i werf ag baint úsáide as Dockerfile rialta

Beidh muid ag caint faoi caoirigh — Fóntas GitOps a chomhtháthaíonn le haon chóras CI/CD agus a sholáthraíonn saolré iomlán an fheidhmchláir a bhainistiú, a cheadaíonn:

  • íomhánna a bhailiú agus a fhoilsiú,
  • feidhmchláir a imscaradh i Kubernetes,
  • íomhánna nár úsáideadh a scriosadh ag baint úsáide as beartais speisialta.


Is é fealsúnacht an tionscadail uirlisí íseal-leibhéil a bhailiú i gcóras aontaithe amháin a thugann smacht d'innealtóirí DevOps ar iarratais. Más féidir, ba cheart fóntais reatha (cosúil le Helm and Docker) a úsáid. Mura bhfuil réiteach ar fhadhb, is féidir linn gach rud atá riachtanach chuige seo a chruthú agus a thacú.

Cúlra: do bhailitheoir íomhánna féin

Seo mar a tharla leis an mbailitheoir íomhá i werf: níor leor an gnáth Dockerfile dúinn. Má bhreathnaíonn tú go tapa ar stair an tionscadail, tháinig an fhadhb seo chun solais cheana féin sna chéad leaganacha de werf (ansin fós ar a dtugtar dapp).

Agus uirlis á cruthú againn chun feidhmchláir a chur le híomhánna Docker, thuig muid go tapa nach raibh Dockerfile oiriúnach dúinn le haghaidh roinnt tascanna an-sonracha:

  1. An gá atá le gnáthfheidhmchláir ghréasáin bheaga a thógáil de réir na scéime caighdeánach seo a leanas:
    • spleáchais feidhmchláir ar fud an chórais a shuiteáil,
    • sraith de leabharlanna spleáchais feidhmchlár a shuiteáil,
    • sócmhainní a bhailiú,
    • agus is tábhachtaí, nuashonraigh an cód san íomhá go tapa agus go héifeachtach.
  2. Nuair a dhéantar athruithe ar chomhaid tionscadail, ní mór don tógálaí ciseal nua a chruthú go tapa trí phaiste a chur i bhfeidhm ar na comhaid athraithe.
  3. Má tá comhaid áirithe athraithe, ansin is gá an chéim chleithiúnaí comhfhreagrach a atógáil.

Tá go leor féidearthachtaí eile ag ár mbailitheoir inniu, ach ba iad seo na mianta agus an t-áiteamh tosaigh.

Go ginearálta, gan smaoineamh faoi dhó, armálamar sinn féin leis an teanga ríomhchlárúcháin a d'úsáid muid (Féach thíos) agus bhuail an bóthar a chur i bhfeidhm DSL féin! De réir na gcuspóirí, bhí sé i gceist cur síos a dhéanamh ar an bpróiseas tionóil i gcéimeanna agus spleáchas na gcéimeanna sin ar chomhaid a chinneadh. Agus mar chomhlánú air bailitheoir féin, a d'iompaigh an DSL isteach sa sprioc deiridh - íomhá le chéile. Ar dtús bhí an DSL i Ruby, ach mar aistriú go Golang — cuireadh tús le cur síos ar chumraíocht ár mbailitheora i gcomhad YAML.

Is féidir leat íomhánna Docker a thógáil anois i werf ag baint úsáide as Dockerfile rialta
Sean-config le haghaidh dapp i Ruby

Is féidir leat íomhánna Docker a thógáil anois i werf ag baint úsáide as Dockerfile rialta
Cumraíocht reatha don werf ar YAML

D'athraigh meicníocht an bhailitheora le himeacht ama freisin. Ar dtús, ghin muid Dockerfile sealadach ar an eitilt ónár gcumraíocht, agus ansin thosaigh muid ag rith treoracha cóimeála i gcoimeádáin shealadacha agus tiomantas.

NB: Faoi láthair, tá ár mbailitheoir, a oibríonn lena config féin (i YAML) agus ar a dtugtar an bailitheoir Stapel, forbartha cheana féin ina uirlis chumhachtach go leor. Tá ailt ar leith tuillte ag a chur síos mionsonraithe, agus tá sonraí bunúsacha le fáil in doiciméadú.

Feasacht ar an bhfadhb

Ach thuig muid, agus ní láithreach, go raibh botún amháin déanta againn: níor chuir muid an cumas íomhánna a thógáil trí chaighdeán Dockerfile agus iad a chomhtháthú leis an mbonneagar bainistíochta feidhmchlár ceann go ceann céanna (i.e. íomhánna a bhailiú, iad a imscaradh agus a ghlanadh). Cén chaoi a bhféadfaí uirlis a dhéanamh le himscaradh i Kubernetes agus gan tacaíocht Dockerfile a chur i bhfeidhm, i.e. bealach caighdeánach chun cur síos a dhéanamh ar íomhánna don chuid is mó de na tionscadail?..

In ionad an cheist seo a fhreagairt, cuirimid réiteach ar fáil. Cad a tharlóidh má tá Dockerfile agat cheana féin (nó sraith Dockerfiles) agus gur mhaith leat werf a úsáid?

NB: Dála an scéil, cén fáth a mbeadh tú ag iarraidh fiú werf a úsáid? Tagann na príomhghnéithe síos go dtí seo a leanas:

  • timthriall bainistíochta iarratais iomlán lena n-áirítear glanadh íomhá;
  • an cumas cóimeáil roinnt íomhánna a bhainistiú ag an am céanna ó chumraíocht amháin;
  • Próiseas imlonnaithe feabhsaithe do chairteacha atá comhoiriúnach le Helm.

Is féidir liosta níos iomláine díobh a fháil ag leathanach tionscadail.

Mar sin, dá dtairgfí níos luaithe an Dockerfile a athscríobh inár config, anois déarfaimid go sona sásta: “Lig dúinn do Dockerfiles a thógáil!”

Conas a úsáid?

Bhí cur i bhfeidhm iomlán an ghné seo le feiceáil sa scaoileadh werf v1.0.3-beta.1. Is simplí an prionsabal ginearálta: sonraíonn an t-úsáideoir an cosán chuig Dockerfile atá ann cheana sa chumraíocht werf, agus ansin ritheann an t-ordú werf build... agus sin é - cuirfidh werf an íomhá le chéile. Breathnaímid ar shampla teibí.

Déanaimis an chéad cheann eile a fhógairt Dockerfile i bhfréamh an tionscadail:

FROM ubuntu:18.04
RUN echo Building ...

Agus beidh muid a fhógairt werf.yamla úsáideann seo Dockerfile:

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

Gach! Ar chlé rith werf build:

Is féidir leat íomhánna Docker a thógáil anois i werf ag baint úsáide as Dockerfile rialta

Ina theannta sin, is féidir leat an méid seo a leanas a dhearbhú werf.yaml chun roinnt íomhánna a thógáil ó Dockerfiles éagsúla ag an am céanna:

configVersion: 1
project: dockerfile-example
---
image: backend
dockerfile: ./dockerfiles/Dockerfile-backend
---
image: frontend
dockerfile: ./dockerfiles/Dockerfile-frontend

Ar deireadh, tacaíonn sé freisin le paraiméadair tógála breise a rith, mar shampla --build-arg и --add-host - trí werf config. Tá cur síos iomlán ar chumraíocht íomhá Dockerfile ar fáil ag leathanach doiciméadaithe.

Conas a oibríonn sé?

Le linn an phróisis tógála, feidhmíonn taisce caighdeánach na sraitheanna áitiúla i Docker. Mar sin féin, is é an rud atá tábhachtach ná an biatas sin freisin chomhtháthaíonn sé cumraíocht Dockerfile ina bhonneagar. Cad a chiallaíonn sé seo?

  1. Tá gach íomhá a tógadh ó Dockerfile comhdhéanta de chéim amháin ar a dtugtar dockerfile (Is féidir leat níos mó a léamh faoi na céimeanna atá i bhfoirgnimh anseo).
  2. Don stáitse dockerfile ríomhann werf síniú a bhraitheann ar a bhfuil sa chumraíocht Dockerfile. Nuair a athraíonn an chumraíocht Dockerfile, athraíonn an síniú stáitse dockerfile agus cuireann werf tús le hathchóiriú na céime seo le cumraíocht nua Dockerfile. Mura n-athraíonn an síniú, tógann werf an íomhá ón taisce (tá cur síos níos mó sonraí ar úsáid sínithe i weirf i an tuairisc seo).
  3. Ansin, is féidir na híomhánna a bailíodh a fhoilsiú leis an ordú werf publish (Nó werf build-and-publish) agus é a úsáid le himscaradh go Kubernetes. Déanfar íomhánna foilsithe do Chlárlann na nDugairí a ghlanadh trí úsáid a bhaint as uirlisí caighdeánacha glanta weirf, i.e. Déanfar seaníomhánna (níos sine ná N lá), íomhánna a bhaineann le craobhacha Git nach bhfuil ann, agus beartais eile a ghlanadh go huathoibríoch.

Is féidir tuilleadh sonraí faoi na pointí a ndéantar cur síos orthu anseo a fháil sna doiciméid:

Nótaí agus réamhchúraimí

1. Ní thacaítear le URL seachtrach in ADD

Faoi láthair ní thacaítear le URL seachtrach a úsáid i dtreoir ADD. Ní chuirfidh Werf tús le atógáil nuair a athraíonn an acmhainn ag an URL sonraithe. Tá sé beartaithe againn an ghné seo a chur leis go luath.

2. Ní féidir leat .git a chur leis an íomhá

Go ginearálta, ag cur eolaire .git san íomhá - drochchleachtas fí agus seo an fáth:

  1. Más rud é .git fós san íomhá deiridh, sáraíonn sé seo na prionsabail App 12 fachtóir: Ós rud é go gcaithfidh an íomhá deiridh a bheith nasctha le tiomantas amháin, níor cheart go bhféadfaí é a dhéanamh git checkout tiomantas treallach.
  2. .git méadaíonn sé méid na híomhá (is féidir leis an stór a bheith mór toisc gur cuireadh comhaid mhóra leis uair amháin agus gur scriosadh iad ansin). Ní bheidh méid an chrainn oibre a bhaineann le gealltanas sonrach amháin ag brath ar stair na n-oibríochtaí in Git. Sa chás seo, a chur leis agus a bhaint ina dhiaidh sin .git Ní oibreoidh an íomhá deiridh: gheobhaidh an íomhá ciseal breise fós - is é seo an chaoi a n-oibríonn Docker.
  3. Is féidir le Docker tús a chur le atógáil neamhriachtanach, fiú má tá an tiomantas céanna á thógáil, ach ó chrainn oibre éagsúla. Mar shampla, cruthaíonn GitLab eolairí clónáilte ar leith i /home/gitlab-runner/builds/HASH/[0-N]/yourproject nuair atá cóimeáil comhthreomhar cumasaithe. Beidh an reassembly breise mar gheall ar an bhfíric go bhfuil an eolaire .git difriúil i leaganacha clónáilte éagsúla den stór céanna, fiú má tá an tiomantas céanna tógtha.

Tá iarmhairtí ag an bpointe deireanach freisin nuair a bhíonn werf á úsáid. Éilíonn Werf go mbeidh an taisce tógtha i láthair agus roinnt orduithe á rith (m.sh. werf deploy). Nuair a ritheann na horduithe seo, ríomhann werf sínithe stáitse do na híomhánna a shonraítear i werf.yaml, agus caithfidh siad a bheith sa taisce tionóil - ar shlí eile ní bheidh an t-ordú in ann leanúint ar aghaidh ag obair. Má bhraitheann an síniú stáitse ar an ábhar .git, ansin faigheann muid taisce atá éagobhsaí d'athruithe ar chomhaid nach mbaineann le hábhar, agus ní bheidh werf in ann maoirsiú den sórt sin a mhaitheamh (le haghaidh tuilleadh sonraí, féach doiciméadú).

Go ginearálta, ag cur comhaid riachtanacha áirithe amháin trí na treoracha ADD in aon chás méadaítear éifeachtúlacht agus iontaofacht na scríofa Dockerfile, agus feabhsaíonn sé freisin cobhsaíocht an taisce a bhailítear le haghaidh seo Dockerfile, le hathruithe nach mbaineann le hábhar i Git.

Iomlán na

Bhí ár gcosán tosaigh chun ár dtógálaí féin a scríobh do riachtanais shonracha crua, macánta agus simplí: in ionad crutches a úsáid ar bharr an Dockerfile caighdeánach, scríobhamar ár réiteach le comhréir saincheaptha. Agus bhí a buntáistí ag baint leis seo: déanann an bailitheoir Stapel déileáil go foirfe lena thasc.

Mar sin féin, agus ár dtógálaí féin á scríobh againn, chailleamar an tacaíocht do Dockerfiles atá ann cheana féin. Tá an locht seo socraithe anois, agus sa todhchaí tá sé beartaithe againn tacaíocht Dockerfile a fhorbairt in éineacht lenár dtógálaí Stapel saincheaptha le haghaidh cóimeála dáilte agus le haghaidh cóimeála ag baint úsáide as Kubernetes (i.e. tionól ar reathaithe taobh istigh de Kubernetes, mar a dhéantar i kaniko).

Mar sin, má tá cúpla Dockerfiles ina luí timpeall ort go tobann ... bain triail as caoirigh!

PS Liosta de na doiciméid ar an ábhar

Léigh freisin inár mblag: “werf - ár n-uirlis le haghaidh CI / CD i Kubernetes (tuarascáil forbhreathnú agus físeáin)'.

Foinse: will.com

Add a comment