Próiseas forbartha agus tástála le Docker agus Gitlab CI

Molaim duit athscríbhinn na tuarascála le Alexander Sigachev ó Inventos “Próiseas forbartha agus tástála le Docker + Gitlab CI” a léamh

Is minic a chuireann na ceisteanna bunúsacha orthu siúd atá díreach ag tosú ar an bpróiseas forbartha agus tástála atá bunaithe ar Docker + Gitlab CI a chur i bhfeidhm. Cá háit le tosú? Conas a eagrú? Conas a thástáil?

Tá an tuarascáil seo go maith mar go labhraíonn sé ar bhealach struchtúrtha faoin bpróiseas forbartha agus tástála ag baint úsáide as Docker agus Gitlab CI. Tá an tuarascáil féin ó 2017. Is dóigh liom ón tuarascáil seo gur féidir leat na bunghnéithe, an mhodheolaíocht, an smaoineamh agus an taithí úsáide a fháil.

Who cares, le do thoil faoi an cat.

Alexander Sigachev is ainm dom. Oibrím do Inventos. Inseoidh mé duit faoi mo thaithí ag baint úsáide as Docker agus conas atá á chur i bhfeidhm againn de réir a chéile ar thionscadail sa chuideachta.

Ábhar na tuarascála: Próiseas forbartha ag baint úsáide as Docker agus Gitlab CI.

Próiseas forbartha agus tástála le Docker agus Gitlab CI

Seo é mo dhara caint faoi Docker. Ag tráth na chéad tuarascála, níor úsáideamar Docker ach amháin i bhForbairt ar mheaisíní forbróra. Ba é líon na bhfostaithe a d'úsáid Docker ná thart ar 2-3 duine. De réir a chéile, fuarthas taithí agus bhog muid beagán níos faide. Nasc lenár chéad tuairisc.

Cad a bheidh sa tuarascáil seo? Roinnfimid ár dtaithí faoi na rácaí a bhailigh muid, na fadhbanna a réitigh muid. Ní raibh sé go hálainn i ngach áit, ach thug sé deis dúinn bogadh ar aghaidh.

Ár mana: dockerize gach rud a fhaigheann muid ár lámha ar.

Próiseas forbartha agus tástála le Docker agus Gitlab CI

Cad iad na fadhbanna atá á réiteach againn?

Nuair a bhíonn roinnt foirne ag cuideachta, is acmhainn roinnte é an ríomhchláraitheoir. Tá céimeanna ann nuair a tharraingítear ríomhchláraitheoir as tionscadal amháin agus a thugtar do thionscadal eile ar feadh tamaill.

D'fhonn ríomhchláraitheoir a thuiscint go tapa, ní mór dó cód foinse an tionscadail a íoslódáil agus timpeallacht a sheoladh chomh tapa agus is féidir, rud a ligfidh dó dul chun cinn breise a dhéanamh maidir le fadhbanna an tionscadail seo a réiteach.

De ghnáth, má thosaíonn tú ón tús, is beag doiciméadú atá sa tionscadal. Níl ach eolas ag sean-uaineoirí ar conas é a shocrú. Socraíonn fostaithe a n-ionad oibre ina n-aonar i lá nó dhó. Chun é seo a bhrostú, d'úsáideamar Docker.

Is é an chéad chúis eile ná caighdeánú na suíomhanna san Fhorbairt. I mo thaithí féin, glacann forbróirí an tionscnamh i gcónaí. I ngach cúigiú cás, cuirtear fearann ​​saincheaptha isteach, mar shampla vasya.dev. Ina shuí in aice liom tá mo chomharsa Petya, a bhfuil a bhfearann ​​​​petya.dev. Forbraíonn siad suíomh Gréasáin nó comhpháirt córais éigin ag baint úsáide as an ainm fearainn seo.

Nuair a fhásann an córas agus nuair a thosaíonn na hainmneacha fearainn seo á gcur san áireamh sa chumraíocht, tagann coinbhleacht i dtimpeallachtaí Forbartha chun cinn agus athscríobhtar cosán an tsuímh.

Tarlaíonn an rud céanna le socruithe bunachar sonraí. Ní bhacann roinnt daoine le slándáil agus oibríonn siad le pasfhocal fréimhe folamh. Ag an gcéim suiteála, d'iarr MySQL pasfhocal ar dhuine agus ba é 123 an pasfhocal. Tarlaíonn sé go minic go raibh cumraíocht an bhunachair shonraí ag athrú i gcónaí ag brath ar thiomantas an fhorbróra. Ceartaigh duine éigin, níor cheartaigh duine éigin an cumraíocht. Bhí cleasanna ann nuair a chuireamar roinnt config tástála isteach .gitignore agus bhí ar gach forbróir an bunachar sonraí a shuiteáil. Rinne sé seo an próiseas tosaithe níos deacra. I measc rudaí eile, ní mór duit cuimhneamh ar an mbunachar sonraí. Ní mór an bunachar sonraí a thúsú, ní mór pasfhocal a chlárú, ní mór úsáideoir a chlárú, ní mór comhartha a chruthú, agus mar sin de.

Fadhb eile is ea leaganacha éagsúla de leabharlanna. Tarlaíonn sé go minic go n-oibríonn forbróir ar thionscadail éagsúla. Tá tionscadal Legacy ann, a thosaigh cúig bliana ó shin (ó 2017 - nóta an eagarthóra). Ag an tús thosaigh muid le MySQL 5.5. Tá tionscadail nua-aimseartha ann freisin ina bhfuilimid ag iarraidh leaganacha níos nua-aimseartha de MySQL a chur i bhfeidhm, mar shampla 5.7 nó níos sine (i 2017 - nóta an eagarthóra)

Tá a fhios ag aon duine a oibríonn le MySQL go n-iompraíonn na leabharlanna seo spleáchais. Is fadhb mhór é 2 bhunachar sonraí a rith le chéile. Ar a laghad, bíonn fadhbanna ann seanchliant a nascadh leis an mbunachar sonraí nua. Cruthaíonn sé seo roinnt fadhbanna dá bharr.

Is é an chéad fhadhb eile nuair a oibríonn forbróir ar mheaisín áitiúil, úsáideann sé acmhainní áitiúla, comhaid áitiúla, RAM áitiúil. Déantar an t-idirghníomhú go léir nuair a dhéantar réiteach ar fhadhbanna a fhorbairt laistigh de chreat an fhíric go n-oibríonn sé ar mheaisín amháin. Sampla a bheadh ​​ann nuair a bhíonn freastalaithe inneall againn i Táirgeadh 3, agus sábhálann an forbróir comhaid chuig an bhfréamh-eolaire agus as sin tógann nginx na comhaid chun freagra a thabhairt ar an iarratas. Nuair a thagann cód den sórt sin isteach i Táirgeadh, tarlaíonn sé go bhfuil an comhad i láthair ar cheann de 3 freastalaithe.

Tá treo na micriseirbhísí ag forbairt faoi láthair. Nuair a roinnimid ár bhfeidhmchláir mhóra i roinnt comhpháirteanna beaga a idirghníomhaíonn lena chéile. Ligeann sé seo duit teicneolaíochtaí a roghnú le haghaidh stack tasc ar leith. Ligeann sé seo duit freisin an obair agus an réimse freagrachta a roinnt idir fhorbróirí.

Is beag tionchar a bhíonn ag forbróir aghaidh, atá ag forbairt in JS, ar an inneall. Forbraíonn an forbróir backend, ar a seal,, inár gcás, Ruby on Rails agus ní chuireann sé isteach ar Frondend. Déantar an t-idirghníomhú ag baint úsáide as an API.

Mar bhónas, ag baint úsáide as Docker bhíomar in ann acmhainní a athchúrsáil ar Staging. Bhí socruithe áirithe ag teastáil ó gach tionscadal, mar gheall ar a shainiúlachtaí. Go fisiciúil, bhí sé riachtanach ceachtar freastalaí fíorúil a leithdháileadh agus iad a chumrú ar leithligh, nó roinnt de chineál éigin timpeallacht athraitheach agus d'fhéadfadh tionscadail tionchar a imirt ar a chéile, ag brath ar an leagan de na leabharlanna.

Próiseas forbartha agus tástála le Docker agus Gitlab CI

Uirlisí. Cad a úsáidimid?

  • Docker féin. Déanann Dockerfile cur síos ar spleáchas feidhmchlár amháin.
  • Is beart é Docker-compose a thugann le chéile roinnt dár bhfeidhmchláir Docker.
  • Bainimid úsáid as GitLab chun cód foinse a stóráil.
  • Bainimid úsáid as GitLab-CI le haghaidh comhtháthú córas.

Próiseas forbartha agus tástála le Docker agus Gitlab CI

Tá dhá chuid sa tuarascáil.

Inseoidh an chéad chuid duit conas Docker a reáchtáil ar mheaisíní na bhforbróirí.

Beidh an dara cuid ag caint faoi conas idirghníomhú le GitLab, conas a reáchtáilimid tástálacha agus conas a rolladh amach go Staging.

Próiseas forbartha agus tástála le Docker agus Gitlab CI

Is teicneolaíocht é Docker a ligeann (ag baint úsáide as cur chuige dearbhaithe) cur síos a dhéanamh ar na comhpháirteanna riachtanacha. Seo sampla Dockerfile. Dearbhaímid anseo go bhfuil muid ag teacht le hoidhreacht ón íomhá oifigiúil Docker de Ruby: 2.3.0. Tá leagan Ruby 2.3 suiteáilte ann. Suiteáilimid na leabharlanna tionóil riachtanacha agus NodeJS. Déanaimid cur síos go bhfuil eolaire á chruthú againn /app. Sannaimid an t-eolaire aipeanna mar an t-eolaire oibre. San eolaire seo cuirimid an t-íosmhéid Gemfile agus Gemfile.lock atá riachtanach. Ansin tógann muid tionscadail a shuiteáil an íomhá spleáchais seo. Cuirimid in iúl go mbeidh an coimeádán réidh le héisteacht ar phort seachtrach 3000. Is é an t-ordú deireanach an t-ordú a sheolann ár n-iarratas go díreach. Má dhéanaimid an t-ordú reáchtáil tionscadail, déanfaidh an feidhmchlár iarracht an t-ordú sonraithe a rith agus a rith.

Próiseas forbartha agus tástála le Docker agus Gitlab CI

Is sampla beag é seo de chomhad cumadóireachta docker. Sa chás seo, léirímid go bhfuil nasc idir dhá choimeádán. Tá sé seo díreach isteach sa tseirbhís bunachar sonraí agus seirbhís gréasáin. Éilíonn ár bhfeidhmchláir ghréasáin de chineál éigin i bhformhór na gcásanna mar inneall chun sonraí a stóráil. Ós rud é go n-úsáidimid MySQL, tá an sampla le MySQL - ach ní chuireann aon rud cosc ​​​​ar bhunachar sonraí eile a úsáid (PostgreSQL, Redis).

Glacann muid an íomhá MySQL 5.7.14 gan athruithe ón bhfoinse oifigiúil ó mhol Docker. Bailímid an íomhá atá freagrach as ár bhfeidhmchlár gréasáin ón eolaire reatha. Le linn an chéad seoladh, bailíonn sé íomhá dúinn. Ansin ritheann sé an t-ordú atá á fhorghníomhú againn anseo. Má théann muid ar ais, feicfimid go ndearnadh an t-ordú seolta a shainiú trí Puma. Is seirbhís é Puma atá scríofa i Ruby. Sa dara cás sáraíonn muid. Is féidir leis an ordú seo a bheith treallach ag brath ar ár gcuid riachtanas nó tascanna.

Déanaimid cur síos freisin go gcaithfimid an calafort a chur ar aghaidh ar ár meaisín óstach forbróra ó 3000 go 3000 calafort coimeádán. Déantar é seo go huathoibríoch ag baint úsáide as iptables agus a mheicníocht féin, atá leabaithe go díreach i Docker.

Is féidir leis an bhforbróir, mar a bhí roimhe seo, rochtain a fháil ar aon seoladh IP atá ar fáil, mar shampla, 127.0.0.1 seoladh IP áitiúil nó seachtrach an mheaisín.

Deir an líne dheireanach go mbraitheann an coimeádán gréasáin ar an gcoimeádán db. Nuair a ghlaoimid an coimeádán gréasáin le seoladh, seolfaidh docker-compose an bunachar sonraí dúinn ar dtús. Cheana féin nuair a thosaíonn an bunachar sonraí (go deimhin, tar éis seoladh an choimeádáin! Ní ráthaíonn sé seo ullmhacht an bhunachair sonraí) seolfaidh sé ár n-iarratas, ár n-innill.

Ligeann sé seo dúinn earráidí a sheachaint nuair nach bhfuil an bunachar sonraí in airde agus ligeann sé dúinn acmhainní a shábháil nuair a stopaimid coimeádán an bhunachair sonraí, rud a fhágann acmhainní do thionscadail eile a shaoradh.

Próiseas forbartha agus tástála le Docker agus Gitlab CI

Cad a thugann úsáid dockerization bunachar sonraí ar thionscadal dúinn? Déanaimid taifead ar an leagan MySQL do gach forbróir. Ligeann sé seo duit roinnt earráidí a sheachaint a d’fhéadfadh tarlú nuair a athraíonn leaganacha, nuair a athraíonn an chomhréir, an chumraíocht agus na socruithe réamhshocraithe. Ligeann sé seo duit óstainm coitianta a shonrú don bhunachar sonraí, logáil isteach, pasfhocal. Táimid ag bogadh ar shiúl ón zú ainmneacha agus coinbhleachtaí i gcomhaid cumraíochta a bhí ann roimhe seo.

Tá an deis againn cumraíocht níos fearr a úsáid don timpeallacht Forbartha, a bheidh difriúil ón gceann réamhshocraithe. Tá MySQL cumraithe de réir réamhshocraithe le haghaidh meaisíní lag agus tá a fheidhmíocht lasmuigh den bhosca an-íseal.

Próiseas forbartha agus tástála le Docker agus Gitlab CI

Ligeann Docker duit ateangaire Python, Ruby, NodeJS, PHP a úsáid den leagan atá ag teastáil. Faighimid réidh leis an ngá atá le húsáid de chineál éigin bainisteoir leagan. Roimhe seo, baineadh úsáid as pacáiste rpm do Ruby, rud a thug deis duit an leagan a athrú ag brath ar an tionscadal. A bhuíochas leis an gcoimeádán Docker, ligeann sé seo duit freisin cód a aistriú go réidh agus é a leagan in éineacht le spleáchais. Níl aon fhadhb againn leagan an ateangaire agus an chóid a thuiscint. Chun an leagan a nuashonrú, ní mór duit an sean-choimeádán a ísliú agus an coimeádán nua a ardú. Má théann rud éigin mícheart, is féidir linn an coimeádán nua a ísliú, an sean-choimeád a ardú.

Tar éis an íomhá a thógáil, beidh na coimeádáin sa dá Fhorbairt agus Táirgeadh mar an gcéanna. Tá sé seo fíor go háirithe i gcás suiteálacha móra.

Próiseas forbartha agus tástála le Docker agus Gitlab CI Ar Frontend úsáidimid JavaScipt agus NodeJS.

Anois tá an tionscadal deireanach againn ar ReacJS. Sheol an forbróir gach rud sa choimeádán agus d'fhorbair sé ag baint úsáide as athlódáil te.

Ina dhiaidh sin, seoltar an tasc JavaScipt a chur le chéile agus seoltar an cód arna chur le chéile go statach trí nginx, rud a shábhálann acmhainní.

Próiseas forbartha agus tástála le Docker agus Gitlab CI

Tá léaráid dár dtionscadal is déanaí curtha ar fáil agam anseo.

Cad iad na fadhbanna a réitigh tú? Bhí gá againn córas a thógáil lena n-idirghníomhaíonn gléasanna soghluaiste. Faigheann siad sonraí. Is é ceann de na féidearthachtaí ná fógraí brú a sheoladh chuig an ngléas seo.

Cad atá déanta againn chuige seo?

Roinneamar an feidhmchlár sna comhpháirteanna seo a leanas: cuid admin in JS, inneall a oibríonn trí chomhéadan REST faoi Ruby on Rails. Idirghníomhaíonn Inneall leis an mbunachar sonraí. Tugtar an toradh a ghintear don chliant. Idirghníomhaíonn an painéal riaracháin leis an inneall agus leis an mbunachar sonraí trí chomhéadan REST.

Bhí gá againn freisin fógraí Brúigh a sheoladh. Roimhe sin, bhí tionscadal againn inar cuireadh meicníocht i bhfeidhm a bhí freagrach as fógraí a sheachadadh chuig ardáin shoghluaiste.

Tá an scéim seo a leanas forbartha againn: idirghníomhaíonn an t-oibreoir ón mbrabhsálaí leis an bpainéal riaracháin, idirghníomhaíonn an painéal admin leis an inneall, is é an tasc ná fógraí Brúigh a sheoladh.

Idirghníomhaíonn fógraí brúigh le comhpháirt eile a chuirtear i bhfeidhm in NodeJS.

Tógtar scuainí agus seoltar fógraí de réir a meicníochta féin.

Tarraingítear dhá bhunachar sonraí anseo. Faoi láthair, ag baint úsáide as Docker, úsáidimid 2 bhunachar sonraí neamhspleácha nach bhfuil ar aon bhealach nasctha lena chéile. Chomh maith leis an bhfíric go bhfuil líonra fíorúil coitianta acu, agus stóráiltear sonraí fisiceacha in eolairí éagsúla ar mheaisín an fhorbróra.

Próiseas forbartha agus tástála le Docker agus Gitlab CI

An rud céanna ach i líon. Tá athúsáid cód tábhachtach anseo.

Más luaithe a labhair muid faoi chód a athúsáid i bhfoirm leabharlanna, ansin sa sampla seo déantar ár seirbhís, a fhreagraíonn do fhógraí Brúigh, a athúsáid mar fhreastalaí iomlán. Soláthraíonn sé API. Agus idirghníomhaíonn ár bhforbairt nua leis.

Ag an am sin bhíomar ag úsáid leagan 4 de NodeJS. Anois (i 2017 - nóta an eagarthóra) inár bhforbairtí is déanaí úsáidimid leagan 7 de NodeJS. Níl aon fhadhb ann maidir le comhpháirteanna nua a bhaineann le leaganacha nua de leabharlanna.

Más gá, is féidir leat an leagan NodeJS den tseirbhís fógra Brúigh a athmhacrú agus a ardú.

Agus más féidir linn comhoiriúnacht API a choinneáil, beidh sé indéanta tionscadail eile a úsáideadh roimhe seo a athsholáthar.

Próiseas forbartha agus tástála le Docker agus Gitlab CI

Cad is gá duit a chur leis Docker? Cuirimid Dockerfile lenár stór, a chuireann síos ar na spleáchais riachtanacha. Sa sampla seo, roinntear na comhpháirteanna go loighciúil. Is é seo an trealamh íosta le haghaidh forbróir inneall.

Agus tionscadal nua á chruthú againn, cruthaímid Dockerfile agus déanaimid cur síos ar an éiceachóras atá ag teastáil (Python, Ruby, NodeJS). I docker-compose, cuireann sé síos ar an spleáchas is gá - an bunachar sonraí. Déanaimid cur síos go bhfuil gá againn le bunachar sonraí de leagan den sórt sin agus den sórt sin, chun sonraí a stóráil ann agus ansiúd.

Bainimid úsáid as tríú coimeádán ar leith le nginx chun freastal ar ábhar statach. Is féidir pictiúir a uaslódáil. Cuireann an backend iad i méid réamhullmhaithe, atá suite freisin i gcoimeádán le nginx, a sholáthraíonn sonraí statacha.

Chun cumraíocht nginx agus mysql a stóráil, chuireamar fillteán Docker leis ina stóraimid na cumraíochtaí riachtanacha. Nuair a dhéanann forbróir clón git de stór ar a mheaisín, tá tionscadal réidh aige cheana féin le haghaidh forbairt áitiúil. Níl aon cheist faoi cén port nó cé na socruithe a chuirfear i bhfeidhm.

Próiseas forbartha agus tástála le Docker agus Gitlab CI

Ansin tá roinnt comhpháirteanna againn: admin, info-API, fógraí brú.

Chun é seo go léir a sheoladh, chruthaigh muid stór eile ar a dtugtar dockerized-app. Bainimid úsáid as stórtha iolracha do gach comhpháirt faoi láthair. Tá siad difriúil go loighciúil - i GitLab tá sé cosúil le fillteán, ach ar mheaisín an fhorbróra tá sé cosúil le fillteán le haghaidh tionscadal ar leith. Tá leibhéal amháin thíos na comhpháirteanna a chuirfear le chéile.

Próiseas forbartha agus tástála le Docker agus Gitlab CI

Is sampla é seo den ábhar dockerized-app. Cuirimid eolaire Docker anseo freisin, ina líonaimid isteach na cumraíochtaí a theastaíonn le haghaidh idirghníomhú na gcomhpháirteanna go léir. Tá README.md ann a chuireann síos go hachomair ar conas an tionscadal a sheoladh.

Anseo tá dhá chomhad cumadóireachta docker curtha i bhfeidhm againn. Déantar é seo ionas go mbeifear in ann seoladh i gcéimeanna. Nuair a oibríonn forbróir leis an eithne, ní gá fógraí Brúigh a bheith aige, seolann sé an comhad cumadóireachta docker agus, dá réir sin, sábháiltear acmhainní.

Má tá gá le comhtháthú le fógraí Brúigh, seoltar docker-compose.yaml agus docker-compose-push.yaml.

Ós rud é go bhfuil docker-compose.yaml agus docker-compose-push.yaml san fhillteán, cruthaítear líonra fíorúil amháin go huathoibríoch.

Próiseas forbartha agus tástála le Docker agus Gitlab CI

Cur síos ar na comhpháirteanna. Is comhad níos forbartha é seo atá freagrach as comhpháirteanna a bhailiú. Cad atá iontach anseo? Anseo tugaimid isteach an chomhpháirt cothromóir.

Is íomhá Docker réidh-déanta é seo a ritheann nginx agus feidhmchlár a éisteann leis an soicéad Docker. Dinimiciúla, de réir mar a chuirtear coimeádáin ar siúl agus as, athghintear an chumraíocht nginx. Déanaimid láimhseáil na gcomhpháirteanna a dháileadh ag baint úsáide as ainmneacha fearainn tríú leibhéal.

Don timpeallacht Forbartha úsáidimid an fearann ​​.dev - api.informer.dev. Tá feidhmchláir le fearann ​​.dev ar fáil ar mheaisín áitiúil an fhorbróra.

Ansin aistrítear na cumraíochtaí chuig gach tionscadal agus seoltar gach tionscadal le chéile ag an am céanna.

Próiseas forbartha agus tástála le Docker agus Gitlab CI

Má thaispeánaimid go grafach é, tarlaíonn sé gurb é an cliant ár mbrabhsálaí nó uirlis de chineál éigin lena ndéanaimid iarratais chuig an gcothromóir.

Cinneann an cothromóir cén coimeádán is gá a rochtain bunaithe ar an ainm fearainn.

D'fhéadfadh sé seo a bheith nginx, a sholáthraíonn JS don phainéal admin. Is féidir é seo a dhéanamh trí nginx, a sholáthraíonn an API, nó comhaid statacha, a sholáthraíonn nginx i bhfoirm íomhánna luchtaithe.

Taispeánann an léaráid go bhfuil na coimeádáin nasctha le líonra fíorúil agus i bhfolach taobh thiar de seachfhreastalaí.

Ar mheaisín an fhorbróra, is féidir leat rochtain a fháil ar an gcoimeádán a fhios agam an IP, ach i bprionsabal ní úsáidimid é seo. Ní beagnach aon ghá le teagmháil dhíreach.

Próiseas forbartha agus tástála le Docker agus Gitlab CI

Cén sampla ar cheart dom breathnú air chun m’iarratas a dhochrú? Is é mo thuairim gur sampla maith é an íomhá docker oifigiúil do MySQL.

Tá sé casta go leor. Tá go leor leaganacha ann. Ach ligeann a fheidhmiúlacht duit go leor riachtanas a d'fhéadfadh teacht chun cinn sa phróiseas forbartha breise a chlúdach. Má ghlacann tú an t-am agus go dtuigeann tú conas a idirghníomhaíonn sé go léir, ansin is dóigh liom nach mbeidh aon fhadhb agat é a chur i bhfeidhm tú féin.

De ghnáth bíonn naisc chuig github.com ag Hub.docker.com, áit a soláthraítear sonraí amh go díreach ónar féidir leat íomhá a thógáil leat féin.

Anuas air sin sa stór seo tá script docker-endpoint.sh, atá freagrach as seoladh an iarratais a chur i dtosach agus a phróiseáil tuilleadh.

Chomh maith leis sin sa sampla seo tá an fhéidearthacht chumraíocht ag baint úsáide as athróga timpeallachta. Trí athróg timpeallachta a shainmhíniú nuair a bhíonn coimeádán amháin á rith nó trí docker-compose, is féidir linn a rá go gcaithfimid focal faire folamh a shocrú le haghaidh docker le haghaidh root ar MySQL nó cibé rud is mian linn.

Tá rogha ann pasfhocal randamach a chruthú. Deirimid go dteastaíonn úsáideoir, ní mór dúinn pasfhocal a shocrú don úsáideoir, agus ní mór dúinn bunachar sonraí a chruthú.

Inár dtionscadail, tá an Dockerfile beagán aontaithe againn, atá freagrach as tús a chur leis. Rinneamar é a choigeartú de réir ár gcuid riachtanas chun na cearta úsáideora a úsáideann an feidhmchlár a leathnú. D'fhág sin gur féidir bunachar sonraí a chruthú ón gconsól feidhmchlár amach anseo. Tá orduithe ag feidhmchláir Ruby chun bunachair shonraí a chruthú, a mhodhnú agus a scriosadh.

Próiseas forbartha agus tástála le Docker agus Gitlab CI

Is sampla é seo den chuma atá ar leagan sonrach de MySQL ar github.com. Is féidir leat an Dockerfile a oscailt agus a fheiceáil conas a dhéantar an tsuiteáil ann.

script docker-endpoint.sh freagrach as an bpointe iontrála. Le linn tosaithe tosaigh, tá gá le roinnt gníomhartha ullmhúcháin agus tá na gníomhartha seo go léir san áireamh sa script tosaigh.

Próiseas forbartha agus tástála le Docker agus Gitlab CI

A ligean ar bogadh ar aghaidh go dtí an dara cuid.

D'aistrigh muid go gitlab chun cóid foinse a stóráil. Is córas measartha cumhachtach é seo a bhfuil comhéadan amhairc aige.

Ar cheann de na comhpháirteanna Gitlab tá Gitlab CI. Ligeann sé duit cur síos a dhéanamh ar shraith orduithe a úsáidfear ina dhiaidh sin chun córas seachadta cód a eagrú nó chun tástáil uathoibrithe a rith.

Tuarascáil ar Gitlab CI 2 https://goo.gl/uohKjI — tá an tuairisc ó chlub Ruby Russia mionsonraithe go leor agus b’fhéidir go mbeadh spéis agat ann.

Próiseas forbartha agus tástála le Docker agus Gitlab CI

Anois féachfaimid ar a bhfuil ag teastáil chun Gitlab CI a ghníomhachtú. Chun Gitlab CI a sheoladh, ní mór dúinn ach an comhad .gitlab-ci.yml a chur i bhfréamh an tionscadail.

Anseo déanaimid cur síos go dteastaíonn uainn seicheamh stáit a dhéanamh mar thástáil, imscaradh.

Déanaimid scripteanna a fhorghníomhú a ghlaonn go díreach ar thógáil docker-comhdhéanta dár bhfeidhmchlár. Is sampla é seo den inneall díreach.

Ansin deirimid go bhfuil sé riachtanach ascnaimh a rith chun an bunachar sonraí a athrú agus tástálacha a rith.

Má dhéantar na scripteanna a fhorghníomhú i gceart agus nach gcuireann siad cód earráide ar ais, ansin leanann an córas ar aghaidh go dtí an dara céim den imscaradh.

Tá an chéim imlonnaithe curtha i bhfeidhm faoi láthair don stáitsiú. Níor eagraíomar atosú gan am aga.

Déanaimid na coimeádáin go léir a mhúchadh go láidir, agus ansin déanaimid na coimeádáin go léir a ardú arís, a bhailítear ag an gcéad chéim le linn na tástála.

Rithfimid na hascnaimh bhunachar sonraí a scríobh na forbróirí don timpeallacht athraitheach reatha.

Tá nóta ann nár cheart é seo a chur i bhfeidhm ach amháin ar an máistir-bhrainse.

Ní oibríonn sé nuair a athraítear brainsí eile.

Is féidir rolladh amach a eagrú feadh bhrainsí.

Próiseas forbartha agus tástála le Docker agus Gitlab CI

Chun é seo a eagrú tuilleadh, ní mór dúinn Gitlab Runner a shuiteáil.

Tá an áirgiúlacht seo scríofa i Golang. Is comhad amháin é mar atá coitianta i saol Golang, nach dteastaíonn aon spleáchais uaidh.

Ag am tosaithe cláraimid Gitlab Runner.

Faighimid an eochair i gcomhéadan gréasáin Gitlab.

Ansin tugaimid an t-ordú tosaigh ar an líne ordaithe.

Runner Gitlab á chumrú i mód dialóige (Shell, Docker, VirtualBox, SSH)

Déanfar an cód ar Gitlab Runner a fhorghníomhú ar gach gealltanas ag brath ar an socrú .gitlab-ci.yml.

Próiseas forbartha agus tástála le Docker agus Gitlab CI

An chuma atá air ó thaobh amhairc de i Gitlab sa chomhéadan gréasáin. Tar éis GItlab CI a nascadh, tá bratach againn a thaispeánann cén staid ina bhfuil an tógáil faoi láthair.

Feicimid go ndearnadh gealltanas 4 nóiméad ó shin a d'éirigh leis na tástálacha go léir agus nach raibh aon fhadhbanna ann.

Próiseas forbartha agus tástála le Docker agus Gitlab CI

Is féidir linn breathnú níos mine ar na foirgnimh. Anseo feicimid go bhfuil dhá stát caite cheana féin. Stádas tástála agus stádas imlonnaithe ag an stáitsiú.

Má chliceálann muid ar thógáil ar leith, beidh aschur consól de na horduithe a seoladh sa phróiseas de réir .gitlab-ci.yml.

Próiseas forbartha agus tástála le Docker agus Gitlab CI

Seo an chuma atá ar scéal ár dtáirge. Feicimid go bhfuil iarrachtaí rathúla déanta. Nuair a chuirtear na tástálacha isteach, ní bhogann siad go dtí an chéad chéim eile agus ní dhéantar an cód stáitse a nuashonrú.

Próiseas forbartha agus tástála le Docker agus Gitlab CI

Cad iad na fadhbanna a réitigh muid le linn an stáitse nuair a chuireamar docker i bhfeidhm? Tá comhpháirteanna inár gcóras agus níor ghá dúinn ach cuid de na comhpháirteanna a nuashonraíodh sa stór a atosú, agus ní an córas iomlán.

Chun seo a dhéanamh, bhí orainn gach rud a scaradh i bhfillteáin ar leith.

Tar éis dúinn é seo a dhéanamh, bhí fadhb againn leis an bhfíric go gcruthaíonn Docker-compose a spás líonra féin do gach fillteán agus nach bhfeiceann sé comhpháirteanna a chomharsa.

Chun dul timpeall, chruthaigh muid an líonra de láimh i Docker. In Docker-compose scríobhadh gur cheart duit líonra den sórt sin a úsáid don tionscadal seo.

Mar sin, feiceann gach comhpháirt a thosaíonn leis an mogalra seo comhpháirteanna i gcodanna eile den chóras.

Is í an chéad fhadhb eile ná an chéimniú a roinnt idir roinnt tionscadal.

Ós rud é go bhfuil cuma álainn ar seo go léir agus chomh gar agus is féidir do tháirgeadh, is maith an port 80 nó 443 a úsáid, a úsáidtear i ngach áit sa WEB.

Próiseas forbartha agus tástála le Docker agus Gitlab CI

Conas a réitigh muid é seo? Sannamar Runner Gitlab amháin do gach tionscadal mór.

Ligeann Gitlab duit roinnt Runners Gitlab dáilte a sheoladh, rud a dhéanfaidh na tascanna go léir ceann ar cheann in ord chaotic agus iad a rith.

Chun fadhbanna tí a sheachaint, rinneamar an grúpa dár dtionscadal a theorannú go Runner Gitlab amháin, a dhéileálann lenár méideanna gan fadhbanna.

Bhogamar nginx-seachfhreastalaí isteach i script seolta ar leith agus scríobhamar greillí na dtionscadal go léir a bhí ann.

Tá greille amháin ag ár dtionscadal, agus tá roinnt eangacha ag an gcothromóir bunaithe ar ainmneacha tionscadail. Is féidir é a sheachfhreastalaí a thuilleadh trí ainmneacha fearainn.

Tagann ár n-iarratais tríd an bhfearann ​​​​ar phort 80 agus déantar iad a réiteach do ghrúpa coimeádán a fhreastalaíonn ar an bhfearann ​​​​seo.

Próiseas forbartha agus tástála le Docker agus Gitlab CI

Cad iad na fadhbanna eile a bhí ann? Is é seo a ritheann gach coimeádán mar fhréamh de réir réamhshocraithe. Is é seo an fhréamh-óstach neamhchothrom an chórais.

Mar sin féin, má théann tú isteach sa choimeádán, beidh sé fréamhaithe agus faigheann an comhad a chruthaímid sa choimeádán seo cearta fréamhacha.

Má tháinig forbróir isteach sa choimeádán agus má rinne sé roinnt orduithe ann a ghin comhaid, ansin d'fhág sé an coimeádán, ansin ina eolaire oibre tá comhad aige nach bhfuil rochtain aige air.

Conas is féidir é seo a réiteach? Is féidir leat úsáideoirí a bheidh sa choimeádán a chur leis.

Cad iad na fadhbanna a tháinig chun cinn nuair a chuireamar an t-úsáideoir leis?

Nuair a bhíonn úsáideoir á chruthú, is minic nach ionann an ID grúpa (AitheantasÚsáideora) agus an ID úsáideora (GID).

Chun an fhadhb seo a réiteach sa choimeádán bainimid úsáid as úsáideoirí le ID 1000.

Is é ár gcás, bhí sé seo ag an am céanna leis an bhfíric go n-úsáideann beagnach gach forbróir Ubuntu OS. Agus i Ubuntu OS tá ID 1000 ag an gcéad úsáideoir.

Próiseas forbartha agus tástála le Docker agus Gitlab CI

An bhfuil pleananna againn?

Léigh doiciméadú an Docker arís. Tá an tionscadal ag forbairt go gníomhach, tá doiciméadú ag athrú. Tá sonraí a fuarthas dhá nó trí mhí ó shin ag éirí as dáta go mall.

Seans go bhfuil cuid de na fadhbanna a réitigh muid réitithe cheana féin trí mheán caighdeánach.

Ba mhaith liom bogadh ar aghaidh agus bogadh go díreach chuig ceolfhoirneoireacht.

Sampla amháin is ea meicníocht ionsuite Docker ar a dtugtar Docker Swarm, a thagann as an mbosca. Ba mhaith liom rud éigin a sheoladh i dtáirgeadh bunaithe ar theicneolaíocht Docker Swarm.

Is deacair coimeádáin sceite oibriú le lomáin. Anois tá na logaí scoite amach. Tá siad scaipthe i gcoimeádáin. Ceann de na tascanna ná rochtain áisiúil a dhéanamh ar logaí trí chomhéadan gréasáin.

Próiseas forbartha agus tástála le Docker agus Gitlab CI

Foinse: will.com

Add a comment