Ts'ebetso ea nts'etsopele le liteko ka Docker le Gitlab CI

Ke etsa tlhahiso ea ho bala sengoloa sa tlaleho ea Alexander Sigachev ho tsoa ho Inventos "Ntshetsopele le ts'ebetso ea tlhahlobo le Docker + Gitlab CI"

Ba sa tsoa qala ho kenya ts'ebetsong ts'ebetso ea nts'etsopele le tlhahlobo e thehiloeng ho Docker + Gitlab CI hangata ba botsa lipotso tsa mantlha. Ho qala hokae? Joang ho hlophisa? Joang ho hlahloba?

Tlaleho ena e ntle hobane e bua ka mokhoa o hlophisitsoeng mabapi le ts'ebetso ea nts'etsopele le tlhahlobo e sebelisang Docker le Gitlab CI. Tlaleho ka boeona e tsoa ho 2017. Ke nahana hore tlalehong ena u ka ithuta lintho tsa motheo, mokhoa, maikutlo, phihlelo ea tšebeliso.

Ke mang ea tsotellang, ka kopo tlasa katse.

Lebitso la ka ke Alexander Sigachev. Ke sebeletsa Inventos. Ke tla u bolella ka phihlelo ea ka ea ho sebelisa Docker le kamoo re e kenyang ts'ebetsong butle-butle mererong ea k'hamphani.

Sehlooho sa tlhahiso: Ts'ebetso ea nts'etsopele e sebelisang Docker le Gitlab CI.

Ts'ebetso ea nts'etsopele le liteko ka Docker le Gitlab CI

Ena ke puo ea ka ea bobeli ka Docker. Nakong ea tlaleho ea pele, re ne re sebelisa Docker in Development ho mechini ea nts'etsopele. Palo ea basebetsi ba sebelisitseng Docker e ne e ka ba batho ba 2-3. Butle-butle, phihlelo e ile ea fumanoa ’me ra tsoela pele ho se hokae. Link ho rona tlaleho ea pele.

Ho tla ba le eng tlalehong ee? Re tla arolelana phihlelo ea rona mabapi le hore na re bokelletse rake, mathata afe ao re a rarolotseng. Hase hohle moo e neng e le ntle, empa e lumelletsoe ho tsoela pele.

Lepetjo la rona ke: emisa tsohle tseo re ka li fumanang.

Ts'ebetso ea nts'etsopele le liteko ka Docker le Gitlab CI

Re rarolla mathata afe?

Ha ho na le lihlopha tse 'maloa k'hamphaning, moqapi ke sesebelisoa se arolelanoang. Ho na le methati eo moetsi oa lenaneo a ntšoang morerong o le mong ebe o fuoa nako e itseng morerong o mong.

E le hore moqapi oa lenaneo a utloisise ka potlako, o hloka ho kopitsa khoutu ea mohloli oa morero le ho qala tikoloho kapele kamoo ho ka khonehang, e leng se tla mo lumella hore a tsoele pele ho rarolla mathata a morero ona.

Hangata, haeba u qala ho tloha qalong, joale ho na le litokomane tse fokolang morerong. Lintlha tse mabapi le mokhoa oa ho seta li fumaneha feela ho batho ba khale. Basebetsi ba ipehela sebaka sa bona sa mosebetsi ka bobona ka letsatsi le le leng kapa a mabeli. Ho potlakisa sena, re sebelisitse Docker.

Lebaka le latelang ke ho tsitsa ha maemo ho Nts'etsopele. Boiphihlelong ba ka, bahlahisi ba lula ba nka bohato ba pele. Ketsahalong e 'ngoe le e' ngoe ea bohlano, ho kenngoa domain name, mohlala, vasya.dev. Haufi le eena ke moahisani oa hae Petya, eo sebaka sa hae e leng petya.dev. Ba theha sebaka sa marang-rang kapa karolo e itseng ea sistimi ba sebelisa lebitso lena la domain.

Ha tsamaiso e ntse e hōla 'me mabitso ana a marang-rang a qala ho kena litlhophisong, ho hlaha khohlano ea tikoloho ea Nts'etsopele mme tsela ea sebaka sa marang-rang e ngoloa bocha.

Ho etsahala se tšoanang le ka litlhophiso tsa database. Motho ha a khathatsehe ka ts'ireletso mme o sebetsa ka password e se nang letho. Sethaleng sa ho kenya, MySQL e ile ea botsa motho e mong phasewete mme phasewete ea fetoha 123. Hangata ho etsahala hore database config e lula e fetoha ho itšetlehile ka boitlamo ba moqapi. Motho e mong o lokisitse, motho e mong ha a ka a lokisa config. Ho ne ho e-na le maqheka ha re etsa mofuta o itseng oa tlhahlobo ea tlhahlobo .gitignore mme mohlahisi e mong le e mong o ne a tlameha ho kenya database. Sena se ile sa etsa hore ho be thata ho qala. Hoa hlokahala, har'a lintho tse ling, ho hopola ka database. Database e tlameha ho qalisoa, password e tlameha ho kenngoa, mosebedisi o tlameha ho ngolisoa, tafole e tlameha ho etsoa, ​​joalo-joalo.

Bothata bo bong ke mefuta e fapaneng ea lilaebrari. Hangata ho etsahala hore moqapi o sebetsa le merero e fapaneng. Ho na le morero oa Lefa o qalileng lilemo tse hlano tse fetileng (ho tloha 2017 - ed. note). Nakong ea ho qala, re qalile ka MySQL 5.5. Ho boetse ho na le merero ea sejoale-joale moo re lekang ho kenya tšebetsong mefuta ea sejoale-joale ea MySQL, mohlala, 5.7 kapa ho feta (ka 2017 - ed. note)

Mang kapa mang ea sebetsang le MySQL oa tseba hore lilaebrari tsena li tlisa ho itšetleha ka tsona. Ho na le bothata ho tsamaisa li-base tse 2 hammoho. Bonyane, bareki ba khale ba na le bothata ba ho hokela database e ncha. Sena le sona se baka mathata a 'maloa.

Bothata bo latelang ke ha moqapi a sebetsa mochine oa sebaka, o sebelisa lisebelisoa tsa sebaka seo, lifaele tsa sebaka seo, RAM ea sebakeng seo. Tšebelisano eohle nakong ea ho hlahisa tharollo ea mathata e etsoa ka har'a moralo oa hore e sebetsa mochine o le mong. Mohlala ke ha re e-na le li-server tsa backend ho Tlhahiso ea 3, 'me moqapi o boloka lifaele bukeng ea metso' me ho tloha moo nginx e nka lifaele ho araba kopo. Ha khoutu e joalo e kena Tlhahisong, hoa etsahala hore faele e teng ho e 'ngoe ea li-server tse 3.

Tataiso ea li-microservices e ntse e tsoela pele hona joale. Ha re arola lits'ebetso tsa rona tse kholo ka likaroloana tse nyane tse sebelisanang. Sena se o lumella ho khetha theknoloji bakeng sa bongata bo itseng ba mesebetsi. E boetse e u lumella ho arolelana mosebetsi le boikarabello pakeng tsa bahlahisi.

Frondend-developer, e ntseng e tsoela pele ho JS, ha e na tšusumetso ho Backend. Moqapi oa backend, le eena, o nts'etsapele, molemong oa rona, Ruby on Rails mme ha a kena-kenane le Frondend. Tšebelisano e etsoa ho sebelisoa API.

Joalo ka bonase, ka thuso ea Docker, re khonne ho sebelisa lisebelisoa hape ho Staging. Morero o mong le o mong, ka lebaka la litlhaloso tsa oona, o ne o hloka maemo a itseng. Ha e le hantle, ho ne ho hlokahala hore ho abeloe seva ea sebele le ho e hlophisa ka thoko, kapa ho arolelana mofuta o mong oa tikoloho le merero e ka susumetsanang, ho latela mofuta oa lilaeborari.

Ts'ebetso ea nts'etsopele le liteko ka Docker le Gitlab CI

Lisebelisoa. Re sebelisa eng?

  • Docker ka boeona. Dockerfile e hlalosa ho its'etleha ha ts'ebeliso e le 'ngoe.
  • Docker-compose ke sephutheloana se kopanyang tse 'maloa tsa lits'ebetso tsa rona tsa Docker.
  • Re sebelisa GitLab ho boloka khoutu ea mohloli.
  • Re sebelisa GitLab-CI bakeng sa ho kopanya tsamaiso.

Ts'ebetso ea nts'etsopele le liteko ka Docker le Gitlab CI

Tlaleho e na le likarolo tse peli.

Karolo ea pele e tla bua ka hore na Docker e ne e tsamaisoa joang ka mechini ea bahlahisi.

Karolo ea bobeli e tla bua ka mokhoa oa ho sebelisana le GitLab, hore na re etsa liteko joang le hore na re fetela joang ho Staging.

Ts'ebetso ea nts'etsopele le liteko ka Docker le Gitlab CI

Docker ke theknoloji e lumellang (ho sebelisa mokhoa oa ho phatlalatsa) ho hlalosa likarolo tse hlokahalang. Ena ke mohlala oa Dockerfile. Mona re phatlalatsa hore re rua ho tsoa ho Ruby ea molao: 2.3.0 Docker setšoantšo. E na le mofuta oa Ruby 2.3 o kentsoeng. Re kenya lilaebrari tse hlokahalang tsa ho haha ​​le NodeJS. Re hlalosa hore re theha directory /app. Beha directory ea app e le bukana ea ho sebetsa. Bukeng ena re beha Gemfile e nyane e hlokahalang le Gemfile.lock. Ebe re theha merero e kenyang setšoantšo sena sa ho itšetleha. Re bontša hore setshelo se tla be se loketse ho mamela koung ea kantle ea 3000. Taelo ea ho qetela ke taelo e hlahisang kopo ea rona ka ho toba. Haeba re phethahatsa taelo ea ho qala morero, kopo e tla leka ho matha le ho tsamaisa taelo e boletsoeng.

Ts'ebetso ea nts'etsopele le liteko ka Docker le Gitlab CI

Ona ke mohlala o fokolang oa faele ea "docker-compose". Tabeng ena, re bontša hore ho na le kamano pakeng tsa lijana tse peli. Sena se kenelletse ka kotloloho ts'ebeletso ea database le ts'ebeletso ea webo. Lisebelisoa tsa rona tsa marang-rang maemong a mangata li hloka mofuta o itseng oa database e le mokokotlo oa ho boloka data. Kaha re sebelisa MySQL, mohlala o na le MySQL - empa ha ho letho le re thibelang ho sebelisa database e 'ngoe (PostgreSQL, Redis).

Re nka mohloling oa molao ho tloha ho Docker hub setšoantšo sa MySQL 5.7.14 ntle le liphetoho. Re bokella setšoantšo se ikarabellang bakeng sa ts'ebeliso ea marang-rang ho tsoa bukeng ea hajoale. E bokella setšoantšo bakeng sa rona nakong ea tlhahiso ea pele. Ebe e tsamaisa taelo eo re e phethang mona. Ha re khutlela morao, re tla bona hore taelo ea ho qala ka Puma e hlalositsoe. Puma ke tšebeletso e ngotsoeng ka Ruby. Tabeng ea bobeli, re kheloha. Taelo ena e ka ba e sa reroang ho latela litlhoko kapa mesebetsi ea rona.

Re boetse re hlalosa hore re hloka ho fetisetsa boema-kepe mochining oa rona o amohelang batho ho tloha ho 3000 ho isa ho 3000 boema-kepeng ba lijana. Sena se etsoa ka bohona ho sebelisa li-iptables le mochini oa eona, o kentsoeng ka kotloloho ho Docker.

Moetsi le eena, joalo ka pele, a ka fumana aterese efe kapa efe e fumanehang ea IP, mohlala, 127.0.0.1 ke aterese ea IP ea lehae kapa kantle ho mochini.

Mohala oa ho qetela o re setshelo sa webo se itšetlehile ka setshelo sa db. Ha re bitsa qalo ea setshelo sa webo, docker-compose e tla qala ka ho qala database bakeng sa rona. E se e ntse e le qalong ea database (ha e le hantle, ka mor'a ho qalisoa ha setshelo! Sena ha se tiise ho itokisetsa ha database) e tla qala kopo, backend ea rona.

Sena se qoba liphoso ha database e sa hlahisoa mme e boloka lisebelisoa ha re emisa setshelo sa database, kahoo re lokolla lisebelisoa bakeng sa merero e meng.

Ts'ebetso ea nts'etsopele le liteko ka Docker le Gitlab CI

Ke eng e re fang ts'ebeliso ea database dockerization morerong. Re lokisa mofuta oa MySQL bakeng sa bahlahisi bohle. Sena se qoba liphoso tse ling tse ka hlahang ha liphetolelo li fapana, ha syntax, tlhophiso, litlhophiso tsa kamehla li fetoha. Sena se o lumella ho hlakisa lebitso le tloaelehileng la moamoheli bakeng sa database, login, password. Re tloha hole le zoo ea mabitso le likhohlano lifaeleng tsa config tseo re neng re e-na le tsona pejana.

Re na le monyetla oa ho sebelisa tlhophiso e nepahetseng haholoanyane bakeng sa tikoloho ea Ntlafatso, e tla fapana le ea kamehla. MySQL e etselitsoe mechini e fokolang ka boiketsetso mme ts'ebetso ea eona kantle ho lebokose e mpe haholo.

Ts'ebetso ea nts'etsopele le liteko ka Docker le Gitlab CI

Docker e u lumella ho sebelisa mofetoleli oa Python, Ruby, NodeJS, PHP oa mofuta o lakatsehang. Re tlosa tlhoko ea ho sebelisa mofuta o mong oa mookameli oa mofuta. Nakong e fetileng, Ruby o ne a sebelisa sephutheloana sa rpm se u lumellang hore u fetole phetolelo ho itšetlehile ka morero. E boetse e lumella, ka lebaka la setshelo sa Docker, ho tsamaisa khoutu hantle le ho e fetolela hammoho le litšepiso. Ha re na bothata ba ho utloisisa mofuta oa mofetoleli le khoutu. Ho nchafatsa mofuta, theola sets'oants'o sa khale 'me u phahamise sets'oants'o se secha. Haeba ho na le phoso, re ka theola setshelo se secha, ra phahamisa setshelo sa khale.

Ka mor'a ho haha ​​​​sets'oants'o, lijana tsa Tsoelo-pele le Tlhahiso li tla tšoana. Sena ke 'nete haholo-holo bakeng sa lisebelisoa tse kholo.

Ts'ebetso ea nts'etsopele le liteko ka Docker le Gitlab CI Ka Frontend re sebelisa JavaScipt le NodeJS.

Joale re na le projeke ea ho qetela ho ReacJS. Moqapi o tsamaisitse ntho e 'ngoe le e' ngoe e ka har'a setshelo mme a ntlafatsoa a sebelisa hot-reload.

Ka mor'a moo, mosebetsi oa kopano oa JavaScipt oa qalisoa 'me khoutu e hlophisitsoeng ka statics e fanoa ka lisebelisoa tsa ho boloka nginx.

Ts'ebetso ea nts'etsopele le liteko ka Docker le Gitlab CI

Mona ke fane ka morero oa morero oa rona oa ho qetela.

Ke mesebetsi efe e ileng ea rarolloa? Re ne re hloka ho theha sistimi eo lisebelisoa tsa cellular li sebelisanang le eona. Ba fumana data. Monyetla o mong ke ho romella litsebiso ho sesebelisoa sena.

Re entse eng bakeng sa see?

Re arolelitse likarolo tsa kopo tse kang: karolo ea admin ho JS, backend, e sebetsang ka sebopeho sa REST tlas'a Ruby on Rails. The backend e sebelisana le database. Sephetho se hlahisoang se fuoa mofani. Phanele ea tsamaiso e sebelisana le backend le database ka sebopeho sa REST.

Hape re ne re hloka ho romella litsebiso tsa push. Pele ho moo, re ne re e-na le morero o ileng oa kenya tšebetsong mochine o ikarabellang bakeng sa ho fana ka litsebiso ho li-platform tsa mobile.

Re ntlafalitse leano le latelang: opareitara e tsoang ho sebatli e sebelisana le phanele ea admin, karolo ea admin e sebelisana le backend, mosebetsi ke ho romella litsebiso tsa Push.

Litsebiso tsa Push li sebelisana le karolo e 'ngoe e sebelisoang ho NodeJS.

Mela e a etsoa ebe litsebiso li romeloa ho latela mochine oa tsona.

Li-database tse peli li entsoe mona. Hajoale, ka thuso ea Docker, re sebelisa li-database tsa 2 tse ikemetseng tse sa amaneng ka tsela efe kapa efe. Ho phaella moo, ba na le marang-rang a tloaelehileng a tloaelehileng, 'me lintlha tsa' mele li bolokiloe libukeng tse fapaneng mochineng oa moqapi.

Ts'ebetso ea nts'etsopele le liteko ka Docker le Gitlab CI

Hoa tšoana empa ka lipalo. Mona ke moo ho sebelisa khoutu hape ho leng bohlokoa.

Haeba pejana re buile ka ho sebelisa khoutu hape ka mokhoa oa lilaeborari, joale mohlaleng ona, ts'ebeletso ea rona e arabelang litsebiso tsa Push e sebelisoa hape joalo ka seva e felletseng. E fana ka API. 'Me nts'etsopele ea rona e ncha e se e ntse e sebelisana le eona.

Ka nako eo, re ne re sebelisa mofuta oa 4 oa NodeJS. Hona joale (ka 2017 - ed. note) lintlafatsong tsa morao-rao re sebelisa mofuta oa 7 oa NodeJS. Ha ho na bothata likarolong tse ncha ho kenyelletsa mefuta e mecha ea lilaebrari.

Haeba ho hlokahala, o ka fetola le ho phahamisa mofuta oa NodeJS ho tsoa ts'ebeletso ea tsebiso ea Push.

'Me haeba re ka boloka ho lumellana ha API, joale ho tla khoneha ho e nkela sebaka ka merero e meng e neng e sebelisoa pele.

Ts'ebetso ea nts'etsopele le liteko ka Docker le Gitlab CI

U hloka eng ho eketsa Docker? Re eketsa Dockerfile sebakeng sa rona sa polokelo, se hlalosang litšepe tse hlokahalang. Mohlala ona, likarolo li arotsoe ka mokhoa o utloahalang. Ena ke bonyane sete ea moqapi oa backend.

Ha re theha morero o mocha, re theha Dockerfile, re hlalosa tikoloho e lakatsehang (Python, Ruby, NodeJS). Ka docker-compose, e hlalosa ho itšetleha ho hlokahalang - database. Re hlalosa hore re hloka database ea mofuta o joalo le o joalo, boloka data mane le mane.

Re sebelisa setshelo se arohaneng sa boraro se nang le nginx ho sebeletsa static. Hoa khoneha ho kenya litšoantšo. Backend e li beha ka molumo o lokiselitsoeng esale pele, o boetse o kenngoa ka setshelo se nang le nginx, se fanang ka static.

Ho boloka nginx, tlhophiso ea mysql, re kentse foldara ea Docker eo ho eona re bolokang litlhophiso tse hlokahalang. Ha moqapi a etsa git clone ea polokelo mochining oa hae, o se a ntse a e-na le projeke e lokiselitsoeng ntlafatso ea lehae. Ha ho na pelaelo hore na u ka sebelisa kou efe kapa hore na u ka sebelisa litlhophiso life.

Ts'ebetso ea nts'etsopele le liteko ka Docker le Gitlab CI

Ka mor'a moo, re na le likarolo tse 'maloa: admin, tsebisa-API, litsebiso tsa push.

E le ho qala tsena tsohle, re thehile polokelo e 'ngoe, eo re e bitsitseng dockerized-app. Hona joale re sebelisa li-repositories tse 'maloa pele ho karolo ka' ngoe. Li fapane ka mokhoa o utloahalang - ho GitLab e shebahala joaloka foldara, empa mochine oa moqapi, foldara ea morero o itseng. Boemo bo le bong ho ea tlase ke likarolo tse tla kopanngoa.

Ts'ebetso ea nts'etsopele le liteko ka Docker le Gitlab CI

Ona ke mohlala oa litaba tse ka har'a dockerized-app. Re boetse re tlisa bukana ea Docker mona, eo ho eona re tlatsang litlhophiso tse hlokahalang bakeng sa litšebelisano tsa likarolo tsohle. Ho na le README.md e hlalosang ka bokhutšoanyane mokhoa oa ho tsamaisa morero.

Mona re sebelisitse lifaele tse peli tsa docker-compose. Sena se etsoa e le hore u tsebe ho matha ka mehato. Ha mohlahlami a sebetsa le mantlha, ha a hloke litemoso tsa push, o qala feela file ea "docker-compose" mme, ka hona, mohloli oa bolokoa.

Haeba ho na le tlhoko ea ho kopanya le litsebiso tsa push, joale docker-compose.yaml le docker-compose-push.yaml lia thakholoa.

Kaha docker-compose.yaml le docker-compose-push.yaml li ka har'a foldara, marang-rang a le mong a iketselitsoeng a iketsetse.

Ts'ebetso ea nts'etsopele le liteko ka Docker le Gitlab CI

Tlhaloso ea likarolo. Ena ke faele e tsoetseng pele haholoanyane e ikarabellang bakeng sa pokello ea likarolo. Ke eng e ikhethang moo? Mona re kenyelletsa karolo ea balancer.

Ena ke setšoantšo sa Docker se entsoeng se itokisitse se tsamaisang nginx le sesebelisoa se mamelang soketeng ea Docker. E matla, ha lijana li buloa le ho tima, li nchafatsa tlhophiso ea nginx. Re aba ho tšoaroa ha likarolo ka mabitso a marang-rang a boemo ba boraro.

Bakeng sa tikoloho ea Ntlafatso, re sebelisa sebaka sa .dev - api.informer.dev. Lisebelisoa tse nang le domain name ea .dev lia fumaneha mochining oa lehae oa moqapi.

Ho feta moo, li-configs li fetisetsoa morerong o mong le o mong mme merero eohle e qalisoa hammoho ka nako e le 'ngoe.

Ts'ebetso ea nts'etsopele le liteko ka Docker le Gitlab CI

Ka mokhoa o hlakileng, hoa fumaneha hore moreki ke sebatli sa rona kapa sesebelisoa se itseng seo ka sona re etsang likopo ho sebatli.

The domain name balancer e etsa qeto ea hore na u ka ikopanya le setshelo sefe.

E ka ba nginx, e fanang ka admin JS. Sena e ka ba nginx, e fanang ka API, kapa lifaele tse tsitsitseng, tse fuoang nginx ka mokhoa oa ho kenya litšoantšo.

Setšoantšo se bontša hore lijana li kopantsoe ke marang-rang a sebele 'me li patiloe ka mor'a proxy.

Mochine oa moqapi, o ka fihlella setshelo o tseba IP, empa ha e le hantle ha re sebelise sena. Ha ho hlokahale hore ho be le phihlello e tobileng.

Ts'ebetso ea nts'etsopele le liteko ka Docker le Gitlab CI

Ke mohlala ofe oo u ka o shebang ho etsa kopo ea hau? Ka maikutlo a ka, mohlala o motle ke setšoantšo sa molao sa docker bakeng sa MySQL.

Ho thata haholo. Ho na le liphetolelo tse ngata. Empa ts'ebetso ea eona e u lumella ho koahela litlhoko tse ngata tse ka hlahang ts'ebetsong ea ntlafatso e tsoelang pele. Haeba u qeta nako 'me u fumana hore na tsohle li sebelisana joang, joale ke nahana hore u ke ke ua ba le mathata a ho iketsetsa ts'ebetsong.

Hub.docker.com hangata e na le likhokahano tsa github.com, e nang le data e tala eo ka kotloloho u ka ikahelang setšoantšo ka bouena.

Ho feta moo sebakeng sena sa polokelo ho na le lengolo la docker-endpoint.sh, le ikarabellang bakeng sa ho qala le bakeng sa ts'ebetso e tsoelang pele ea ho qala kopo.

Hape mohlaleng ona, ho na le bokhoni ba ho hlophisa ho sebelisa mefuta-futa ea tikoloho. Ka ho hlalosa phapang ea tikoloho ha o tsamaisa setshelo se le seng kapa ka docker-compose, re ka re re hloka ho beha phasewete e se nang letho bakeng sa docker ho mela ho MySQL kapa eng kapa eng eo re e batlang.

Ho na le khetho ea ho etsa password e sa reroang. Re re re hloka mosebelisi, re tlameha ho beha password bakeng sa mosebelisi, 'me re hloka ho theha database.

Mererong ea rona, re kopantse Dockerfile hanyane, e ikarabellang bakeng sa ho qala. Ha re le moo re ile ra e lokisa ho latela litlhoko tsa rona ho e etsa feela katoloso ea litokelo tsa mosebelisi tseo kopo e li sebelisang. Sena se ile sa re fa monyetla oa ho theha database ho tsoa ho khomphutha ea kopo hamorao. Lisebelisoa tsa Ruby li na le taelo ea ho theha, ho fetola, le ho hlakola li-database.

Ts'ebetso ea nts'etsopele le liteko ka Docker le Gitlab CI

Ona ke mohlala oa hore na mofuta o itseng oa MySQL o shebahala joang ho github.com. U ka bula Dockerfile 'me u bone hore na ho kenya ho ntse ho tsoela pele joang moo.

docker-endpoint.sh ke sengoloa se ikarabellang bakeng sa sebaka sa ho kena. Nakong ea ho qala, ho hlokahala mehato e meng ea ho itokisa, 'me liketso tsena kaofela li etsoa feela ka har'a script ea ho qala.

Ts'ebetso ea nts'etsopele le liteko ka Docker le Gitlab CI

Ha re feteleng karolong ea bobeli.

Ho boloka likhoutu tsa mohloli, re fetohetse ho gitlab. Ena ke sistimi e matla e nang le sebopeho sa pono.

E 'ngoe ea likarolo tsa Gitlab ke Gitlab CI. E u lumella ho hlalosa tatellano ea litaelo tseo hamorao li tla sebelisoa ho hlophisa mokhoa oa ho fana ka khoutu kapa ho etsa tlhahlobo ea boiketsetso.

Gitlab CI 2 bua https://goo.gl/uohKjI - tlaleho e tsoang ho sehlopha sa Ruby Russia - e qaqileng haholo mme mohlomong e tla u khahla.

Ts'ebetso ea nts'etsopele le liteko ka Docker le Gitlab CI

Joale re tla sheba hore na ho hlokahala eng ho kenya tšebetsong Gitlab CI. E le hore re qale Gitlab CI, re hloka feela ho kenya faele ea .gitlab-ci.yml motso oa morero.

Mona re hlalosa hore re batla ho etsa tatellano ea linaha joalo ka teko, deploy.

Re etsa mangolo a bitsang docker-compose ka kotloloho ho aha ts'ebeliso ea rona. Ena ke mohlala feela oa morao-rao.

Ka mor'a moo, re re hoa hlokahala ho tsamaisa ho falla ho fetola database le ho etsa liteko.

Haeba lingoloa li phethiloe ka nepo 'me li sa khutlise khoutu ea phoso, joale sistimi e fetela mohatong oa bobeli oa ho romelloa.

Mokhahlelo oa thomello hajoale o kengoa tšebetsong. Ha rea ​​hlophisa ho qala bocha ha nako e sa sebetseng.

Re tima lijana tsohle ka likhoka, ebe re phahamisa lijana tsohle hape, tse bokelletsoeng sethaleng sa pele nakong ea tlhahlobo.

Re ntse re tsamaisa maemo a hajoale a ho falla ha database a ngotsoeng ke bahlahisi.

Ho na le molaetsa oa hore sena se sebetsa feela ho lekala la master.

Ha ho fetola makala a mang ha e etsoe.

Hoa khoneha ho hlophisa li-rollout ka makala.

Ts'ebetso ea nts'etsopele le liteko ka Docker le Gitlab CI

Ho hlophisa sena ho ea pele, re hloka ho kenya Gitlab Runner.

Tšebeliso ena e ngotsoe ka Golang. Ke faele e le 'ngoe, joalo ka ha e tloaelehile lefatšeng la Golang, e sa hlokeng ho itšetleha ka letho.

Ha re qala, re ngolisa Gitlab Runner.

Re fumana senotlolo ho sebopeho sa webo sa Gitlab.

Ebe re bitsa taelo ea ho qala moleng oa taelo.

Beha Gitlab Runner ka mokhoa o kopanetsoeng (Shell, Docker, VirtualBox, SSH)

Khouto e ho Gitlab Runner e tla sebelisa boitlamo bo bong le bo bong, ho latela .gitlab-ci.yml tlhophiso.

Ts'ebetso ea nts'etsopele le liteko ka Docker le Gitlab CI

E shebahala joang ka pono ho Gitlab ho sehokelo sa webo. Kamora hore re hokahane le GItlab CI, re na le folakha e bonts'ang boemo ba moaho hajoale.

Rea bona hore boitlamo bo entsoe metsotso e 4 e fetileng, e fetisitseng liteko tsohle mme ha ea ka ea baka mathata.

Ts'ebetso ea nts'etsopele le liteko ka Docker le Gitlab CI

Re ka shebisisa kaho ea kaho. Mona re bona hore linaha tse peli li se li fetile. Boemo ba teko le boemo ba thomello sethaleng.

Haeba re tobetsa mohaho o itseng, joale ho tla ba le tlhahiso ea console ea litaelo tse neng li tsamaisoa ts'ebetsong ho latela .gitlab-ci.yml.

Ts'ebetso ea nts'etsopele le liteko ka Docker le Gitlab CI

Sena ke kamoo nalane ea sehlahisoa sa rona e shebahalang ka teng. Rea bona hore ho bile le liteko tse atlehileng. Ha liteko li romelloa, ha li tsoele pele mohatong o latelang mme khoutu ea sethala ha e ntlafatsoe.

Ts'ebetso ea nts'etsopele le liteko ka Docker le Gitlab CI

Ke mesebetsi efe eo re ileng ra e rarolla ha re ne re kenya ts'ebetsong docker? Sistimi ea rona e na le likarolo mme re ne re hloka ho qala bocha, ke karolo feela ea likarolo tse ntlafalitsoeng sebakeng sa polokelo, eseng sistimi eohle.

Ho etsa sena, re ile ra tlameha ho pshatla ntho e 'ngoe le e' ngoe ka lifoldara tse arohaneng.

Kamora hore re etse sena, re bile le bothata ka taba ea hore Docker-compose e iketsetsa sebaka sa marang-rang bakeng sa ntate e mong le e mong mme ha e bone likarolo tsa moahelani.

Bakeng sa ho potoloha, re thehile marang-rang ho Docker ka letsoho. E ngotsoe ka Docker-compose hore u sebelise marang-rang a joalo bakeng sa morero ona.

Kahoo, karolo e 'ngoe le e' ngoe e qalang ka letlooeng lena e bona likarolo likarolong tse ling tsa tsamaiso.

Taba e latelang ke ho arola li-project tse ngata.

Kaha e le hore sena sohle se shebahale se le setle 'me se le haufi le tlhahiso, ho molemo ho sebelisa port 80 kapa 443, e sebelisoang hohle ho WEB.

Ts'ebetso ea nts'etsopele le liteko ka Docker le Gitlab CI

Re e rarolle joang? Re fane ka Gitlab Runner e le 'ngoe mererong eohle e meholo.

Gitlab e u lumella ho tsamaisa Gitlab Runners tse 'maloa tse phatlalalitsoeng, tse tla nka mesebetsi eohle ka tatellano ka tsela e ferekaneng ebe e li tsamaisa.

E le hore re se ke ra ba le ntlo, re ile ra lekanyetsa sehlopha sa merero ea rona ho Gitlab Runner e le 'ngoe, e sebetsanang ka katleho ntle le mathata le meqolo ea rona.

Re tsamaisitse nginx-proxy ho sengoloa se arohaneng sa ho qala mme ra eketsa marang-rang bakeng sa merero eohle e ho eona.

Morero oa rona o na le marang-rang a le mong, 'me balancer e na le lihlopha tse' maloa ka mabitso a morero. E ka ba proxy ho feta ka mabitso a domain.

Likopo tsa rona li tla sebakeng se ho port 80 'me li rarolloa ho ba sehlopha sa lijana se sebeletsang sebaka sena.

Ts'ebetso ea nts'etsopele le liteko ka Docker le Gitlab CI

Ke mathata afe a mang a neng a le teng? Sena ke seo lijana tsohle li se tsamaisang joalo ka motso ka ho sa feleng. Sena ke motso o sa lekane le motso oa motso oa sistimi.

Leha ho le joalo, haeba u kenya setshelo, e tla ba motso mme faele eo re e bopang ka har'a setshelo sena e fumana litokelo tsa motso.

Haeba moqapi a kentse setshelo mme a etsa litaelo tse ling moo tse hlahisang lifaele, ebe o tlohela setshelo, joale o na le faele bukeng ea hae ea ho sebetsa eo a sa khoneng ho e fumana.

E ka rarolloa joang? O ka eketsa basebelisi ba tla ba ka har'a setshelo.

Ke mathata afe a hlahileng ha re kenya mosebelisi?

Ha re theha mosebelisi, hangata ha re na ID ea sehlopha (UID) le ID ea mosebelisi (GID).

Ho rarolla bothata bona ka har'a setshelo, re sebelisa basebelisi ba nang le ID 1000.

Tabeng ea rona, sena se tsamaellana le taba ea hore hoo e batlang e le baetsi bohle ba sebelisa Ubuntu OS. Mme ho Ubuntu, mosebelisi oa pele o na le ID ea 1000.

Ts'ebetso ea nts'etsopele le liteko ka Docker le Gitlab CI

Re na le merero?

Bala litokomane tsa Docker. Morero o ntse o tsoela pele ka mafolofolo, litokomane lia fetoha. Lintlha tse ileng tsa amoheloa likhoeling tse peli kapa tse tharo tse fetileng li se li ntse li siuoa ke nako butle-butle.

A mang a mathata ao re a rarollotseng mohlomong a se a rarollotsoe ka mekhoa e tloaelehileng.

Kahoo ke batla ho fetela pele ho ea ka kotloloho sehlopheng sa 'mino oa liletsa.

Mohlala o mong ke mochini o hahelletsoeng oa Docker o bitsoang Docker Swarm, o tsoang ka lebokoseng. Ke batla ho tsamaisa ntho e itseng tlhahisong e thehiloeng ho theknoloji ea Docker Swarm.

Lijana tsa spawning li etsa hore ho be thata ho sebetsa ka likutu. Hona joale lifate li arotsoe. Li hasane ka har'a lijana. O mong oa mesebetsi ke ho etsa phihlello e bonolo ho li-log ka sehokelo sa webo.

Ts'ebetso ea nts'etsopele le liteko ka Docker le Gitlab CI

Source: www.habr.com

Eketsa ka tlhaloso