Ny dingana fampandrosoana sy fitsapana miaraka amin'i Docker sy Gitlab CI

Manoro hevitra anao aho hamaky ny transcript ny tatitra nataon'i Alexander Sigachev avy amin'ny Inventos "Fampandrosoana sy fitsapana miaraka amin'ny Docker + Gitlab CI"

Ireo izay vao manomboka mampihatra ny dingana fampandrosoana sy fitsapana mifototra amin'ny Docker + Gitlab CI dia matetika mametraka fanontaniana fototra. Aiza no hanombohana? Ahoana ny fandaminana? Ahoana ny fitsapana?

Tsara ity tatitra ity satria miresaka amin'ny fomba voarafitra momba ny fivoarana sy ny fizotran'ny fitsapana amin'ny fampiasana Docker sy Gitlab CI. Ny tatitra dia nanomboka tamin'ny taona 2017. Heveriko fa avy amin'ity tatitra ity dia azonao atao ny manangona ny fototra, ny fomba fiasa, ny hevitra ary ny traikefa amin'ny fampiasana.

Iza no mikarakara, azafady eo ambanin'ny saka.

Alexander Sigachev no anarako. Miasa amin'ny Inventos aho. Holazaiko aminao ny traikefako amin'ny fampiasana Docker sy ny fomba fampiharana azy tsikelikely amin'ny tetikasa ao amin'ny orinasa.

Lohahevitry ny tatitra: Fizotry ny fampandrosoana mampiasa Docker sy Gitlab CI.

Ny dingana fampandrosoana sy fitsapana miaraka amin'i Docker sy Gitlab CI

Ity no lahateniko faharoa momba an'i Docker. Tamin'ny fotoana nanaovana ny tatitra voalohany, Docker ihany no nampiasanay tamin'ny Fampandrosoana amin'ny milina mpamorona. Manodidina ny 2-3 ny isan'ny mpiasa nampiasa Docker. Nihena tsikelikely ny traikefa ary nandroso kely izahay. Rohy mankany aminay tatitra voalohany.

Inona no ho ao anatin'ity tatitra ity? Hizara ny traikefanay izahay momba ny rakes nangoninay, inona ny olana novahanay. Tsy tsara tarehy na aiza na aiza, fa namela anay handroso.

Ny teny filamatra: ataovy dockerize izay rehetra azonay.

Ny dingana fampandrosoana sy fitsapana miaraka amin'i Docker sy Gitlab CI

Inona no olana atrehintsika?

Rehefa manana ekipa maromaro ny orinasa iray dia loharano iombonana ny programmer. Misy dingana rehefa esorina amin'ny tetikasa iray ny programmer iray ary omena tetikasa hafa mandritra ny fotoana fohy.

Mba hahatakarana haingana ny programmer dia mila misintona ny kaody loharanon'ny tetikasa izy ary manangana tontolo iainana haingana araka izay azo atao, izay ahafahany mandroso bebe kokoa amin'ny famahana ny olan'ity tetikasa ity.

Matetika, raha manomboka amin'ny scratch ianao, dia misy antontan-taratasy kely ao amin'ny tetikasa. Ny antitra ihany no manana fampahalalana momba ny fomba fametrahana azy. Mametraka ny toeram-piasany samirery ny mpiasa ao anatin'ny iray na roa andro. Mba hanafainganana izany dia nampiasa Docker izahay.

Ny antony manaraka dia ny manara-penitra ny toe-javatra ao amin'ny Fampandrosoana. Raha ny traikefako dia mandray ny hetsika foana ny developer. Isaky ny tranga fahadimy dia misy sehatra manokana ampidirina, ohatra vasya.dev. Mipetraka eo akaikiko i Petya mpifanolobodirindrina amiko, Petya.dev ny faritra misy azy. Mamorona tranokala na singa rafitra sasany amin'ny fampiasana an'io anarana domain io izy ireo.

Rehefa mitombo ny rafitra ary manomboka ampidirina ao anatin'ny fanitsiana ireo anaran-tsehatra ireo, dia misy fifandirana amin'ny tontolon'ny Fampandrosoana ary averina nosoratana ny lalan'ny tranokala.

Toy izany koa no mitranga amin'ny firafitry ny database. Ny olona sasany dia tsy manelingelina ny fiarovana ary miasa amin'ny tenimiafina fototra tsy misy dikany. Tamin'ny dingana fametrahana dia nangataka tenimiafina olona iray ny MySQL ary ny tenimiafina dia nivadika ho 123. Matetika no mitranga fa ny config database dia miova tsy tapaka arakaraka ny fanoloran-tenan'ny mpamorona. Nisy nanitsy, nisy tsy nanitsy ny config. Nisy fika rehefa nametraka config test sasany izahay .gitignore ary ny developer tsirairay dia tsy maintsy nametraka ny angon-drakitra. Nanasarotra kokoa ny dingana fanombohana izany. Ankoatra ny zavatra hafa, mila mitadidy momba ny angon-drakitra ianao. Ny angon-drakitra dia tsy maintsy atomboka, tsy maintsy misoratra anarana ny tenimiafina, tsy maintsy misoratra anarana ny mpampiasa, tsy maintsy mamorona famantarana, sns.

Ny olana iray hafa dia ny dikan-teny samihafa amin'ny tranomboky. Matetika no mitranga fa ny developer dia miasa amin'ny tetikasa samihafa. Misy tetikasa Legacy, izay nanomboka dimy taona lasa izay (nanomboka tamin'ny 2017 - fanamarihan'ny mpamoaka lahatsoratra). Tany am-piandohana dia nanomboka tamin'ny MySQL 5.5 izahay. Misy ihany koa ny tetikasa maoderina izay ezahantsika hampihatra ny dikan-teny maoderina kokoa amin'ny MySQL, ohatra 5.7 na mihoatra (amin'ny taona 2017 - fanamarihan'ny mpanonta)

Izay rehetra miasa amin'ny MySQL dia mahafantatra fa ireo tranomboky ireo dia mitondra fiankinan-doha. Tena manahirana ny mampandeha angon-drakitra 2 miaraka. Farafaharatsiny, olana ny mampifandray ireo mpanjifa taloha amin'ny angona vaovao. Izany indray no miteraka olana maro.

Ny olana manaraka dia rehefa miasa amin'ny milina eo an-toerana ny developer iray, mampiasa loharano eo an-toerana, rakitra eo an-toerana, RAM eo an-toerana izy. Ny fifandraisana rehetra amin'ny fotoana famolavolana vahaolana amin'ny olana dia atao ao anatin'ny rafitry ny hoe miasa amin'ny milina iray izy. Ohatra iray dia rehefa manana mpizara backend ao amin'ny Production 3 isika, ary ny mpamorona dia mitahiry rakitra ao amin'ny lahatahiry fototra ary avy eo ny nginx dia maka ny rakitra hamaly ny fangatahana. Rehefa tafiditra ao amin'ny Production ny code toy izany dia hita fa misy ny rakitra ao amin'ny iray amin'ireo mpizara 3.

Mivoatra amin'izao fotoana izao ny fitarihana ny microservices. Rehefa mizara ireo fampiharana lehibe ataontsika isika ho singa kely izay mifandray amin'ny tsirairay. Izany dia ahafahanao misafidy teknolojia ho an'ny stack manokana. Izany koa dia ahafahanao mizara ny asa sy ny sehatry ny andraikitra eo amin'ny mpamorona.

Ny developer frontend, mivoatra ao amin'ny JS, dia saika tsy misy fiantraikany amin'ny backend. Ny mpandrindra backend kosa dia mivoatra, amin'ny tranga misy antsika, Ruby on Rails ary tsy manelingelina an'i Frondend. Ny fifandraisana dia atao amin'ny alàlan'ny API.

Amin'ny maha-bonus azy, tamin'ny fampiasana Docker dia afaka namerina ny loharano tamin'ny Staging izahay. Ny tetikasa tsirairay, noho ny zava-bitany, dia nitaky toe-javatra sasany. Amin'ny lafiny ara-batana, nilaina ny natokana ho an'ny mpizara virtoaly ary nanamboatra azy ireo misaraka, na mizara karazana tontolo miovaova sy tetikasa mety hisy fiantraikany amin'ny tsirairay, miankina amin'ny dikan'ny tranomboky.

Ny dingana fampandrosoana sy fitsapana miaraka amin'i Docker sy Gitlab CI

Tools. Inona no ampiasainay?

  • Docker mihitsy. Ny Dockerfile dia mamaritra ny fiankinan'ny fampiharana tokana.
  • Docker-compose dia amboara iray izay manambatra ny fampiharana Docker maro.
  • Mampiasa GitLab izahay hitahiry kaody loharano.
  • Mampiasa GitLab-CI izahay amin'ny fampidirana rafitra.

Ny dingana fampandrosoana sy fitsapana miaraka amin'i Docker sy Gitlab CI

Mizara roa ny tatitra.

Ny ampahany voalohany dia hilaza aminao ny fomba fampandehanana ny Docker amin'ny masinin'ny mpamorona.

Ny ampahany faharoa dia hiresaka momba ny fomba hifaneraserana amin'ny GitLab, ny fomba anaovana fitsapana ary ny fomba hidirantsika amin'ny Staging.

Ny dingana fampandrosoana sy fitsapana miaraka amin'i Docker sy Gitlab CI

Docker dia teknôlôjia izay mamela (mampiasa fomba fanambaràna) hamaritana ireo singa ilaina. Ity dia ohatra Dockerfile. Eto izahay dia manambara fa mandova avy amin'ny sary ofisialy Docker an'i Ruby:2.3.0. Misy Ruby version 2.3 napetraka. Mametraka ny tranomboky fivoriambe ilaina sy ny NodeJS izahay. Manoritsoritra izahay fa mamorona lahatahiry /app. Manendry ny lahatahiry fampiharana ho lahatahiry miasa izahay. Amin'ity lahatahiry ity dia mametraka ny Gemfile sy Gemfile.lock ambany indrindra ilaina. Avy eo dia manorina tetikasa izay mametraka ity sary miankina ity. Tondroinay fa ho vonona hihaino amin'ny seranana ivelany 3000 ny kaontenera. Ny baiko farany dia ny baiko izay manomboka mivantana ny fampiharanay. Raha manatanteraka ny baikon'ny projet run isika, dia hiezaka ny hampandeha sy hampandeha ilay baiko voatondro ny fampiharana.

Ny dingana fampandrosoana sy fitsapana miaraka amin'i Docker sy Gitlab CI

Ity dia ohatra kely indrindra amin'ny docker-compose file. Amin'ity tranga ity, asehontsika fa misy fifandraisana eo amin'ny kaontenera roa. Izany dia mivantana amin'ny serivisy database sy serivisy tranonkala. Ny fampiharana an-tranonkalantsika amin'ny ankamaroan'ny tranga dia mitaky karazana angon-drakitra ho toy ny backend amin'ny fitahirizana angona. Koa satria mampiasa MySQL isika, dia miaraka amin'ny MySQL ny ohatra - saingy tsy misy manakana antsika tsy hampiasa angon-drakitra hafa (PostgreSQL, Redis).

Raisinay ny sary MySQL 5.7.14 tsy misy fiovana avy amin'ny loharano ofisialy avy amin'ny Docker hub. Angoninay avy amin'ny lahatahiry amin'izao fotoana izao ny sary tompon'andraikitra amin'ny fampiharana tranonkala. Nandritra ny fandefasana voalohany dia nanangona sary ho antsika izy. Avy eo dia mandeha ny baiko izay tanterahanay eto. Raha miverina isika dia ho hitantsika fa ny baiko fandefasana dia nofaritana tamin'ny Puma. Puma dia serivisy voasoratra amin'ny Ruby. Amin'ny tranga faharoa dia manapaka. Ity baiko ity dia mety ho tsy misy dikany arakaraka ny filantsika na ny asantsika.

Manoritsoritra ihany koa izahay fa mila mandefa ny seranan-tsambo amin'ny milina fampiantranoana mpamorona avy amin'ny seranan-tsambo 3000 ka hatramin'ny 3000 izahay. Izany dia atao mandeha ho azy amin'ny fampiasana iptables sy ny mekanika manokana, izay mipetaka mivantana ao amin'ny Docker.

Ny mpamorona dia afaka miditra amin'ny adiresy IP misy, ohatra, 127.0.0.1 eo an-toerana na ivelany IP an'ny milina.

Ny andalana farany dia milaza fa miankina amin'ny container db ny container web. Rehefa miantso ny kaontenera web izahay mba hanomboka, ny docker-compose dia hanomboka ny angon-drakitra ho antsika aloha. Efa eo am-piandohan'ny angon-drakitra (raha ny marina, aorian'ny fandefasana ny kaontenera! Tsy miantoka ny fahavononan'ny angon-drakitra izany) dia hanomboka ny fampiharanay, ny backend.

Izany dia ahafahantsika misoroka ny hadisoana rehefa tsy mitsangana ny angon-drakitra ary mamela antsika mitahiry loharanon-karena rehefa manakana ny fitoeran'ny angon-drakitra, ka manafaka loharano ho an'ny tetikasa hafa.

Ny dingana fampandrosoana sy fitsapana miaraka amin'i Docker sy Gitlab CI

Inona no omen'ny fampiasana dockerization database amin'ny tetikasa iray? Noraketinay ny kinova MySQL ho an'ny mpamorona rehetra. Izany dia ahafahanao misoroka ny lesoka sasany mety hitranga rehefa misaraka ny dikan-teny, rehefa miova ny firafitry ny fehezanteny, ny fikirakirana, ary ny firafitry ny default. Izany dia ahafahanao mamaritra anarana mpampiantrano mahazatra ho an'ny angon-drakitra, fidirana, tenimiafina. Miala amin'ny zoo misy anarana sy fifandirana amin'ny rakitra config efa nisy taloha izahay.

Manana fahafahana mampiasa config tsara indrindra ho an'ny tontolo fampandrosoana isika, izay tsy mitovy amin'ny default. Ny MySQL dia namboarina ho an'ny milina malemy ary ambany dia ambany ny fahombiazany.

Ny dingana fampandrosoana sy fitsapana miaraka amin'i Docker sy Gitlab CI

Docker dia mamela anao hampiasa ny mpandika teny Python, Ruby, NodeJS, PHP amin'ny dikan-teny tianao. Esorinay ny filàna mampiasa karazana mpitantana dikan-teny. Teo aloha dia nisy fonosana rpm nampiasaina ho an'i Ruby, izay namela anao hanova ny dikan-teny arakaraka ny tetikasa. Noho ny container Docker dia ahafahanao mamindra ny kaody sy ny famoahana azy miaraka amin'ny fiankinan-doha. Tsy manana olana amin'ny fahazoana ny dikan'ny mpandika teny sy ny code izahay. Mba hanavaozana ny dikan-teny dia mila ampidininao ny kaontenera taloha ary atsangano ny kaontenera vaovao. Raha misy zavatra tsy mety dia azontsika ampidinina ny kaontenera vaovao, atsangano ny kaontenera taloha.

Aorian'ny fananganana ny sary dia hitovy ny kaontenera ao amin'ny Fampandrosoana sy ny Famokarana. Marina indrindra izany ho an'ny fametrahana lehibe.

Ny dingana fampandrosoana sy fitsapana miaraka amin'i Docker sy Gitlab CI Amin'ny Frontend dia mampiasa JavaScipt sy NodeJS izahay.

Ankehitriny dia manana ny tetikasanay farany amin'ny ReacJS izahay. Navoakan'ny mpamorona ny zava-drehetra tao anaty kaontenera ary novolavolaina tamin'ny fampiasana hot-reload.

Manaraka, ny asa fanangonana JavaScipt dia natomboka ary ny kaody voaangona statika dia alefa amin'ny alàlan'ny nginx, mitahiry loharano.

Ny dingana fampandrosoana sy fitsapana miaraka amin'i Docker sy Gitlab CI

Eto aho dia nanome sarin'ny tetikasanay farany.

Inona no olana novahanao? Nila nanangana rafitra iray hifandraisan'ny fitaovana finday izahay. Mahazo angona izy ireo. Ny iray amin'ireo azo atao dia ny mandefa fampandrenesana fanosehana amin'ity fitaovana ity.

Inona no nataontsika tamin'izany?

Nozarainay ireto singa manaraka ireto ny fampiharana: ampahany admin ao amin'ny JS, backend izay miasa amin'ny alàlan'ny interface REST eo ambanin'ny Ruby on Rails. Backend dia mifandray amin'ny angon-drakitra. Ny vokatra azo dia omena ny mpanjifa. Ny tontolon'ny admin dia mifandray amin'ny backend sy ny angon-drakitra amin'ny alàlan'ny interface REST.

Nila nandefa fampandrenesana Push ihany koa izahay. Talohan'izay, nanana tetikasa izahay izay nampiharana mekanika izay tompon'andraikitra amin'ny fandefasana fampandrenesana amin'ny sehatra finday.

Namolavola ity drafitra manaraka ity izahay: ny mpandraharaha avy amin'ny navigateur dia mifandray amin'ny tontolon'ny admin, ny panel admin dia mifandray amin'ny backend, ny asa dia ny mandefa fampandrenesana Push.

Ny fampandrenesana push dia mifandray amin'ny singa hafa izay ampiharina ao amin'ny NodeJS.

Natsangana ny filaharana ary alefa araka ny fomba fiasany ny fampandrenesana.

Ny angon-drakitra roa no voasintona eto. Amin'izao fotoana izao, mampiasa Docker, mampiasa angon-drakitra tsy miankina 2 izay tsy mifandray amin'ny tsirairay. Ho fanampin'ny hoe manana tambajotra virtoaly mahazatra izy ireo, ary ny angon-drakitra ara-batana dia voatahiry ao amin'ny lahatahiry samihafa amin'ny milina mpamorona.

Ny dingana fampandrosoana sy fitsapana miaraka amin'i Docker sy Gitlab CI

Mitovy ihany fa amin'ny isa. Zava-dehibe eto ny fampiasana indray ny kaody.

Raha teo aloha isika dia niresaka momba ny fampiasana kaody amin'ny endrika tranomboky, dia amin'ity ohatra ity ny serivisy, izay mamaly ny fampandrenesana Push, dia ampiasaina indray ho toy ny mpizara feno. Manome API izany. Ary mifandray amin'izany ny fivoarantsika vaovao.

Tamin'izany fotoana izany dia nampiasa ny version 4 an'ny NodeJS izahay. Ankehitriny (amin'ny taona 2017 - fanamarihan'ny mpanonta) amin'ny fivoarantsika farany dia mampiasa ny version 7 an'ny NodeJS izahay. Tsy misy olana amin'ny singa vaovao mba hampidirana dikan-teny vaovao amin'ny tranomboky.

Raha ilaina dia azonao atao ny mamerina sy manangana ny dikan-teny NodeJS amin'ny serivisy fampandrenesana Push.

Ary raha afaka mitazona ny fampifanarahana amin'ny API isika, dia azo atao ny manolo izany amin'ny tetikasa hafa izay nampiasaina teo aloha.

Ny dingana fampandrosoana sy fitsapana miaraka amin'i Docker sy Gitlab CI

Inona no ilainao ampiana Docker? Manampy Dockerfile ao amin'ny tahiryy izahay, izay mamaritra ny fiankinan-doha ilaina. Amin'ity ohatra ity dia mizara lojika ny singa. Ity no kitapo kely indrindra ho an'ny mpamorona backend.

Rehefa mamorona tetikasa vaovao dia mamorona Dockerfile izahay ary mamaritra ny ecosystem ilaina (Python, Ruby, NodeJS). Ao amin'ny docker-compose, dia mamaritra ny fiankinan-doha ilaina - ny angon-drakitra. Manoritsoritra izahay fa mila angon-drakitra misy dikan-teny toy izany sy izany, mba hitahiry angona etsy sy eroa.

Mampiasa fitoerana fahatelo misaraka miaraka amin'ny nginx izahay mba hanompoana votoaty static. Azo atao ny mampakatra sary. Ny backend dia mametraka azy ireo ao anaty boky efa voaomana mialoha, izay apetraka ao anaty fitoeran-javatra misy nginx, izay manome data static.

Mba hitehirizana ny konfigurasi nginx sy mysql dia nampiana lahatahiry Docker izay itahirizanay ny configs ilaina. Rehefa manao clone git amin'ny fitahirizana ao amin'ny milinany ny developer iray dia efa manana tetikasa vonona amin'ny fampandrosoana eo an-toerana izy. Tsy misy fanontaniana momba ny seranan-tsambo na ny toe-javatra hampiharina.

Ny dingana fampandrosoana sy fitsapana miaraka amin'i Docker sy Gitlab CI

Manaraka izany dia manana singa maromaro izahay: admin, info-API, fampandrenesana manosika.

Mba hanombohana izany rehetra izany dia namorona tahiry iray hafa antsoina hoe dockerized-app. Mampiasa tahiry maromaro ho an'ny singa tsirairay izahay amin'izao fotoana izao. Tsy mitovy amin'ny lojika fotsiny izy ireo - ao amin'ny GitLab dia toy ny lahatahiry, fa amin'ny masinin'ny mpamorona dia toa lahatahiry ho an'ny tetikasa manokana. Ambaratonga iray etsy ambany dia ireo singa hatambatra.

Ny dingana fampandrosoana sy fitsapana miaraka amin'i Docker sy Gitlab CI

Ity dia ohatra iray amin'ny votoatin'ny dockerized-app. Mametraka lahatahiry Docker eto ihany koa izahay, izay hamenoanay ny fanamafisana ilaina amin'ny fifandraisan'ny singa rehetra. Misy README.md izay mamaritra fohifohy ny fomba hanombohana ny tetikasa.

Eto izahay dia nampihatra rakitra docker-compose roa. Izany dia atao mba hahafahana manomboka miandalana. Rehefa miasa miaraka amin'ny kernel ny developer iray dia tsy mila fampandrenesana Push izy, avoakany fotsiny ny docker-compose rakitra ary, araka izany, dia voavonjy ny loharanon-karena.

Raha ilaina ny fampidirana amin'ny fampandrenesana Push, dia atomboka ny docker-compose.yaml sy ny docker-compose-push.yaml.

Koa satria ao anaty lahatahiry ny docker-compose.yaml sy docker-compose-push.yaml, dia misy tambajotra virtoaly tokana noforonina ho azy.

Ny dingana fampandrosoana sy fitsapana miaraka amin'i Docker sy Gitlab CI

Famaritana ny singa. Ity dia rakitra mandroso kokoa izay tompon'andraikitra amin'ny fanangonana singa. Inona no mahavariana eto? Eto isika dia mampiditra ny singa balancer.

Ity dia sary Docker efa vita izay mihazakazaka nginx ary fampiharana iray mihaino ny socket Docker. Dynamic, rehefa mihodina sy maty ny kaontenera, dia averina ny config nginx. Zarainay ny fitantanana ireo singa mampiasa ny anaran-tsehatra fahatelo.

Ho an'ny tontolo fampandrosoana dia mampiasa ny sehatra .dev - api.informer.dev. Ny fampiharana misy sehatra .dev dia hita ao amin'ny milina eo an-toerana an'ny mpamorona.

Avy eo dia afindra any amin'ny tetikasa tsirairay ny configs ary miaraka ny tetikasa rehetra.

Ny dingana fampandrosoana sy fitsapana miaraka amin'i Docker sy Gitlab CI

Raha asehontsika amin'ny sary an-tsary izany, dia hita fa ny mpanjifa dia ny navigateur na karazana fitaovana izay anaovanay fangatahana amin'ny balancer.

Ny mpifandanja no mamaritra izay fitoeran-javatra tokony hidirana mifototra amin'ny anaran-tsehatra.

Mety ho nginx izany, izay manome JS amin'ny tontonana admin. Izany dia azo atao amin'ny nginx, izay manome ny API, na ny rakitra static, izay omen'ny nginx amin'ny endrika fampidinana sary.

Ny kisary dia mampiseho fa ny kaontenera dia mifandray amin'ny tambajotra virtoaly ary miafina ao ambadiky ny proxy.

Ao amin'ny milina mpamorona dia azonao atao ny miditra amin'ny kaontenera mahafantatra ny IP, saingy amin'ny ankapobeny dia tsy mampiasa izany izahay. Saika tsy ilaina ny fifandraisana mivantana.

Ny dingana fampandrosoana sy fitsapana miaraka amin'i Docker sy Gitlab CI

Inona no ohatra tokony hojereko hanakanana ny fangatahako? Raha ny hevitro, ohatra tsara dia ny sary docker ofisialin'ny MySQL.

Tena sarotra. Misy dikan-teny maro. Saingy ny fiasany dia ahafahanao mameno ny filana maro izay mety hipoitra amin'ny dingan'ny fampandrosoana bebe kokoa. Raha maka fotoana ianao ary azonao ny fomba ifandraisan'izany rehetra izany, dia heveriko fa tsy hanana olana amin'ny fampiharana azy ianao.

Hub.docker.com matetika dia misy rohy mankany amin'ny github.com, izay misy ny angona manta omena mivantana izay ahafahanao manamboatra sary ho anao.

Ao anatin'ity tahiry ity dia misy script docker-endpoint.sh, izay tompon'andraikitra amin'ny fanombohana voalohany sy ny fanodinana bebe kokoa ny fandefasana fampiharana.

Amin'ity ohatra ity ihany koa dia misy ny mety hisian'ny fanamafisana amin'ny alàlan'ny variable environment. Amin'ny famaritana ny fari-piainan'ny tontolo iainana rehefa mihazakazaka kaontenera tokana na amin'ny alàlan'ny docker-compose, dia afaka milaza isika fa mila mametraka tenimiafina foana ho an'ny docker ho an'ny faka ao amin'ny MySQL na izay tiantsika.

Misy safidy hamorona tenimiafina kisendrasendra. Milaza izahay fa mila mpampiasa, mila mametraka tenimiafina ho an'ny mpampiasa, ary mila mamorona tahiry.

Ao amin'ny tetikasanay dia nampiray kely ny Dockerfile izahay, izay tompon'andraikitra amin'ny fanombohana. Teo izahay dia nanitsy izany tamin'ny filanay mba hanitarana fotsiny ny zon'ny mpampiasa izay ampiasain'ny fampiharana. Izany dia nahafahana namorona angon-drakitra fotsiny avy amin'ny console fampiharana amin'ny ho avy. Ny rindranasa Ruby dia manana baiko hamoronana, hanovana ary hamafa ny angona.

Ny dingana fampandrosoana sy fitsapana miaraka amin'i Docker sy Gitlab CI

Ity dia ohatra iray amin'ny endriky ny dikan-teny manokana amin'ny MySQL ao amin'ny github.com. Azonao atao ny manokatra ny Dockerfile ary jereo ny fandehan'ny fametrahana ao.

docker-endpoint.sh script tompon'andraikitra amin'ny teboka fidirana. Mandritra ny fanombohana voalohany dia ilaina ny hetsika fanomanana sasany ary ampidirina ao amin'ny script fanombohana ireo hetsika rehetra ireo.

Ny dingana fampandrosoana sy fitsapana miaraka amin'i Docker sy Gitlab CI

Andao hiroso amin’ny fizarana faharoa.

Nifindra tany amin'ny gitlab izahay hitahiry kaody loharano. Ity dia rafitra matanjaka izay manana interface tsara hita maso.

Iray amin'ireo singa Gitlab ny Gitlab CI. Izy io dia ahafahanao mamaritra andiana baiko izay hampiasaina amin'ny fandaminana rafitra fanaterana kaody na fanaovana fitiliana mandeha ho azy.

Tatitra momba ny Gitlab CI 2 https://goo.gl/uohKjI — ny tatitra avy amin'ny klioba Ruby Russia dia tena feno antsipirihany ary mety hahaliana anao.

Ny dingana fampandrosoana sy fitsapana miaraka amin'i Docker sy Gitlab CI

Ankehitriny dia hojerentsika izay takiana amin'ny fampahavitrihana ny Gitlab CI. Mba hanombohana ny Gitlab CI dia mila mametraka ny rakitra .gitlab-ci.yml ao amin'ny fototry ny tetikasa.

Eto izahay dia mamaritra fa te hanao filaharan'ny fanjakana toy ny fitsapana, fametrahana.

Manatanteraka script izay miantso mivantana ny fananganana docker-compose amin'ny fampiharanay izahay. Ity dia ohatra iray amin'ny backend fotsiny.

Manaraka izany dia milaza izahay fa ilaina ny mampandeha ny fifindra-monina mba hanovana ny angon-drakitra sy hanaovana fitsapana.

Raha vita tsara ny scripts ary tsy mamerina fehezan-dalàna diso, dia mandroso amin'ny dingana faharoa amin'ny fametrahana ny rafitra.

Ny dingana fametrahana dia ampiharina amin'izao fotoana izao ho an'ny staging. Tsy nandamina fanombohana tsy misy fiatoana izahay.

Mamono an-keriny ny kaontenera rehetra izahay, ary avy eo dia atsangano indray ny kaontenera rehetra, nangonina tamin'ny dingana voalohany nandritra ny fitsapana.

Andao hataontsika ny fifindra-monina angon-drakitra nosoratan'ny mpamorona ho an'ny tontolo miovaova ankehitriny.

Misy fanamarihana fa tokony hampiharina amin'ny sampana master ihany izany.

Tsy mandeha rehefa manova sampana hafa.

Azo atao ny mandamina ny fandefasana eny amin'ny sampana.

Ny dingana fampandrosoana sy fitsapana miaraka amin'i Docker sy Gitlab CI

Mba handaminana izany bebe kokoa dia mila mametraka Gitlab Runner isika.

Ity fitaovana ity dia voasoratra amin'ny teny Golang. Izy io dia rakitra tokana toy ny mahazatra amin'ny tontolon'ny Golang, izay tsy mitaky fiankinan-doha.

Amin'ny fanombohana dia misoratra anarana Gitlab Runner izahay.

Mahazo ny lakile ao amin'ny interface Internet Gitlab izahay.

Avy eo dia miantso ny baiko fanombohana amin'ny baiko baiko izahay.

Fametrahana Gitlab Runner amin'ny fomba fifanakalozan-kevitra (Shell, Docker, VirtualBox, SSH)

Ny kaody ao amin'ny Gitlab Runner dia hotanterahina amin'ny commit rehetra miankina amin'ny toerana .gitlab-ci.yml.

Ny dingana fampandrosoana sy fitsapana miaraka amin'i Docker sy Gitlab CI

Ahoana ny fahitana azy ao amin'ny Gitlab amin'ny interface interface. Aorian'ny fampifandraisana ny GItlab CI dia manana saina izahay izay mampiseho ny toetry ny fananganana amin'izao fotoana izao.

Hitantsika fa 4 minitra lasa izay dia nisy commit natao izay nandalo ny fitsapana rehetra ary tsy niteraka olana.

Ny dingana fampandrosoana sy fitsapana miaraka amin'i Docker sy Gitlab CI

Azontsika jerena amin'ny antsipiriany bebe kokoa ny fananganana. Hitantsika eto fa fanjakana roa no lasa. Sata fitsapana sy sata fametrahana amin'ny sehatra.

Raha manindry fananganana manokana isika, dia hisy ny fampiononana ny baiko natomboka tamin'ny dingana araka ny .gitlab-ci.yml.

Ny dingana fampandrosoana sy fitsapana miaraka amin'i Docker sy Gitlab CI

Toy izao ny tantaran'ny vokatray. Hitantsika fa nisy ny andrana nahomby. Rehefa atolotra ny andrana dia tsy miroso amin'ny dingana manaraka ary tsy havaozina ny code de staging.

Ny dingana fampandrosoana sy fitsapana miaraka amin'i Docker sy Gitlab CI

Inona no olana novahantsika teo amin'ny sehatra rehefa nampihatra docker? Ny rafitra misy anay dia misy singa ary ny sasany amin'ireo singa nohavaozina ao amin'ny tahiry ihany no ilainay, fa tsy ny rafitra manontolo.

Mba hanaovana izany, dia tsy maintsy nanasaraka ny zava-drehetra ho samy hafa laha-tahiry.

Rehefa avy nanao izany izahay dia nanana olana tamin'ny hoe ny Docker-compose dia mamorona sehatra tambajotra ho an'ny lahatahiry tsirairay ary tsy mahita ny singa amin'ny mpifanolobodirindrina aminy.

Mba hivezivezena dia namorona ny tambajotra amin'ny Docker izahay. Ao amin'ny Docker-compose dia nosoratana fa tokony hampiasa tambajotra toy izany ianao amin'ity tetikasa ity.

Noho izany, ny singa tsirairay izay manomboka amin'ity harato ity dia mahita singa ao amin'ny faritra hafa amin'ny rafitra.

Ny olana manaraka dia ny fizarazarana ny fandaharana amin'ny tetikasa maromaro.

Satria ho tsara tarehy sy akaiky araka izay azo atao amin'ny famokarana izany rehetra izany, dia tsara ny mampiasa port 80 na 443, izay ampiasaina na aiza na aiza ao amin'ny WEB.

Ny dingana fampandrosoana sy fitsapana miaraka amin'i Docker sy Gitlab CI

Ahoana no namaha izany? Nanendry Gitlab Runner iray izahay ho an'ny tetikasa lehibe rehetra.

Gitlab dia ahafahanao manangana Mpihazakazaka Gitlab maromaro nozaraina, izay handray ny asa rehetra amin'ny filaharana mikorontana ary hampandeha azy ireo.

Mba hisorohana ny olana ao an-trano dia noferanay ho iray amin'ny Gitlab Runner ny vondron'ny tetikasanay, izay miatrika ny boky tsy misy olana.

Nafindranay ny nginx-proxy ho amin'ny script fanombohana misaraka ary nanoratra ny grids ny tetikasa rehetra ao anatiny.

Ny tetikasanay dia manana grid iray, ary ny balancer dia manana grids maromaro mifototra amin'ny anaran'ny tetikasa. Afaka manao proxy bebe kokoa amin'ny anaran'ny sehatra izy io.

Ny fangatahanay dia avy amin'ny sehatra ao amin'ny seranan-tsambo 80 ary voavaha amin'ny vondrona kaontenera izay manompo an'io sehatra io.

Ny dingana fampandrosoana sy fitsapana miaraka amin'i Docker sy Gitlab CI

Inona koa no olana hafa nitranga? Izany no ataon'ny kaontenera rehetra ho root amin'ny alàlan'ny default. Io no fototry ny fotony tsy mitovy amin'ny rafitra.

Na izany aza, raha miditra ao amin'ny kaontenera ianao dia ho fakany ary ny rakitra noforoninay amin'ity fitoeran-javatra ity dia mahazo zo fototra.

Raha nisy developer niditra tao amin'ny kaontenera ary nanao baiko sasany izay niteraka rakitra, dia nandao ilay kaontenera, dia ao amin'ny lahatahiry miasa izy dia manana rakitra izay tsy azony.

Ahoana no fomba hamahana izany? Azonao atao ny manampy mpampiasa izay ho ao amin'ny fitoeran-javatra.

Inona no olana nitranga rehefa nampidirinay ny mpampiasa?

Rehefa mamorona mpampiasa dia matetika tsy mifanentana ny ID vondrona (UID) sy ny ID mpampiasa (GID).

Mba hamahana ity olana ity ao amin'ny container dia mampiasa mpampiasa manana ID 1000 izahay.

Amin'ity tranga ity dia nifanindry tamin'ny hoe saika ny developer rehetra no mampiasa Ubuntu OS. Ary ao amin'ny Ubuntu OS ny mpampiasa voalohany dia manana ID 1000.

Ny dingana fampandrosoana sy fitsapana miaraka amin'i Docker sy Gitlab CI

Manana drafitra ve isika?

Avereno vakiana ny antontan-taratasy Docker. Mivoatra mavitrika ny tetikasa, miova ny antontan-taratasy. Ny angon-drakitra azo roa na telo volana lasa izay dia miha-lany tsikelikely.

Ny sasany amin'ireo olana novahantsika dia mety efa voavaha tamin'ny fomba mahazatra.

Tena te hiroso aho ary hifindra mivantana amin'ny orkestra.

Ohatra iray ny mekanika naorina Docker antsoina hoe Docker Swarm, izay mivoaka avy ao anaty boaty. Te-hanomboka zavatra amin'ny famokarana mifototra amin'ny teknolojia Docker Swarm aho.

Ny fametahana kaontenera dia mahatonga ny fiasana amin'ny logs tsy mety. Ankehitriny dia mitoka-monina ny hazo. Miparitaka ao anaty kaontenera izy ireo. Ny iray amin'ireo asa dia ny fidirana mora amin'ny logs amin'ny alàlan'ny interface interface.

Ny dingana fampandrosoana sy fitsapana miaraka amin'i Docker sy Gitlab CI

Source: www.habr.com

Add a comment