Pròiseas leasachaidh is deuchainn le Docker agus Gitlab CI

Tha mi a’ moladh an tar-sgrìobhadh den aithisg le Alexander Sigachev bho Inventos a leughadh “Pròiseas leasachaidh is deuchainn le Docker + Gitlab CI”

Bidh an fheadhainn a tha dìreach a’ tòiseachadh air a’ phròiseas leasachaidh is deuchainn stèidhichte air Docker + Gitlab CI gu tric a’ faighneachd cheistean bunaiteach. Càite an tòisich? Ciamar a chur air dòigh? Ciamar a dhearbhadh?

Tha an aithisg seo math oir tha i a’ bruidhinn ann an dòigh structarail mun phròiseas leasachaidh is deuchainn a’ cleachdadh Docker agus Gitlab CI. Tha an aithisg fhèin bho 2017. Tha mi a’ smaoineachadh gun ionnsaich thu bhon aithisg seo na bunaitean, an dòigh-obrach, am beachd, an eòlas cleachdaidh.

Cò leis a tha cùram, mas e do thoil e fon chat.

Is e m ’ainm Alexander Sigachev. Tha mi ag obair dha Inventos. Innsidh mi dhut mun eòlas agam air a bhith a’ cleachdadh Docker agus mar a tha sinn ga bhuileachadh mean air mhean air pròiseactan sa chompanaidh.

Cuspair an taisbeanaidh: Pròiseas leasachaidh a’ cleachdadh Docker agus Gitlab CI.

Pròiseas leasachaidh is deuchainn le Docker agus Gitlab CI

Is e seo an dàrna còmhradh agam mu Docker. Aig àm na ciad aithisg, cha do chleachd sinn ach Docker in Development air innealan leasaiche. Bha an àireamh de luchd-obrach a chleachd Docker timcheall air 2-3 neach. Mean air mhean, fhuair sinn eòlas agus ghluais sinn beagan nas fhaide. Ceangal gu ar chiad aithris.

Dè a bhios san aithisg seo? Roinnidh sinn ar n-eòlas air dè an ràcan a chruinnich sinn, dè na duilgheadasan a tha sinn air fhuasgladh. Chan ann anns a h-uile àite a bha e brèagha, ach leig e gluasad air adhart.

Is e ar facail-suaicheantais: cuir stad air a h-uile dad as urrainn dhuinn ar làmhan fhaighinn.

Pròiseas leasachaidh is deuchainn le Docker agus Gitlab CI

Dè na duilgheadasan a tha sinn a’ fuasgladh?

Nuair a tha grunn sgiobaidhean ann an companaidh, tha am prògramadair na ghoireas co-roinnte. Tha ìrean ann nuair a thèid prògramadair a tharraing a-mach à aon phròiseact agus a thoirt do phròiseact eile airson ùine.

Gus am bi am prògramadair a 'tuigsinn gu luath, feumaidh e còd stòr a' phròiseict a luchdachadh sìos agus an àrainneachd a chuir air bhog cho luath 'sa ghabhas, a leigeas leis gluasad nas fhaide air adhart gus fuasgladh fhaighinn air duilgheadasan a' phròiseict seo.

Mar as trice, ma thòisicheas tu bhon fhìor thoiseach, chan eil mòran sgrìobhainnean sa phròiseact. Chan fhaighear fiosrachadh air mar a chuireas tu air dòigh ach do sheann daoine. Stèidhich luchd-obrach an àite-obrach leotha fhèin ann an latha no dhà. Gus seo a luathachadh, chleachd sinn Docker.

Is e an ath adhbhar gnàthachadh shuidheachaidhean ann an Leasachadh. Anns an eòlas agam, bidh luchd-leasachaidh an-còmhnaidh a’ gabhail an iomairt. Anns a h-uile còigeamh cùis, thèid àrainn àbhaisteach a chuir a-steach, mar eisimpleir, vasya.dev. Na shuidhe ri thaobh tha a nàbaidh Petya, aig a bheil fearann ​​​​petya.dev. Bidh iad a’ leasachadh làrach-lìn no pàirt den t-siostam a’ cleachdadh an ainm àrainn seo.

Nuair a dh’ fhàsas an siostam agus na h-ainmean fearainn sin a’ tòiseachadh a’ faighinn a-steach do rèiteachaidhean, bidh còmhstri àrainneachd leasachaidh ag èirigh agus tha slighe na làraich air ath-sgrìobhadh.

Tha an aon rud a’ tachairt le roghainnean stòr-dàta. Chan eil cuideigin a’ cur dragh air tèarainteachd agus bidh e ag obair le facal-faire freumh falamh. Aig ìre an stàlaidh, dh'iarr MySQL air cuideigin facal-faire agus b' e 123 a bh' ann am facal-faire. Bidh e tric a' tachairt gu bheil rèiteachadh an stòr-dàta daonnan ag atharrachadh a rèir dealas an leasaiche. Ceartaich cuideigin, cha do cheartaich cuideigin an config. Bha cleasan ann nuair a thug sinn a-mach seòrsa de rèiteachadh deuchainn a-steach .gitignore agus dh'fheumadh gach leasaiche an stòr-dàta a stàladh. Rinn seo e doirbh tòiseachadh. Tha e riatanach, am measg rudan eile, cuimhneachadh mun stòr-dàta. Feumar an stòr-dàta a thòiseachadh, feumar facal-faire a chuir a-steach, feumaidh neach-cleachdaidh a bhith clàraichte, feumar clàr a chruthachadh, agus mar sin air adhart.

Is e duilgheadas eile dreachan eadar-dhealaichte de leabharlannan. Bidh e tric a 'tachairt gu bheil leasaiche ag obair le diofar phròiseactan. Tha pròiseact Dìleab ann a thòisich o chionn còig bliadhna (bho 2017 - ed. note). Aig àm an cur air bhog, thòisich sinn le MySQL 5.5. Tha pròiseactan ùr-nodha ann cuideachd far am feuch sinn ri dreachan nas ùire de MySQL a chuir an gnìomh, mar eisimpleir, 5.7 no nas sine (ann an 2017 - ed. nota)

Tha fios aig duine sam bith a tha ag obair le MySQL gu bheil na leabharlannan sin a’ toirt eisimeileachd leotha. Tha e caran duilich 2 bhunait a ruith còmhla. Co-dhiù, tha duilgheadas aig seann luchd-dèiligidh ceangal ris an stòr-dàta ùr. Tha seo an uair sin a 'cruthachadh grunn dhuilgheadasan.

Is e an ath dhuilgheadas nuair a bhios leasaiche ag obair air inneal ionadail, bidh e a 'cleachdadh ghoireasan ionadail, faidhlichean ionadail, RAM ionadail. Tha a h-uile eadar-obrachadh aig àm leasachadh fuasgladh do dhuilgheadasan air a dhèanamh taobh a-staigh frèam gu bheil e ag obair air aon inneal. Is e eisimpleir eisimpleir nuair a tha frithealaichean backend againn ann an Riochdachadh 3, agus bidh an leasaiche a’ sàbhaladh faidhlichean don eòlaire freumh agus às an sin bidh nginx a ’toirt faidhlichean gus freagairt a thoirt don iarrtas. Nuair a thig a leithid de chòd a-steach gu Riochdachadh, tha e a’ tionndadh a-mach gu bheil am faidhle an làthair air aon de na 3 frithealaichean.

Tha stiùireadh microservices a’ leasachadh a-nis. Nuair a bhios sinn a 'roinn na h-iarrtasan mòra againn ann an cuid de phàirtean beaga a bhios ag eadar-obrachadh le chèile. Leigidh seo leat teicneòlasan a thaghadh airson stac sònraichte de ghnìomhan. Leigidh e leat cuideachd obair agus dleastanasan a cho-roinn eadar luchd-leasachaidh.

Cha mhòr nach eil buaidh sam bith aig Frontend-developer, a’ leasachadh air JS, air Backend. Bidh an leasaiche backend, an uair sin, a’ leasachadh, nar cùis, Ruby on Rails agus chan eil e a’ cur bacadh air Frondend. Tha an eadar-obrachadh air a dhèanamh a’ cleachdadh an API.

Mar bhuannachd, le cuideachadh bho Docker, bha e comasach dhuinn goireasan ath-chuairteachadh air Staging. Bha feum aig gach pròiseact, air sgàth a mhion-fhiosrachaidh, air suidheachaidhean sònraichte. Gu corporra, bha e riatanach an dàrna cuid frithealaiche brìgheil a riarachadh agus an rèiteachadh air leth, no seòrsa de dh’ àrainneachd caochlaideach a cho-roinn agus dh’ fhaodadh pròiseactan, a rèir dreach nan leabharlannan, buaidh a thoirt air a chèile.

Pròiseas leasachaidh is deuchainn le Docker agus Gitlab CI

Innealan. Dè bhios sinn a’ cleachdadh?

  • Docker fhèin. Tha an Dockerfile a’ toirt cunntas air eisimeileachd aon iarrtas.
  • Tha Docker-compose na phasgan a bheir còmhla cuid de na tagraidhean Docker againn.
  • Cleachdaidh sinn GitLab gus an còd tùsail a stòradh.
  • Bidh sinn a’ cleachdadh GitLab-CI airson amalachadh siostam.

Pròiseas leasachaidh is deuchainn le Docker agus Gitlab CI

Tha dà phàirt san aithisg.

Bruidhnidh a’ chiad phàirt air mar a chaidh Docker a ruith air innealan luchd-leasachaidh.

Bruidhnidh an dàrna pàirt air mar a nì thu eadar-obrachadh le GitLab, mar a bhios sinn a’ ruith dheuchainnean agus mar a thèid sinn a-mach gu Staging.

Pròiseas leasachaidh is deuchainn le Docker agus Gitlab CI

Is e teicneòlas a th’ ann an Docker a leigeas le (a’ cleachdadh dòigh dearbhaidh) cunntas a thoirt air na pàirtean riatanach. Seo eisimpleir Dockerfile. An seo tha sinn a’ cur an cèill gu bheil sinn a’ sealbhachadh bhon ìomhaigh oifigeil Ruby: 2.3.0 Docker. Tha dreach Ruby 2.3 ann. Bidh sinn a’ stàladh na leabharlannan togail riatanach agus NodeJS. Tha sinn a 'toirt cunntas air gu bheil sinn a' cruthachadh eòlaire /app. Suidhich an eòlaire app mar an eòlaire obrach. Anns an eòlaire seo bidh sinn a 'cur an Gemfile agus Gemfile.lock as lugha a tha a dhìth. Bidh sinn an uairsin a 'togail nam pròiseactan a tha a' stàladh an ìomhaigh eisimeileachd seo. Tha sinn a 'sealltainn gum bi an soitheach deiseil airson èisteachd air port taobh a-muigh 3000. Is e an àithne mu dheireadh an àithne a chuireas air bhog an tagradh againn gu dìreach. Ma chuireas sinn an gnìomh àithne tòiseachaidh a’ phròiseict, feuchaidh an aplacaid ris an àithne ainmichte a ruith agus a ruith.

Pròiseas leasachaidh is deuchainn le Docker agus Gitlab CI

Seo beagan eisimpleir de fhaidhle docker-compose. Anns a 'chùis seo, bidh sinn a' sealltainn gu bheil ceangal eadar dà shoitheach. Tha seo gu dìreach a-steach don t-seirbheis stòr-dàta agus an t-seirbheis lìn. Bidh na tagraidhean lìn againn sa mhòr-chuid ag iarraidh stòr-dàta de sheòrsa air choreigin mar chùl-taic airson dàta a stòradh. Leis gu bheil sinn a’ cleachdadh MySQL, tha an eisimpleir le MySQL - ach chan eil dad a’ cur stad oirnn bho bhith a’ cleachdadh stòr-dàta eile (PostgreSQL, Redis).

Bidh sinn a’ toirt bhon stòr oifigeil bhon ionad Docker ìomhaigh MySQL 5.7.14 gun atharrachaidhean. Bidh sinn a’ cruinneachadh an ìomhaigh a tha cunntachail airson an tagradh lìn againn bhon eòlaire gnàthach. Bidh e a’ cruinneachadh ìomhaigh dhuinn aig a’ chiad fhoillseachadh. An uairsin ruithidh e an àithne a tha sinn a’ cur an gnìomh an seo. Ma thèid sinn air ais, chì sinn gu bheil an àithne tòiseachaidh tro Puma air a mhìneachadh. Is e seirbheis sgrìobhte ann an Ruby a th’ ann am Puma. Anns an dàrna cùis, bidh sinn a 'dol thairis air. Faodaidh an àithne seo a bhith neo-riaghailteach a rèir ar feumalachdan no ar gnìomhan.

Tha sinn cuideachd ag innse gum feum sinn port a chuir air adhart air an inneal aoigheachd leasaiche againn bho 3000 gu 3000 air a’ phort container. Tha seo air a dhèanamh gu fèin-ghluasadach a’ cleachdadh iptables agus an uidheamachd aige, a tha freumhaichte gu dìreach ann an Docker.

Faodaidh an leasaiche cuideachd, mar a bha e roimhe, faighinn gu seòladh IP sam bith a tha ri fhaighinn, mar eisimpleir, is e 127.0.0.1 seòladh IP ionadail no taobh a-muigh an inneil.

Tha an loidhne mu dheireadh ag ràdh gu bheil an inneal lìn an urra ris a’ ghobhar db. Nuair a chanas sinn toiseach an t-soithich lìn, tòisichidh docker-compose an stòr-dàta dhuinn an toiseach. A-cheana aig toiseach an stòr-dàta (gu dearbh, às deidh an soitheach a chuir air bhog! Chan eil seo a ’gealltainn gum bi an stòr-dàta deiseil) a’ cur air bhog an tagradh, ar backend.

Bidh seo a’ seachnadh mhearachdan nuair nach eil an stòr-dàta air a thogail agus a’ sàbhaladh ghoireasan nuair a chuireas sinn stad air soitheach an stòr-dàta, agus mar sin a’ saoradh ghoireasan airson pròiseactan eile.

Pròiseas leasachaidh is deuchainn le Docker agus Gitlab CI

Dè a bheir dhuinn cleachdadh dockerization stòr-dàta air a’ phròiseact. Bidh sinn a’ càradh an dreach de MySQL airson a h-uile leasaiche. Bidh seo a’ seachnadh cuid de mhearachdan a dh’ fhaodadh tachairt nuair a dh’ atharraicheas dreachan, nuair a dh’ atharraicheas an co-chòrdadh, an rèiteachadh, na roghainnean bunaiteach. Leigidh seo leat ainm aoigheachd cumanta a shònrachadh airson an stòr-dàta, logadh a-steach, facal-faire. Tha sinn a’ gluasad air falbh bhon sù de dh’ ainmean agus còmhstri anns na faidhlichean config a bh’ againn na bu thràithe.

Tha cothrom againn config nas fheàrr a chleachdadh airson na h-àrainneachd Leasachaidh, a bhios eadar-dhealaichte bhon fheadhainn àbhaisteach. Tha MySQL air a rèiteachadh airson innealan lag gu bunaiteach agus tha a choileanadh a-mach às a’ bhogsa gu math bochd.

Pròiseas leasachaidh is deuchainn le Docker agus Gitlab CI

Leigidh Docker leat an eadar-theangair Python, Ruby, NodeJS, PHP den dreach a tha thu ag iarraidh a chleachdadh. Bidh sinn a’ faighinn cuidhteas an fheum air seòrsa de mhanaidsear dreach a chleachdadh. Roimhe sin, chleachd Ruby pasgan rpm a leig leat an dreach atharrachadh a rèir a’ phròiseict. Leigidh e cuideachd, le taing don Docker container, an còd a ghluasad gu rèidh agus a dhreach còmhla ri eisimeileachd. Chan eil duilgheadas sam bith againn a bhith a’ tuigsinn dreach an eadar-theangair agus a’ chòd. Gus an dreach ùrachadh, lughdaich an t-seann ghobhar agus àrdaich an soitheach ùr. Ma chaidh rudeigin ceàrr, is urrainn dhuinn an soitheach ùr a lughdachadh, an seann ghobhar a thogail.

Às deidh an ìomhaigh a thogail, bidh na soithichean ann an Leasachadh agus Riochdachadh mar an ceudna. Tha seo gu sònraichte fìor airson ionadan mòra.

Pròiseas leasachaidh is deuchainn le Docker agus Gitlab CI Air Frontend bidh sinn a’ cleachdadh JavaScipt agus NodeJS.

A-nis tha am pròiseact mu dheireadh againn air ReacJS. Ruith an leasaiche a h-uile càil anns a’ ghobhar agus leasaich e le bhith a’ cleachdadh hot-reload.

An ath rud, thèid gnìomh cruinneachaidh JavaScipt a chuir air bhog agus tha an còd air a chur ri chèile ann an stats air a thoirt seachad tro ghoireasan sàbhalaidh nginx.

Pròiseas leasachaidh is deuchainn le Docker agus Gitlab CI

An seo tha mi air sgeama a’ phròiseict mu dheireadh againn a thoirt seachad.

Dè na gnìomhan a chaidh fhuasgladh? Bha feum againn air siostam a thogail leis am bi innealan-làimhe ag eadar-obrachadh. Bidh iad a’ faighinn dàta. Is e aon chothrom fiosan putaidh a chuir chun inneal seo.

Dè a rinn sinn airson seo?

Roinn sinn pàirtean den tagradh mar: am pàirt rianachd air JS, an backend, a bhios ag obair tron ​​​​eadar-aghaidh REST fo Ruby on Rails. Bidh an cùl-raon ag eadar-obrachadh leis an stòr-dàta. Tha an toradh a thèid a chruthachadh air a thoirt don neach-dèiligidh. Bidh am pannal rianachd ag eadar-obrachadh leis an backend agus an stòr-dàta tron ​​​​eadar-aghaidh REST.

Bha feum againn cuideachd air fiosan putaidh a chuir. Roimhe sin, bha pròiseact againn a chuir an gnìomh uidheamachd a tha an urra ri bhith a’ lìbhrigeadh brathan gu àrd-ùrlaran gluasadach.

Tha sinn air an sgeama a leanas a leasachadh: bidh gnìomhaiche bhon bhrobhsair ag eadar-obrachadh leis a’ phannal rianachd, bidh am pannal rianachd ag eadar-obrachadh leis an deireadh-sheachdain, is e an obair fiosan Push a chuir.

Bidh brathan putaidh ag eadar-obrachadh le pàirt eile a tha air a chuir an gnìomh ann an NodeJS.

Bithear a’ togail ciudha agus an uairsin thèid fiosan a chuir a rèir an uidheamachd aca.

Tha dà stòr-dàta air an tarraing an seo. Aig an àm seo, le cuideachadh bho Docker, bidh sinn a’ cleachdadh 2 stòr-dàta neo-eisimeileach nach eil co-cheangailte ri chèile ann an dòigh sam bith. A bharrachd air an sin, tha lìonra brìgheil cumanta aca, agus tha dàta corporra air a stòradh ann an diofar chlàran air inneal an leasaiche.

Pròiseas leasachaidh is deuchainn le Docker agus Gitlab CI

An aon rud ach ann an àireamhan. Seo far a bheil ath-chleachdadh còd cudromach.

Ma bhruidhinn sinn na bu thràithe mu bhith ag ath-chleachdadh còd ann an cruth leabharlannan, an uairsin san eisimpleir seo, bidh an t-seirbheis againn a tha a’ freagairt fiosan Push air ath-chleachdadh mar fhrithealaiche iomlan. Tha e a 'toirt seachad API. Agus tha an leasachadh ùr againn mu thràth ag eadar-obrachadh leis.

Aig an àm sin, bha sinn a’ cleachdadh dreach 4 de NodeJS. A-nis (ann an 2017 - ed. nota) ann an leasachaidhean o chionn ghoirid bidh sinn a’ cleachdadh dreach 7 de NodeJS. Chan eil duilgheadas ann le co-phàirtean ùra tionndaidhean ùra de leabharlannan a thoirt a-steach.

Ma tha feum air, faodaidh tu an tionndadh NodeJS ath-nuadhachadh agus àrdachadh bhon t-seirbheis fios Push.

Agus mas urrainn dhuinn co-chòrdalachd API a chumail suas, bidh e comasach pròiseactan eile a chaidh a chleachdadh roimhe seo a chuir na àite.

Pròiseas leasachaidh is deuchainn le Docker agus Gitlab CI

Dè a dh'fheumas tu airson Docker a chur ris? Bidh sinn a’ cur Dockerfile ris an ionad-tasgaidh againn, a tha a’ toirt cunntas air na h-eisimeileachdan riatanach. Anns an eisimpleir seo, tha na pàirtean air am briseadh sìos gu loidsigeach. Is e seo an seata as lugha de leasaiche backend.

Nuair a chruthaicheas sinn pròiseact ùr, bidh sinn a’ cruthachadh Dockerfile, a’ toirt cunntas air an eag-shiostam a tha thu ag iarraidh (Python, Ruby, NodeJS). Ann an docker-compose, tha e a 'toirt cunntas air an eisimeileachd riatanach - an stòr-dàta. Tha sinn ag innse gu bheil feum againn air stòr-dàta de leithid agus dreach mar sin, stòraich dàta an sin agus an sin.

Bidh sinn a’ cleachdadh treas soitheach fa-leth le nginx gus frithealadh statach. Tha e comasach dealbhan a luchdachadh suas. Bidh Backend gan cur ann an tomhas ro-ullaichte, a tha cuideachd air a chuir suas ann an soitheach le nginx, a bheir seachad an statach.

Gus an nginx, rèiteachadh mysql a stòradh, chuir sinn pasgan Docker ris anns am bi sinn a’ stòradh na configs riatanach. Nuair a nì leasaiche clone git de stòr air an inneal aige, tha pròiseact aige mu thràth deiseil airson leasachadh ionadail. Chan eil ceist sam bith ann dè am port no dè na roghainnean a bu chòir a chuir an sàs.

Pròiseas leasachaidh is deuchainn le Docker agus Gitlab CI

An ath rud, tha grunn phàirtean againn: rianachd, fios-API, fiosan putaidh.

Gus seo a thòiseachadh, chruthaich sinn stòr eile, ris an can sinn dockerized-app. Aig an àm seo bidh sinn a’ cleachdadh grunn thasgaidhean ro gach pàirt. Tha iad dìreach eadar-dhealaichte gu loidsigeach - ann an GitLab tha e coltach ri pasgan, ach air inneal an leasaiche, pasgan airson pròiseact sònraichte. Is e aon ìre sìos na pàirtean a thèid a chur còmhla.

Pròiseas leasachaidh is deuchainn le Docker agus Gitlab CI

Seo eisimpleir de dìreach susbaint dockerized-app. Bheir sinn cuideachd an eòlaire Docker an seo, anns am bi sinn a’ lìonadh a-steach na rèiteachaidhean a tha a dhìth airson eadar-obrachadh gach pàirt. Tha README.md ann a tha a’ toirt cunntas goirid air mar a bu chòir am pròiseact a ruith.

An seo tha sinn air dà fhaidhle docker-compose a chuir an sàs. Tha seo air a dhèanamh gus a bhith comasach air ruith ann an ceumannan. Nuair a bhios leasaiche ag obair leis a 'chridhe, chan fheum e fiosan putaidh, bidh e dìreach a' cur air bhog faidhle docker-compose agus, mar sin, tha an goireas air a shàbhaladh.

Ma tha feum air amalachadh le fiosan putaidh, thèid docker-compose.yaml agus docker-compose-push.yaml a chuir air bhog.

Leis gu bheil docker-compose.yaml agus docker-compose-push.yaml ann am pasgan, thèid aon lìonra brìgheil a chruthachadh gu fèin-ghluasadach.

Pròiseas leasachaidh is deuchainn le Docker agus Gitlab CI

Tuairisgeul air co-phàirtean. Is e faidhle nas adhartaiche a tha seo a tha an urra ri cruinneachadh phàirtean. Dè tha iongantach an seo? An seo bheir sinn a-steach am pàirt balancer.

Is e seo ìomhaigh Docker deiseil a tha a’ ruith nginx agus tagradh a bhios ag èisteachd air socaid an Docker. Dynamic, mar a bhios soithichean air an tionndadh air agus dheth, bidh e ag ath-nuadhachadh config nginx. Bidh sinn a’ sgaoileadh làimhseachadh phàirtean le ainmean fearainn treas-ìre.

Airson an àrainneachd Leasachaidh, bidh sinn a 'cleachdadh an àrainn .dev - api.informer.dev. Tha tagraidhean le àrainn .dev rim faighinn air inneal ionadail an leasaiche.

A bharrachd air an sin, thèid configs a ghluasad gu gach pròiseact agus thèid a h-uile pròiseact a chuir air bhog còmhla aig an aon àm.

Pròiseas leasachaidh is deuchainn le Docker agus Gitlab CI

Gu grafaigeach, tha e a’ tionndadh a-mach gur e an neach-dèiligidh am brobhsair againn no inneal air choreigin leis am bi sinn a’ dèanamh iarrtasan don chothromaiche.

Bidh an cothromaiche ainm fearainn a’ dearbhadh dè an soitheach ris am bu chòir fios a chuir.

Faodaidh e a bhith nginx, a bheir an rianaire JS. Faodaidh seo a bhith nginx, a bheir an API, no faidhlichean statach, a tha air an toirt do nginx ann an cruth luchdachadh suas ìomhaighean.

Tha an diagram a’ sealltainn gu bheil na soithichean ceangailte le lìonra mas-fhìor agus falaichte air cùl neach-ionaid.

Air inneal an leasaiche, gheibh thu cothrom air a’ ghobhar le eòlas air an IP, ach ann am prionnsapal cha bhith sinn a’ cleachdadh seo. Cha mhòr nach eil feum air ruigsinneachd dìreach.

Pròiseas leasachaidh is deuchainn le Docker agus Gitlab CI

Dè an eisimpleir air am bu chòir dhut coimhead gus an tagradh agad a dhocadh? Nam bheachd-sa, is e deagh eisimpleir an ìomhaigh oifigeil docker airson MySQL.

Tha e gu math dùbhlanach. Tha iomadh dreach ann. Ach tha an comas-gnìomh aige a’ toirt cothrom dhut dèiligeadh ri mòran fheumalachdan a dh’ fhaodadh èirigh sa phròiseas leasachaidh. Ma chaitheas tu ùine agus gum faigh thu a-mach mar a tha e uile ag eadar-obrachadh, tha mi a’ smaoineachadh nach bi duilgheadas sam bith agad le fèin-chur an gnìomh.

Mar as trice bidh ceanglaichean aig Hub.docker.com gu github.com, anns a bheil dàta amh gu dìreach às an urrainn dhut an ìomhaigh a thogail thu fhèin.

Nas fhaide air adhart san stòr seo tha sgriobt docker-endpoint.sh, air a bheil uallach airson a’ chiad thòiseachadh agus airson tuilleadh giollachd air cur air bhog an tagraidh.

Cuideachd san eisimpleir seo, tha comas ann a bhith a’ cleachdadh caochladairean àrainneachd a rèiteachadh. Le bhith a’ mìneachadh caochladair àrainneachd nuair a bhios sinn a’ ruith aon ghobhar no tro sgrìobhadh docker, faodaidh sinn a ràdh gum feum sinn facal-faire falamh a shuidheachadh airson docker freumhachadh air MySQL no ge bith dè a tha sinn ag iarraidh.

Tha roghainn ann facal-faire air thuaiream a chruthachadh. Tha sinn ag ràdh gu bheil feum againn air neach-cleachdaidh, feumaidh sinn facal-faire a shuidheachadh airson an neach-cleachdaidh, agus feumaidh sinn stòr-dàta a chruthachadh.

Anns na pròiseactan againn, dh’ aonaich sinn an Dockerfile beagan, air a bheil uallach airson tòiseachadh. An sin cheartaich sinn e a rèir ar feumalachdan gus a dhèanamh dìreach mar leudachadh air na còraichean cleachdaiche a bhios an aplacaid a’ cleachdadh. Leig seo leinn dìreach stòr-dàta a chruthachadh bho chonsail an tagraidh nas fhaide air adhart. Tha òrdugh aig tagraidhean Ruby airson stòran-dàta a chruthachadh, atharrachadh agus a dhubhadh às.

Pròiseas leasachaidh is deuchainn le Docker agus Gitlab CI

Seo eisimpleir de choltas dreach sònraichte de MySQL air github.com. Faodaidh tu an Dockerfile fhosgladh agus faicinn mar a tha an stàladh a’ dol air adhart an sin.

docker-endpoint.sh an sgriobt le uallach airson a’ phuing inntrigidh. Rè a 'chiad tòiseachaidh, tha feum air cuid de cheumannan ullachaidh, agus tha na gnìomhan sin uile air an toirt a-mach dìreach anns an sgriobt tòiseachaidh.

Pròiseas leasachaidh is deuchainn le Docker agus Gitlab CI

Gluaisidh sinn air adhart chun dàrna pàirt.

Gus na còdan stòr a stòradh, thionndaidh sinn gu gitlab. Is e siostam gu math cumhachdach a tha seo le eadar-aghaidh lèirsinneach.

Is e aon de na pàirtean de Gitlab Gitlab CI. Leigidh e dhut cunntas a thoirt air sreath òrdughan a thèid a chleachdadh nas fhaide air adhart gus siostam lìbhrigidh còd a chuir air dòigh no gus deuchainnean fèin-ghluasadach a ruith.

Gitlab CI 2 bruidhinn https://goo.gl/uohKjI - aithisg bho chlub Ruby Russia - gu math mionaideach agus is dòcha gum bi ùidh agad ann.

Pròiseas leasachaidh is deuchainn le Docker agus Gitlab CI

A-nis bheir sinn sùil air na tha a dhìth gus Gitlab CI a chuir an gnìomh. Gus tòiseachadh air Gitlab CI, chan fheum sinn ach am faidhle .gitlab-ci.yml a chuir ann am freumh a’ phròiseict.

An seo tha sinn ag innse gu bheil sinn airson sreath de stàitean a chuir an gnìomh mar deuchainn, cleachdadh.

Bidh sinn a’ cur an gnìomh sgriobtaichean a bhios gu dìreach a’ gairm docker-compose gus an tagradh againn a thogail. Is e seo dìreach eisimpleir cùl-fhiosrachaidh.

An ath rud, bidh sinn ag ràdh gu bheil e riatanach imrich a ruith gus an stòr-dàta atharrachadh agus deuchainnean a ruith.

Ma thèid na sgriobtaichean a chuir gu bàs gu ceart agus nach till iad còd mearachd, thèid an siostam air adhart chun dàrna ìre den chleachdadh.

Tha an ìre cleachdadh air a chuir an gnìomh an-dràsta airson an àrd-ùrlar. Cha do chuir sinn air dòigh àm ath-thòiseachadh neoni.

Bidh sinn gu làidir a ’cuir às do na soithichean gu lèir, agus an uairsin bidh sinn a’ togail na soithichean uile a-rithist, air an cruinneachadh aig a ’chiad ìre rè na deuchainn.

Tha sinn a 'ruith airson an caochladair àrainneachd làithreach na h-imrich stòr-dàta a chaidh a sgrìobhadh leis an luchd-leasachaidh.

Tha nota ann nach eil seo a’ buntainn ach ris a’ phrìomh mheur.

Nuair nach eil atharrachadh meuran eile air a chur gu bàs.

Tha e comasach sgaoileadh a chuir air dòigh le geugan.

Pròiseas leasachaidh is deuchainn le Docker agus Gitlab CI

Gus seo a chuir air dòigh nas fhaide, feumaidh sinn Gitlab Runner a stàladh.

Tha an goireas seo sgrìobhte ann an Golang. Is e faidhle singilte a th’ ann, mar a tha cumanta ann an saoghal Golang, nach eil feumach air eisimeileachd sam bith.

Nuair a thòisicheas sinn, bidh sinn a’ clàradh an Gitlab Runner.

Gheibh sinn an iuchair ann an eadar-aghaidh lìn Gitlab.

An uairsin canaidh sinn an àithne tòiseachaidh air an loidhne-àithne.

Stèidhich Gitlab Runner gu h-eadar-ghnìomhach (Shell, Docker, VirtualBox, SSH)

Cuiridh an còd air Gitlab Runner an gnìomh air a h-uile gealltanas, a rèir an t-suidheachaidh .gitlab-ci.yml.

Pròiseas leasachaidh is deuchainn le Docker agus Gitlab CI

Mar a tha e a’ coimhead gu fradharcach ann an Gitlab san eadar-aghaidh lìn. Às deidh dhuinn GItlab CI a cheangal, tha bratach againn a sheallas staid an togail an-dràsta.

Tha sinn a’ faicinn gun deach gealltanas a dhèanamh 4 mionaidean air ais, a chaidh seachad air na deuchainnean gu lèir agus nach do dh’ adhbhraich duilgheadas sam bith.

Pròiseas leasachaidh is deuchainn le Docker agus Gitlab CI

Faodaidh sinn sùil nas mionaidiche a thoirt air na togalaichean. An seo chì sinn gu bheil dà stàit air a dhol seachad mu thràth. Inbhe deuchainn agus inbhe cleachdadh air àrd-ùrlar.

Ma bhriogas sinn air togalach sònraichte, bidh toradh tòcan ann de na h-òrdughan a chaidh a ruith sa phròiseas a rèir .gitlab-ci.yml.

Pròiseas leasachaidh is deuchainn le Docker agus Gitlab CI

Seo mar a tha an eachdraidh toraidh againn coltach. Chì sinn gun robh oidhirpean soirbheachail ann. Nuair a thèid deuchainnean a chuir a-steach, cha tèid e air adhart chun ath cheum agus chan eil an còd stèidse air ùrachadh.

Pròiseas leasachaidh is deuchainn le Docker agus Gitlab CI

Dè na gnìomhan a dh’ fhuasgail sinn air an àrd-ùrlar nuair a chuir sinn an gnìomh docker? Tha an siostam againn air a dhèanamh suas de cho-phàirtean agus bha feum againn air ath-thòiseachadh, dìreach pàirt de na pàirtean a chaidh ùrachadh san stòr, agus chan e an siostam gu lèir.

Gus seo a dhèanamh, dh'fheumadh sinn a h-uile càil a bhriseadh ann am pasganan fa leth.

Às deidh dhuinn seo a dhèanamh, bha duilgheadas againn leis gu bheil Docker-compose a ’cruthachadh a àite lìonra fhèin airson gach daddy agus nach eil e a’ faicinn co-phàirtean an nàbaidh.

Gus faighinn timcheall, chruthaich sinn an lìonra ann an Docker le làimh. Chaidh a sgrìobhadh ann an Docker-compose gu bheil thu a’ cleachdadh lìonra mar seo airson a’ phròiseict seo.

Mar sin, bidh a h-uile pàirt a thòisicheas leis a’ mhogal seo a’ faicinn co-phàirtean ann am pàirtean eile den t-siostam.

Tha an ath iris a’ roinn ìrean thar grunn phròiseactan.

Leis gum bi seo uile a ’coimhead brèagha agus cho faisg air cinneasachadh, tha e math port 80 no 443 a chleachdadh, a thathas a’ cleachdadh anns a h-uile àite san WEB.

Pròiseas leasachaidh is deuchainn le Docker agus Gitlab CI

Ciamar a fhuair sinn fuasgladh air? Tha sinn air aon Runner Gitlab a shònrachadh do na prìomh phròiseactan uile.

Leigidh Gitlab leat grunn luchd-ruith Gitlab sgaoilte a ruith, a bheir dìreach a h-uile gnìomh mu seach ann an dòigh chaotic agus gan ruith.

Gus nach bi taigh againn, chuir sinn a’ bhuidheann de na pròiseactan againn gu aon Gitlab Runner, a dhèiligeas gun duilgheadasan leis na leabhraichean againn.

Ghluais sinn nginx-proxy a-steach do sgriobt tòiseachaidh air leth agus chuir sinn grids ris airson a h-uile pròiseact a tha ann.

Tha aon chliath aig a’ phròiseact againn, agus tha grunn chliath aig a’ chothromaiche a rèir ainmean pròiseict. Faodaidh e proxy nas fhaide le ainmean fearainn.

Bidh na h-iarrtasan againn a’ tighinn tron ​​​​àrainn air port 80 agus air am fuasgladh ann am buidheann soithichean a bhios a’ frithealadh na h-àrainn seo.

Pròiseas leasachaidh is deuchainn le Docker agus Gitlab CI

Dè na duilgheadasan eile a bha ann? Is e seo a bhios a h-uile inneal a’ ruith mar fhreumh gu bunaiteach. Tha seo freumh neo-ionann ri freumh aoigheachd an t-siostaim.

Ach, ma thèid thu a-steach don t-soitheach, bidh e freumh agus gheibh am faidhle a chruthaicheas sinn san t-soitheach seo còraichean freumh.

Ma chaidh an leasaiche a-steach don ghobhar agus gun do rinn e òrdughan an sin a ghineadh faidhlichean, an uairsin dh’ fhàg e an soitheach, tha faidhle anns an eòlaire obrach aige nach eil cothrom aige air.

Ciamar a thèid a rèiteachadh? Faodaidh tu luchd-cleachdaidh a chuir ris a bhios sa bhogsa.

Dè na duilgheadasan a dh’ èirich nuair a chuir sinn ris a’ chleachdaiche?

Nuair a bhios sinn a’ cruthachadh neach-cleachdaidh, gu tric chan eil an aon ID buidhne (UID) agus ID cleachdaiche (GID) againn.

Gus an duilgheadas seo fhuasgladh anns a’ ghobhar, bidh sinn a’ cleachdadh luchd-cleachdaidh le ID 1000.

Anns a 'chùis againn, bha seo aig an aon àm ris an fhìrinn gu bheil cha mhòr a h-uile neach-leasachaidh a' cleachdadh an Ubuntu OS. Agus air Ubuntu, tha ID de 1000 aig a’ chiad neach-cleachdaidh.

Pròiseas leasachaidh is deuchainn le Docker agus Gitlab CI

A bheil planaichean againn?

Leugh na sgrìobhainnean Docker. Tha am pròiseact gu gnìomhach a’ leasachadh, tha na sgrìobhainnean ag atharrachadh. Tha an dàta a fhuaireadh o chionn dhà no trì mìosan mu thràth a’ fàs sean.

Is dòcha gu bheil cuid de na duilgheadasan a dh’ fhuasgail sinn mar-thà air am fuasgladh le dòighean àbhaisteach.

Mar sin tha mi airson a dhol nas fhaide mu thràth airson a dhol dìreach chun an orcastra.

Is e aon eisimpleir inneal togte Docker ris an canar Docker Swarm, a thig a-mach às a’ bhogsa. Tha mi airson rudeigin a ruith ann an riochdachadh stèidhichte air teicneòlas Docker Swarm.

Tha soithichean sìolachaidh ga dhèanamh mì-ghoireasach obrachadh le logaichean. A-nis tha na logaichean iomallach. Tha iad sgapte thairis air soithichean. Is e aon de na gnìomhan ruigsinneachd goireasach a dhèanamh air na logaichean tron ​​​​eadar-aghaidh lìn.

Pròiseas leasachaidh is deuchainn le Docker agus Gitlab CI

Source: www.habr.com

Cuir beachd ann