Kuvandudza uye kuyedza maitiro neDocker uye Gitlab CI

Ini ndinokurudzira kuti uverenge chinyorwa cheshumo naAlexander Sigachev kubva kuInventos "Kuvandudza uye kuyedza maitiro neDocker + Gitlab CI"

Avo vari kutanga kuita kusimudzira uye kuyedza maitiro akavakirwa paDocker + Gitlab CI vanowanzo bvunza mibvunzo yakakosha. Ndotangira papi? Kuronga sei? Nzira yekuedza sei?

Chirevo ichi chakanaka nekuti chinotaura nenzira yakarongeka nezvekuvandudza uye kuyedza maitiro uchishandisa Docker uye Gitlab CI. Chirevo pachacho chinobva ku2017. Ini ndinofunga kuti kubva mushumo iyi unogona kutora izvo zvekutanga, maitiro, zano, uye ruzivo rwekushandisa.

Ndiani ane hanya, ndapota pasi pekatsi.

Zita rangu ndiAlexander Sigachev. Ndinoshanda kuInventos. Ini ndichakuudza nezve ruzivo rwangu ndichishandisa Docker uye kuti tiri kuita sei zvishoma nezvishoma pamapurojekiti mukambani.

Musoro weshumo: Maitiro ekuvandudza uchishandisa Docker uye Gitlab CI.

Kuvandudza uye kuyedza maitiro neDocker uye Gitlab CI

Iyi ihurukuro yangu yechipiri nezve Docker. Panguva yemushumo wekutanga, takashandisa Docker chete muBudiriro pamichina yekuvandudza. Huwandu hwevashandi vakashandisa Docker hwaive hwevanhu 2-3. Zvishoma nezvishoma, ruzivo rwakawanwa uye takaenda mberi zvishoma. Link kune yedu kutanga report.

Chii chichava mumushumo uyu? Tichagovera ruzivo rwedu pamusoro pezvatakaunganidza rakes, matambudziko api atakagadzirisa. Kwakanga kusina kunaka kwose kwose, asi kwakatibvumira kupfuurira.

Motto yedu: dockerize zvese zvatinoisa maoko edu.

Kuvandudza uye kuyedza maitiro neDocker uye Gitlab CI

Matambudziko api atiri kugadzirisa?

Kana kambani iine zvikwata zvakati wandei, iyo programmer chinhu chakagovaniswa. Pane nhanho apo mugadziri anoburitswa kunze kweimwe chirongwa opihwa kune imwe chirongwa kwenguva yakati.

Kuti mugadziri wepurogiramu akurumidze kunzwisisa, anofanirwa kudhawunirodha kodhi yepurojekiti uye kutanga nharaunda nekukurumidza sezvinobvira, izvo zvinomutendera kuti aenderere mberi mukugadzirisa matambudziko epurojekiti iyi.

Kazhinji, kana ukatanga kubva pakutanga, pane zvinyorwa zvishoma muprojekiti. Vanhu vekare chete ndivo vane ruzivo rwekugadzirisa. Vashandi vanogadzira nzvimbo yavo yebasa vari vega muzuva rimwe kana maviri. Kumhanyisa izvi, takashandisa Docker.

Chikonzero chinotevera ndechekumira kwezvigadziriso muBudiriro. Mune ruzivo rwangu, vagadziri vanogara vachitora danho. Muchiitiko chega chega chechishanu, dura retsika rinopinda, semuenzaniso vasya.dev. Agere padivi pangu pane muvakidzani wangu Petya, ane domain iri petya.dev. Ivo vanogadzira webhusaiti kana imwe system chikamu vachishandisa iri zita rezita.

Kana sisitimu ichikura uye aya mazita emadomasi atanga kuverengerwa mukumisikidzwa, kukakavara munzvimbo dzeBudiriro kunomuka uye nzira yesaiti inonyorwazve.

Chinhu chimwe chete chinoitika nemaseting e database. Vamwe vanhu havanetse nekuchengetedza uye vanoshanda neine isina chinhu mudzi password. Padanho rekuisa, MySQL yakakumbira mumwe munhu password uye password yakava 123. Zvinowanzoitika kuti database config yaigara ichichinja zvichienderana nekuzvipira kwemugadziri. Mumwe munhu akaruramisa, mumwe munhu haana kugadzirisa config. Paive nemanomano pataisa imwe test config mukati .gitignore uye mugadziri wega wega aifanira kuisa dhatabhesi. Izvi zvakaita kuti kutanga kuomerwe. Pakati pezvimwe zvinhu, iwe unofanirwa kuyeuka nezve database. Iyo dhatabhesi inofanirwa kutanga, password inofanirwa kunyoreswa, mushandisi anofanira kunyoreswa, chiratidzo chinofanira kugadzirwa, zvichingodaro.

Rimwe dambudziko ishanduro dzakasiyana dzemaraibhurari. Zvinowanzoitika kuti mugadziri anoshanda pamapurojekiti akasiyana. Pane Legacy project, iyo yakatanga makore mashanu apfuura (kubva muna 2017 - chinyorwa chemupepeti). Pakutanga takatanga neMySQL 5.5. Kune zvakare mapurojekiti emazuva ano kwatiri kuyedza kuita mamwe mavhezheni eMySQL, semuenzaniso 5.7 kana kupfuura (muna 2017 - chinyorwa chemupepeti)

Chero ani anoshanda neMySQL anoziva kuti maraibhurari aya anotakura zvinotsamira. Izvo zvinonetsa kumhanyisa 2 dhatabhesi pamwechete. Pazvishoma, zvinonetsa kubatanidza vatengi vekare kune database nyowani. Izvi zvinobva zvakonzera matambudziko akawanda.

Dambudziko rinotevera nderekuti mugadziri anoshanda pamushini wemuno, anoshandisa zviwanikwa zvemuno, mafaera emunharaunda, RAM yemuno. Kudyidzana kwese panguva yekugadzira mhinduro kumatambudziko kunoitwa mukati mehurongwa hwekuti inoshanda pamushini mumwe. Muenzaniso ungave kana isu tine backend maseva muKugadzira 3, uye mugadziri anochengeta mafaera kumudzi wedhairekitori uye kubva ipapo nginx anotora mafaera kuti apindure kuchikumbiro. Kana kodhi yakadai yapinda muKugadzira, zvinoitika kuti faira iripo pane imwe yemaseva matatu.

Iyo nzira ye microservices iri kukura parizvino. Patinogovanisa maapplication edu makuru kuita zvimwe zvikamu zvidiki zvinodyidzana. Izvi zvinokutendera kuti usarudze matekinoroji kune yakatarwa basa stack. Izvi zvakare zvinokutendera iwe kugovera basa uye nzvimbo yebasa pakati pevagadziri.

Mugadziri wepamberi, ari kusimukira muJS, haana kana pesvedzero pane yekumashure. Iyo yekumashure inovandudza, zvakare, inokura, mune yedu, Ruby paRails uye haipindire neFrondend. Kudyidzana kunoitwa uchishandisa API.

Sebhonasi, tichishandisa Docker takakwanisa kudzokorodza zviwanikwa paStaging. Imwe neimwe purojekiti, nekuda kweiyo chaiyo, yaida mamwe marongero. Panyama, zvaive zvakafanira kugovera chero sevha chaiyo uye kuigadzirisa zvakasiyana, kana kupatsanura imwe mhando yenzvimbo dzakasiyana uye mapurojekiti aigona kupesana, zvichienderana neshanduro yemaraibhurari.

Kuvandudza uye kuyedza maitiro neDocker uye Gitlab CI

Zvishandiso. Chii chatinoshandisa?

  • Docker pachayo. A Dockerfile inotsanangura kutsamira kweimwe application.
  • Docker-compose isumbu rinounza pamwe akati wandei eDocker edu maapplication.
  • Isu tinoshandisa GitLab kuchengetedza sosi kodhi.
  • Isu tinoshandisa GitLab-CI yekubatanidza system.

Kuvandudza uye kuyedza maitiro neDocker uye Gitlab CI

Chirevo chine zvikamu zviviri.

Chikamu chekutanga chinokuudza nzira yekumhanyisa Docker pamichina yevagadziri.

Chikamu chechipiri chichataura nezve mabatiro ekuita neGitLab, maitiro atinoita bvunzo uye mabudiro atinoita kuStaging.

Kuvandudza uye kuyedza maitiro neDocker uye Gitlab CI

Docker tekinoroji inobvumira (uchishandisa nzira yekuzivisa) kutsanangura zvinodikanwa zvikamu. Uyu muenzaniso Dockerfile. Pano tinozivisa kuti tiri kutora nhaka kubva kune yepamutemo Docker mufananidzo weRuby: 2.3.0. Iyo ine Ruby vhezheni 2.3 yakaiswa. Isu tinoisa anodiwa egungano raibhurari uye NodeJS. Isu tinotsanangura kuti tiri kugadzira dhairekitori /app. Isu tinopa iyo dhairekitori yeapp sedhairekitori rekushanda. Mune ino dhairekitori tinoisa inodiwa shoma Gemfile uye Gemfile.lock. Zvadaro tinovaka mapurojekiti anoisa iyi mufananidzo wekutsamira. Isu tinoratidza kuti mudziyo uchave wakagadzirira kuteerera pachiteshi chekunze 3000. Murairo wekupedzisira ndiwo murairo unotanga zvakananga chikumbiro chedu. Kana isu tikaita purojekiti run command, iyo application ichaedza kumhanya uye kumhanya yakataurwa kuraira.

Kuvandudza uye kuyedza maitiro neDocker uye Gitlab CI

Uyu muenzaniso mudiki weiyo docker-compose faira. Muchiitiko ichi, tinoratidza kuti pane hukama pakati pemidziyo miviri. Izvi zvakanangana nesevhisi sevhisi uye sevhisi yewebhu. Yedu yewebhu maapplication muzviitiko zvakawanda inoda imwe mhando yedatabase sebackend yekuchengetedza data. Sezvo isu tichishandisa MySQL, muenzaniso uri neMySQL - asi hapana chinotitadzisa kushandisa imwe dhatabhesi (PostgreSQL, Redis).

Isu tinotora iyo MySQL 5.7.14 mufananidzo pasina shanduko kubva kune yepamutemo sosi kubva kuDocker hub. Isu tinounganidza mufananidzo une basa rewebhu application yedu kubva kune yazvino dhairekitori. Panguva yekutanga kutanga, anotiunganidzira mufananidzo. Zvino inomhanya murairo watiri kuita pano. Kana tikadzokera shure, tichaona kuti murairo wekutanga wakatsanangurwa kuburikidza nePuma. Puma ibasa rakanyorwa muRuby. Muchiitiko chechipiri tinodarika. Murairo uyu unogona kuita zvechimbichimbi zvichienderana nezvatinoda kana mabasa.

Isu tinotsanangura zvakare kuti isu tinofanirwa kuendesa mberi chiteshi pamushini wedu wekugadzira kubva pa3000 kusvika 3000 chiteshi chemidziyo. Izvi zvinoitwa otomatiki uchishandisa iptables uye neyayo meshini, iyo yakanyatso kunyudzwa muDocker.

Mugadziri anogona, sepakutanga, kuwana chero inowanikwa IP kero, semuenzaniso, 127.0.0.1 yemuno kana yekunze IP kero yemuchina.

Mutsara wekupedzisira unoti iyo webhu mudziyo inotsamira pane db mudziyo. Patinodaidza iyo webhu mudziyo kuti itange, docker-compose inotanga kuburitsa dhatabhesi kwatiri. Pakare pakatanga dhatabhesi (chaizvoizvo, mushure mekutangwa kwemudziyo! Izvi hazvivimbise kugadzirira kwedhatabhesi) ichavhura application yedu, yedu yekumashure.

Izvi zvinotibvumira kuti tidzivise zvikanganiso kana dhatabhesi isati yasimuka uye inotibvumira kuchengetedza zviwanikwa patinomisa dhatabhesi mudziyo, nekudaro tichisunungura zviwanikwa zvemamwe mapurojekiti.

Kuvandudza uye kuyedza maitiro neDocker uye Gitlab CI

Ko kushandisa database dockerization pane purojekiti kunotipa chii? Isu tinorekodha iyo MySQL vhezheni kune vese vanogadzira. Izvi zvinokutendera kuti udzivise zvimwe zvikanganiso zvinogona kumuka kana shanduro dzasiyana, kana syntax, gadziriso, uye default marongero achinja. Izvi zvinokutendera kuti utaure yakajairika zita rezita re database, login, password. Isu tiri kusimuka kubva kune zoo yemazita uye kukakavara mumafaira ekugadzirisa aivepo kare.

Isu tine mukana wekushandisa yakanyanya optimal config yeBudiriro nharaunda, iyo inosiyana kubva kune yakasarudzika. MySQL inogadziriswa nekusarudzika kune isina simba michina uye kuita kwayo kunze kwebhokisi kwakadzikira.

Kuvandudza uye kuyedza maitiro neDocker uye Gitlab CI

Docker inobvumidza iwe kushandisa iyo Python, Ruby, NodeJS, PHP muturikiri weiyo yaunoda vhezheni. Isu tinobvisa kukosha kwekushandisa imwe mhando yevhezheni maneja. Kare, rpm package yakashandiswa kuRuby, iyo yakakubvumira kuti uchinje shanduro zvichienderana neprojekti. Kutenda kune Docker mudziyo, izvi zvakare zvinokutendera iwe kuti ufambe zvakanaka kodhi uye kuishandura pamwe chete nekutsamira. Hatina dambudziko rekunzwisisa shanduro yevose muturikiri nekodhi. Kuti uvandudze shanduro, unoda kudzikisa chigadziko chekare uye kusimudza chigadziko chitsva. Kana chimwe chinhu chisina kumira zvakanaka, tinogona kudzikisa mudziyo mutsva, kusimudza mudziyo wekare.

Mushure mekuvaka chifananidzo, midziyo mune zvese Kuvandudza uye Kugadzirwa ichave yakafanana. Izvi ndezvechokwadi kunyanya kune zvigadziriso zvakakura.

Kuvandudza uye kuyedza maitiro neDocker uye Gitlab CI PaFrontend tinoshandisa JavaScipt uye NodeJS.

Iye zvino tine chirongwa chedu chekupedzisira paReacJS. Mugadziri akatangisa zvese zviri mumudziyo uye akagadzira achishandisa hot-reload.

Tevere, basa rekuunganidza JavaScipt rinotangwa uye iyo statically yakaunganidzwa kodhi inotumirwa kuburikidza ne nginx, kuchengetedza zviwanikwa.

Kuvandudza uye kuyedza maitiro neDocker uye Gitlab CI

Pano ndapa dhiyagiramu yeprojekti yedu yazvino.

Ndeapi matambudziko amakagadzirisa? Taive nechido chekuvaka system inodyidzana nayo nharembozha. Vanogamuchira data. Imwe yemikana ndeyekutumira push notices kune ichi chishandiso.

Chii chatakaita nekuda kweizvi?

Isu takakamura chishandiso muzvikamu zvinotevera: admin chikamu muJS, backend inoshanda kuburikidza neREST interface pasi peRuby paRails. Backend inopindirana ne database. Mhedzisiro inogadzirwa inopiwa kune mutengi. Iyo admin panel inopindirana neyekumashure uye dhatabhesi kuburikidza neREST interface.

Isu taivewo nechido chekutumira Push zviziviso. Izvi zvisati zvaitika, takanga tine purojekiti umo nzira yakaitwa iyo yaive nebasa rekuendesa zviziviso kumapuratifomu enhare.

Isu takagadzira chirongwa chinotevera: mushandisi kubva kubrowser anopindirana nepaneru ye admin, iyo admin pani inopindirana neyekumashure, basa nderekutumira Push zviziviso.

Push zviziviso zvinopindirana nechimwe chikamu chinoitwa muNodeJS.

Mitsetse inovakwa uye zviziviso zvinotumirwa zvinoenderana nemaitiro avo.

Madhatabhesi maviri akadhirowewa pano. Parizvino, tichishandisa Docker, isu tinoshandisa 2 yakazvimirira dhatabhesi iyo isina nzira yakabatana kune mumwe nemumwe. Pamusoro pekuti ivo vane yakajairika virtual network, uye data remuviri rinochengetwa mumadhairekitori akasiyana pamushini wemugadziri.

Kuvandudza uye kuyedza maitiro neDocker uye Gitlab CI

Zvimwe chete asi muhuwandu. Kushandisazve kodhi kwakakosha pano.

Kana takambotaura nezve kushandisazve kodhi mumhando yemaraibhurari, saka mumuenzaniso uyu sevhisi yedu, inopindura Push zviziviso, inoshandiswa zvakare sevha yakazara. Inopa API. Uye budiriro yedu itsva inodyidzana nayo.

Panguva iyoyo taishandisa vhezheni 4 yeNodeJS. Zvino (muna 2017 - chinyorwa chemupepeti) mune zvazvino budiriro isu tinoshandisa vhezheni yechinomwe yeNodeJS. Hapana dambudziko muzvikamu zvitsva kubatanidza shanduro itsva dzemaraibhurari.

Kana zvichidikanwa, iwe unogona refactor uye kusimudza iyo NodeJS vhezheni yePush notification service.

Uye kana tikakwanisa kuchengetedza API kuenderana, zvino zvinokwanisika kuitsiva nemamwe mapurojekiti aimboshandiswa.

Kuvandudza uye kuyedza maitiro neDocker uye Gitlab CI

Chii chaunoda kuwedzera Docker? Isu tinowedzera Dockerfile kune yedu repository, iyo inotsanangura zvinodiwa zvinoenderana. Mumuenzaniso uyu, zvikamu zvakakamurwa zvine musoro. Iyi ndiyo diki kit yemugadziri webackend.

Kana tichigadzira chirongwa chitsva, tinogadzira Dockerfile uye tinotsanangura inodiwa ecosystem (Python, Ruby, NodeJS). Mune docker-compose, inotsanangura inodiwa kutsamira - iyo dhatabhesi. Isu tinotsanangura kuti isu tinoda dhatabhesi yeiyo uye yakadaro vhezheni, kuchengetedza data ipapo neapo.

Isu tinoshandisa yakaparadzana yechitatu mudziyo ine nginx kushandira static zvemukati. Zvinokwanisika kuisa mifananidzo. Iyo backend inovaisa mune pre-yakagadzirirwa vhoriyamu, iyo zvakare yakaiswa mumudziyo une nginx, iyo inopa static data.

Kuchengeta nginx uye mysql kumisikidzwa, isu takawedzera Docker folda umo isu tinochengeta inodiwa configs. Kana mugadziri agadzira git clone repository pamushini wake, anotova neprojekiti yakagadzirira budiriro yenzvimbo. Hapana mubvunzo kuti ndeipi chiteshi kana marongero ekushandisa.

Kuvandudza uye kuyedza maitiro neDocker uye Gitlab CI

Tevere isu tine akati wandei zvikamu: admin, info-API, push notices.

Kuti titange zvese izvi, isu takagadzira imwe repository inonzi dockerized-app. Isu parizvino tinoshandisa akawanda repositories kune chimwe nechimwe chikamu. Iwo anongo siyana zvine musoro - muGitLab inoita senge folda, asi pamushini wemugadziri inoita senge folda yeimwe chirongwa. Imwe nhanho pazasi ndiyo zvikamu zvichabatanidzwa.

Kuvandudza uye kuyedza maitiro neDocker uye Gitlab CI

Uyu muenzaniso wezviri mukati me dockerized-app. Isu tinoisawo Docker dhairekitori pano, umo isu tinozadza zvigadziriso zvinodiwa pakudyidzana kwezvinhu zvese. Pane README.md inotsanangura muchidimbu maitiro ekutanga chirongwa.

Pano takaisa maviri docker-compose mafaera. Izvi zvinoitirwa kuti zvikwanise kutangisa mumatanho. Kana mugadziri achishanda ne kernel, haadi Push zviziviso, anongotangisa iyo docker-compose faira uye, saizvozvo, zviwanikwa zvinochengetwa.

Kana paine kudikanwa kwekubatanidzwa nePush zviziviso, ipapo docker-compose.yaml uye docker-compose-push.yaml zvinotangwa.

Sezvo docker-compose.yaml uye docker-compose-push.yaml zviri muforodha, network imwechete inogadzirwa otomatiki.

Kuvandudza uye kuyedza maitiro neDocker uye Gitlab CI

Tsanangudzo yezvikamu. Iri ifaira repamusoro rine basa rekuunganidza zvikamu. Chii chinoshamisa apa? Pano tinosuma chikamu chekuenzanisa.

Uyu mufananidzo wakagadzirirwa-wakagadzirwa weDocker unomhanya nginx uye chishandiso chinoteerera kune iyo Docker socket. Dynamic, sezvo midziyo inobatidzwa nekudzimwa, iyo nginx config inogadzirwazve. Isu tinogovera kubata kwezvikamu tichishandisa yechitatu-level domain mazita.

KuDevelopment environment tinoshandisa iyo .dev domain - api.informer.dev. Zvishandiso zvine .dev domain zviripo pamushini wemugadziri wenzvimbo.

Zvadaro zvigadziridzo zvinoendeswa kune imwe neimwe purojekiti uye mapurogiramu ose anotangwa pamwe chete panguva imwe chete.

Kuvandudza uye kuyedza maitiro neDocker uye Gitlab CI

Kana tikazviratidzira zvine graphic, zvinoitika kuti mutengi ibrowser yedu kana imwe mhando yechishandiso yatinoita nayo zvikumbiro kune anoenzanisa.

Iyo balancer inosarudza kuti ndeipi mudziyo unoda kuwanikwa zvichibva pazita rezita.

Izvi zvinogona kuva nginx, iyo inopa JS kune admin panel. Izvi zvinogona kuitwa ne nginx, iyo inopa iyo API, kana static mafaera, ayo anopiwa ne nginx nenzira yekurodha mifananidzo.

Iyo dhizaini inoratidza kuti midziyo yakabatana kune chaiyo network uye yakavanzwa kuseri kweproxy.

Pamushini wemugadziri, unogona kuwana mudziyo uchiziva IP, asi musimboti hatishandise izvi. Hapana chikonzero chekuonana zvakananga.

Kuvandudza uye kuyedza maitiro neDocker uye Gitlab CI

Ndeupi muenzaniso wandinofanira kutarisa kuti ndiite dockerise application yangu? Mune maonero angu, muenzaniso wakanaka ndiyo yepamutemo docker mufananidzo weMySQL.

Zvakanyanya kuoma. Kune dzakawanda shanduro. Asi kushanda kwayo kunokutendera kuti uvhare zvakawanda zvinodikanwa zvinogona kumuka mukuita kwekusimudzira. Kana iwe ukatora nguva uye uchinzwisisa kuti zvese zvinopindirana sei, saka ndinofunga hauzove nematambudziko ekuzviita iwe pachako.

Hub.docker.com inowanzo ine zvinongedzo kune github.com, uko mbishi data inopihwa zvakananga kubva kwaunogona kuvaka mufananidzo wega.

Kuwedzera mune ino repository kune script docker-endpoint.sh, iyo ine basa rekutanga kutanga uye nekuenderera mberi nekugadziriswa kwekutanga application.

Zvakare mumuenzaniso uyu pane mukana wekugadzirisa uchishandisa mamiriro akasiyana. Nekutsanangura shanduko yenharaunda kana uchimhanyisa mudziyo mumwe chete kana kuburikidza nedocker-compose, tinogona kutaura kuti isu tinofanirwa kuseta isina chinhu password ye docker yemidzi paMySQL kana chero chatinoda.

Pane sarudzo yekugadzira isina kurongeka password. Isu tinoti tinoda mushandisi, isu tinofanirwa kuseta password yemushandisi, uye isu tinofanirwa kugadzira dhatabhesi.

Mumapurojekiti edu, takabatanidza zvishoma iyo Dockerfile, iyo ine basa rekutanga. Ikoko takazvigadzirisa kune zvatinoda kuti tingowedzera kodzero dzevashandisi dzinoshandiswa neapp. Izvi zvakaita kuti zvikwanise kungoita dhatabhesi kubva kune application console mune ramangwana. Ruby applications ine mirairo yekugadzira, kugadzirisa, uye kudzima dhatabhesi.

Kuvandudza uye kuyedza maitiro neDocker uye Gitlab CI

Uyu muenzaniso weiyo chaiyo vhezheni yeMySQL inotaridzika pa github.com. Iwe unogona kuvhura iyo Dockerfile uye uone kuti kuisirwa kunoitika sei ipapo.

docker-endpoint.sh script inotarisira nzvimbo yekupinda. Panguva yekutanga, mamwe maitiro ekugadzirira anodiwa uye zvese izvi zviito zvinosanganisirwa mune yekutanga script.

Kuvandudza uye kuyedza maitiro neDocker uye Gitlab CI

Ngatipfuurirei kuchikamu chechipiri.

Isu takachinjira ku gitlab kuti tichengete makodhi makodhi. Iyi isimba rine simba rine chimiro chekuona.

Imwe yezvikamu zveGitlab ndeye Gitlab CI. Zvinokutendera kuti utsanangure nhevedzano yemirairo inozozoshandiswa kuronga kodhi yekutumira sisitimu kana kumhanya otomatiki kuyedza.

Chirevo paGitlab CI 2 https://goo.gl/uohKjI - Chirevo kubva kuRuby Russia kirabhu chakanyatsotsanangurwa uye chinogona kunge chiri chekufarira kwauri.

Kuvandudza uye kuyedza maitiro neDocker uye Gitlab CI

Iye zvino tichatarisa izvo zvinodiwa kuti uite Gitlab CI. Kuti titange Gitlab CI, tinongoda kuisa .gitlab-ci.yml faira mumudzi wechirongwa.

Pano isu tinotsanangura kuti isu tinoda kuita nhevedzano yematunhu senge test, deployment.

Isu tinonyora zvinyorwa zvinodaidza zvakananga docker-compose kuvaka kwekushandisa kwedu. Uyu ndiwo muenzaniso weiyo backend chete.

Tevere tinoti zvakafanira kumhanya kutama kushandura dhatabhesi uye kumhanya bvunzo.

Kana zvinyorwa zvakaitwa nemazvo uye zvisingadzore kodhi yekukanganisa, saka sisitimu inoenderera kune yechipiri nhanho yekutumirwa.

Nhanho yekutumirwa ikozvino inoshandiswa pakuita. Hatina kuronga kuti hapana-downtime restart.

Isu tinodzima midziyo yese nechisimba, tobva tasimudza midziyo yese zvakare, yakaunganidzwa padanho rekutanga panguva yekuyedzwa.

Ngatimhanyei mafambisirwo edhatabhesi ayo akanyorwa nevagadziri venzvimbo yazvino inoshanduka.

Pane chinyorwa chekuti izvi zvinofanirwa kushandiswa chete kune master bazi.

Haishande pakuchinja mamwe mapazi.

Zvinokwanisika kuronga kubudiswa pamwe chete nemapazi.

Kuvandudza uye kuyedza maitiro neDocker uye Gitlab CI

Kuronga izvi zvakare, tinoda kuisa Gitlab Runner.

Ichi chishandiso chakanyorwa muGolang. Iri faira rimwe chete sezvakajairwa munyika yeGolang, iyo isingade chero inotsamira.

Pakutanga tinonyoresa Gitlab Runner.

Isu tinogashira kiyi muGitlab web interface.

Zvadaro tinodaidza murairo wekutanga pamutsara wemirairo.

Kugadzirisa Gitlab Runner mune dialog mode (Shell, Docker, VirtualBox, SSH)

Kodhi iri paGitlab Runner ichaita pane zvese zvaitwa zvinoenderana ne.gitlab-ci.yml marongero.

Kuvandudza uye kuyedza maitiro neDocker uye Gitlab CI

Iyo inotaridzika sei muGitlab muwebhu interface. Mushure mekubatanidza GItlab CI, isu tine mureza unoratidza kuti chivakwa chiri papi panguva ino.

Isu tinoona kuti 4 maminetsi apfuura kuzvipira kwakaitwa kwakapasa bvunzo dzese uye hakuna kukonzera matambudziko.

Kuvandudza uye kuyedza maitiro neDocker uye Gitlab CI

Tinogona kutarisa magadzirirwo mune zvakadzama. Pano tinoona kuti nyika mbiri dzakatopfuura. Mamiriro ekuyedza uye mamiriro ekutumirwa pastaging.

Kana tikadzvanya pane chaiyo kuvaka, pachava nekoni inobuda yemirairo yakatangwa mukuita maererano ne .gitlab-ci.yml.

Kuvandudza uye kuyedza maitiro neDocker uye Gitlab CI

Izvi ndizvo zvinoita nyaya yechigadzirwa chedu. Tinoona kuti kwave nekuedza kwakabudirira. Kana bvunzo dzaendeswa, ivo havafambi kune nhanho inotevera uye iyo staging kodhi haina kuvandudzwa.

Kuvandudza uye kuyedza maitiro neDocker uye Gitlab CI

Ndeapi matambudziko atakagadzirisa mukugadzira pataishandisa docker? Sisitimu yedu ine zvikamu uye taifanira kutangazve zvimwe zvezvikamu zvakagadziridzwa mudura, uye kwete iyo yese system.

Kuti tiite izvi, taifanira kupatsanura zvese mumafolda akasiyana.

Mushure mekuita izvi, takava nedambudziko nenyaya yekuti Docker-compose inogadzira yayo network nzvimbo kune yega yega folda uye haione zvikamu zvemuvakidzani wayo.

Kuti titenderere, takagadzira network nemaoko muDocker. MuDocker-compose zvakanyorwa kuti iwe unofanirwa kushandisa network yakadai yepurojekiti iyi.

Saka, chikamu chega chega chinotanga neiyi mesh chinoona zvikamu mune zvimwe zvikamu zvehurongwa.

Dambudziko rinotevera nderekuparadzanisa matanho pakati pezvirongwa zvakawanda.

Sezvo kuti zvese izvi zvitaridzike zvakanaka uye zviri padyo sezvinobvira pakugadzirwa, zvakanaka kushandisa port 80 kana 443, iyo inoshandiswa kwese kwese muWEB.

Kuvandudza uye kuyedza maitiro neDocker uye Gitlab CI

Takagadzirisa sei izvi? Isu takapa imwe Gitlab Runner kumapurojekiti makuru ese.

Gitlab inokutendera kuti utange akati wandei akagoverwa Gitlab Runners, ayo anongotora ese mabasa rimwe nerimwe mune chaotic order womhanya nawo.

Kuti tidzivise matambudziko emba, takaganhurira boka remapurojekiti edu kune imwe Gitlab Runner, iyo inobata nemavhoriyamu edu pasina matambudziko.

Isu takafambisa nginx-proxy mune yakaparadzana yekutanga script uye takanyora magridi emapurojekiti ese mairi.

Yedu purojekiti ine gidhi rimwe chete, uye iyo balancer ine akati wandei grids zvichienderana nemazita eprojekiti. Inogona kuita proxy zvakare nemazita emazita.

Zvikumbiro zvedu zvinouya kuburikidza nedura pachiteshi 80 uye zvinogadziriswa kune boka remidziyo inoshandira iyi domain.

Kuvandudza uye kuyedza maitiro neDocker uye Gitlab CI

Ndeapi mamwe matambudziko aivepo? Izvi ndizvo zvinomhanya midziyo yese semidzi nekukasira. Uyu ndiwo mudzi usina kuenzana mudzi wegadziriro.

Nekudaro, kana iwe ukapinda mumudziyo, ichave mudzi uye iyo faira yatinogadzira mumudziyo uyu inogamuchira kodzero dzemidzi.

Kana mugadziri akapinda mumudziyo uye akaita mimwe mirairo ipapo iyo yakagadzira mafaira, ndokubva asiya mudziyo, ipapo mubhuku rake rekushanda ane faira yaasina kuwana.

Izvi zvingagadziriswa sei? Iwe unogona kuwedzera vashandisi vanenge vari mumudziyo.

Ndeapi matambudziko akamuka patakawedzera mushandisi?

Paunenge uchigadzira mushandisi, iyo ID yeboka (UID) uye mushandisi ID (GID) kazhinji hazvienderane.

Kugadzirisa dambudziko iri mumudziyo tinoshandisa vashandisi vane ID 1000.

Muchiitiko chedu, izvi zvakapindirana nenyaya yekuti vanenge vese vanogadzira vanoshandisa Ubuntu OS. Uye muUbuntu OS mushandisi wekutanga ane ID 1000.

Kuvandudza uye kuyedza maitiro neDocker uye Gitlab CI

Tine zvirongwa here?

Verenga zvakare zvinyorwa zveDocker. Iyo purojekiti iri kushingaira kukura, zvinyorwa zviri kuchinja. Data yakawanikwa mwedzi miviri kana mitatu yadarika iri kuita zvechinyakare zvishoma nezvishoma.

Zvimwe zvezvinetso zvatakagadzirisa zvinogona kunge zvakatogadziriswa nenzira dzakajairika.

Ndinoda chaizvo kuenderera mberi uye kuenda zvakananga ku orchestration.

Mumwe muenzaniso ndeye Docker yakavakirwa-mukati meshini inonzi Docker Swarm, iyo inobuda mubhokisi. Ndinoda kutanga chimwe chinhu mukugadzirwa kwakavakirwa paDocker Swarm tekinoroji.

Magaba ekuberekesa anoita kuti kushanda nematanda kusanetsa. Iye zvino matanda acho ari ega. Vanoparadzirwa mumidziyo. Rimwe remabasa nderekuita nyore kuwana matanda kuburikidza newebhu interface.

Kuvandudza uye kuyedza maitiro neDocker uye Gitlab CI

Source: www.habr.com

Voeg