Horumarinta iyo habka tijaabada ee Docker iyo Gitlab CI

Waxaan soo jeedinayaa inaan akhriyo qoraalka warbixinta Alexander Sigachev oo ka socda Inventos "Horumarinta iyo habka tijaabada ee Docker + Gitlab CI"

Kuwa hadda bilaabaya hirgelinta habka horumarinta iyo tijaabinta ee ku salaysan Docker + Gitlab CI waxay inta badan weydiiyaan su'aalaha aasaasiga ah. Halkee laga bilaabayaa? Sidee loo abaabulaa? Sidee loo tijaabiyaa?

Warbixintani waa wanaagsan tahay sababtoo ah waxay uga hadlaysaa hab habaysan oo ku saabsan horumarinta iyo habka tijaabada iyadoo la adeegsanayo Docker iyo Gitlab CI. Warbixinta lafteedu waa 2017. Waxaan u maleynayaa in warbixintan aad ka baran karto aasaaska, habka, fikradda, khibradda isticmaalka.

Yaa dan leh, fadlan bisadda hoosteeda.

Magacaygu waa Alexander Sigachev. Waxaan u shaqeeyaa Inventos. Waxaan kuu sheegi doonaa khibradeyda isticmaalka Docker iyo sida aan si tartiib tartiib ah ugu fulineyno mashaariicda shirkadda.

Mawduuca soo bandhigida: Habka horumarinta iyadoo la adeegsanayo Docker iyo Gitlab CI.

Horumarinta iyo habka tijaabada ee Docker iyo Gitlab CI

Tani waa hadalkeyga labaad ee ku saabsan Docker. Waqtigii warbixinta ugu horeysay, waxaan kaliya u isticmaalnay Docker ee Horumarinta mishiinnada horumariyaha. Tirada shaqaalaha ee isticmaalay Docker waxay ahaayeen ilaa 2-3 qof. Si tartiib tartiib ah, waayo-aragnimo ayaa la helay oo waxaan u dhaqaaqnay wax yar. Isku xidhkayaga warbixintii ugu horeysay.

Maxaa ku jiri doona warbixintan? Waxaan la wadaagi doonaa waayo-aragnimadayada ku saabsan wixii aan ururinnay, dhibaatooyinka aan xallinay. Meel kasta ma qurux badnayn, laakiin waa la oggolaaday in la sii wado.

Hal-ku-dheggeenu waa: ku xidho wax kasta oo aan gacmaheenna ku heli karno.

Horumarinta iyo habka tijaabada ee Docker iyo Gitlab CI

Dhibaatooyinkee ayaan xalineynaa?

Marka ay jiraan dhowr kooxood oo shirkad ah, barnaamij-sameeyaha waa kheyraad la wadaago. Waxaa jira marxalado marka barnaamijka laga soo saaro hal mashruuc oo muddo la siiyo mashruuc kale.

Si uu barnaamij-qaadaha si degdeg ah u fahmo, waxa uu u baahan yahay in uu soo dejiyo koodhka mashruuca oo uu sida ugu dhaqsaha badan u daah-furo deegaanka, taas oo u oggolaanaysa in uu u sii dhaqaaqo xallinta mashaakilaadka mashruucan.

Caadi ahaan, haddii aad ka bilowdo xoqan, markaa waxaa jira dukumeenti yar oo mashruuca ah. Macluumaadka ku saabsan sida loo dejiyo waxaa heli kara oo keliya dadka waayeelka ah. Shaqaaluhu waxay iskood u dhistaan ​​goobtooda shaqo hal ama laba maalmood gudahood. Si arrintan loo dedejiyo, waxaan isticmaalnay Docker.

Sababta xigta waa jaangooyooyinka goobaha Horumarinta. Waayo-aragnimadayda, horumariyayaashu had iyo jeer waxay qaataan hindisaha. Kiis kasta oo shanaad ah, domain gaar ah ayaa la geliyaa, tusaale ahaan, vasya.dev. Waxa ag fadhiya deriskiisa Petya, kaas oo domainkiisu yahay petya.dev. Waxay horumariyaan degel ama qayb ka mid ah nidaamka iyagoo isticmaalaya magaca domain.

Marka nidaamku koraayo oo magacyada domain-ku bilaabaan inay galaan qaabaynta, deegaanka Horumarka ayaa soo ifbaxa oo dariiqa goobta ayaa dib loo qoraa.

Isla sidaas oo kale ayaa ku dhacda dejinta xogta. Qof kuma dhibsado amniga oo wuxuu ku shaqeeyaa furaha sirta ah ee madhan. Marxaladda rakibaadda, MySQL waxay waydiisay qof sirta ah oo erayga sirta ah wuxuu noqday 123. Badanaa waxay dhacdaa in qaabaynta xogta xogta ay si joogto ah isu beddesho iyadoo ku xiran ballan-qaadka horumariyaha. Qof ayaa saxay, qofna ma saxin habaynta. Waxaa jiray xeelado markii aan soo saarnay nooc ka mid ah habaynta tijaabada .gitignore iyo horumariye kastaa wuxuu ku qasbanaaday inuu rakibo kaydka xogta. Tani waxay adkeyd in la bilaabo. Waa lagama maarmaan, iyo waxyaabo kale, in la xasuusto xogta macluumaadka. Keydka xogta waa in la bilaabaa, furaha sirta ah la geliyo, isticmaale waa in la diiwangeliyaa, miis la sameeyaa, iwm.

Dhibaato kale ayaa ah noocyada kala duwan ee maktabadaha. Inta badan waxay dhacdaa in horumariye uu la shaqeeyo mashaariic kala duwan. Waxa jira mashruuc Legacy ah oo bilaabmay shan sano ka hor (laga bilaabo 2017 - ed. note). Waqtigii la bilaabay, waxaan ku bilownay MySQL 5.5. Waxa kale oo jira mashaariic casri ah oo aan isku dayno inaan hirgelino noocyo badan oo casri ah oo MySQL ah, tusaale ahaan, 5.7 ama ka weyn (2017 - ed. note)

Qof kasta oo la shaqeeya MySQL wuu ogyahay in maktabadahani ay la yimaadaan ku-tiirsanaanta iyaga. Way dhib badan tahay in la wada wado 2 saldhig. Ugu yaraan, macaamiishii hore ayaa dhib ku ah inay ku xidhmaan xogta cusub. Tani waxay iyaduna abuurtaa dhibaatooyin dhowr ah.

Dhibaatada soo socota ayaa ah marka horumariye uu ka shaqeeyo mashiinka maxaliga ah, wuxuu isticmaalaa kheyraadka maxaliga ah, faylasha maxaliga ah, RAM maxaliga ah. Dhammaan isdhexgalka wakhtiga horumarinta xalinta dhibaatooyinka waxaa lagu fuliyaa qaab dhismeedka xaqiiqda ah in uu ku shaqeeyo hal mashiin. Tusaale ahaan waa marka aan haysano server-yada dhabarka ee Soo saarista 3, oo horumariyahu wuxuu kaydiyaa faylasha tusaha xididka halkaasna nginx waxay qaadataa faylasha si ay uga jawaabto codsiga. Marka koodhka noocaan ah uu soo galo Production, waxay soo baxaysaa in faylka uu ku jiro mid ka mid ah 3-da server.

Jihada adeeg-yaraha ayaa hadda soo koraya. Marka aynu u kala qaybinno codsiyadeena waaweyn qaybo yaryar oo is dhex gala. Tani waxay kuu ogolaaneysaa inaad doorato tignoolajiyada tiro hawlo gaar ah. Waxa kale oo ay kuu ogolaanaysaa inaad la wadaagto shaqada iyo mas'uuliyadaha ka dhexeeya horumarinta.

Horumariyaha Frondend, ee ku soo koraya JS, kuma laha wax saameyn ah oo ku saabsan Backend. Horumariyaha dhabarka dambe, isna, wuxuu horumariyaa, kiiskeena, Ruby on Rails mana farageliyo Frondend. Isdhexgalka waxaa lagu sameeyaa API-ga.

Gunno ahaan, iyadoo la kaashanayo Docker, waxaan awoodnay inaan dib u warshadeynno agabka Diyaarinta. Mashruuc kasta, sababo gaar ah awgeed, wuxuu u baahnaa goobo gaar ah. Jir ahaan, waxay ahayd lagama maarmaan in la qoondeeyo mid ka mid ah server-yada casriga ah oo si gaar ah loo habeeyo, ama in la wadaago nooc ka mid ah jawiga doorsoomayaasha iyo mashaariicda, iyadoo ku xiran nooca maktabadaha, ay saameyn ku yeelan karaan midba midka kale.

Horumarinta iyo habka tijaabada ee Docker iyo Gitlab CI

Qalab. Maxaan isticmaalnaa?

  • Docker laftiisa. Dockerfile wuxuu qeexayaa ku tiirsanaanta hal codsi.
  • Docker-compose waa xidhmo isu keenaya dhawr ka mid ah codsiyadayada Docker.
  • Waxaan u isticmaalnaa GitLab si aan u kaydino koodhka isha.
  • Waxaan u isticmaalnaa GitLab-CI is dhexgalka nidaamka.

Horumarinta iyo habka tijaabada ee Docker iyo Gitlab CI

Warbixintu waxay ka kooban tahay laba qaybood.

Qaybta hore waxay ka hadli doontaa sida Docker loogu maamulay mishiinnada horumariyayaal.

Qaybta labaad waxay ka hadli doontaa sida loola macaamilo GitLab, sida aan u wadno imtixaannada iyo sida aan ugu gudubno Staging.

Horumarinta iyo habka tijaabada ee Docker iyo Gitlab CI

Docker waa tignoolajiyad u ogolaata (adoo adeegsanaysa hab ku dhawaaqid) si loo qeexo qaybaha lagama maarmaanka ah. Tani waa tusaale Dockerfile. Halkan waxaan ku cadeyneynaa inaan ka dhaxaleyno Ruby-ga rasmiga ah: 2.3.0 Docker image. Waxay ka kooban tahay Ruby version 2.3 rakibay. Waxaan rakibnay maktabadaha dhismaha ee loo baahan yahay iyo NodeJS. Waxaan ku sifeyneynaa inaan abuurno hagaha /app. U deji tusaha abka sidii hagaha shaqada. Hagahan waxa aanu dhignay Gemfile ugu yar ee loo baahan yahay iyo Gemfile.lock. Waxaan markaas dhisaynaa mashaariicda rakibaya sawirka ku-tiirsanaanta. Waxaan ku tusineynaa in konteenarku diyaar u noqon doono in lagu dhegeysto dekedda dibadda 3000. Amarka ugu dambeeya waa amarka si toos ah u bilaabaya codsigayaga. Haddii aan fulino amarka bilowga mashruuca, codsigu wuxuu isku dayi doonaa inuu socodsiiyo oo uu maamulo amarka la cayimay.

Horumarinta iyo habka tijaabada ee Docker iyo Gitlab CI

Tani waa tusaalaha ugu yar ee fayl-ka kooban. Xaaladdan, waxaan ku tusineynaa in uu jiro xiriir ka dhexeeya laba weel. Tani waxay si toos ah u gelisaa adeegga kaydka xogta iyo adeegga shabakadda. Codsiyadayada shabakadu inta badan waxay u baahan yihiin nooc ka mid ah kaydka xogta si ay u noqdaan dhabarka kaydinta xogta. Maadaama aan isticmaaleyno MySQL, tusaale ahaan MySQL-laakin ma jiraan wax naga diidaya isticmaalka xog kale (PostgreSQL, Redis).

Waxaan ka soo qaadanaynaa isha rasmiga ah ee Docker xuddunta sawirka MySQL 5.7.14 iyada oo aan isbeddelin. Waxaan ka soo aruurineynaa sawirka ka mas'uulka ah codsigayaga webka hagaha hadda. Waxay noo ururinaysaa sawir inta lagu guda jiro furitaanka koowaad. Kadibna waxay ku socotaa amarka aan halkan ka fulineyno. Haddii aan dib u soo laabano, waxaan arki doonaa in amarka furitaanka ee Puma la qeexay. Puma waa adeeg ku qoran Ruby. Xaaladda labaad, waanu ka gudubnay. Amarkani wuxuu noqon karaa mid aan kala sooc lahayn oo ku xidhan baahidayada ama hawlahayaga.

Waxaan sidoo kale qeexaynaa inaan u baahanahay inaan u gudbino deked mashiinka martigeliyaha horumariyaha laga bilaabo 3000 ilaa 3000 ee dekeda konteenarka. Tan waxaa si toos ah loo sameeyaa iyadoo la adeegsanayo iptables iyo farsamadeeda, kaas oo si toos ah ugu dhex jira Docker.

Horumariyuhu wuxuu sidoo kale, sidii hore, geli karaa ciwaan kasta oo IP ah, tusaale ahaan, 127.0.0.1 waa ciwaanka IP-ga gudaha ama dibadda ee mishiinka.

Sadarka ugu dambeeya ayaa sheegaya in weelka webka uu ku xiran yahay weelka db. Marka aan wacno bilowga weelka webka, docker-compose ayaa marka hore noo bilaabi doona xogta xogta. Horeba bilawga xogta (xaqiiqda, ka dib markii la bilaabay weelka! Tani ma dammaanad qaadayso diyaargarowga kaydka) ayaa bilaabi doona codsiga, dhabarkayaga.

Tani waxay ka fogaanaysaa khaladaadka marka aan database-ka la soo qaadin oo ay kaydiso kheyraadka marka aan joojino weelka kaydka, sidaas awgeedna u fasaxaya kheyraadka mashaariicda kale.

Horumarinta iyo habka tijaabada ee Docker iyo Gitlab CI

Maxaa na siinaya isticmaalka kaydinta xogta xogta ee mashruuca. Waxaan hagaajineynaa nooca MySQL ee dhammaan horumariyeyaasha. Tani waxay ka fogaanaysaa khaladaadka qaarkood ee dhici kara marka noocyadu kala duwanaadaan, marka syntax, qaabaynta, dejinta caadiga ah ay isbeddelaan. Tani waxay kuu ogolaaneysaa inaad sheegto magaca martida loo yahay ee database-ka, galitaanka, erayga sirta ah. Waxaan ka fogaanaynaa beerta magacyada iyo khilaafyada ku jira faylalka habaynta ee aan hore u haysanay.

Waxaan haysanaa fursad aan ku isticmaalno habayn aad u wanaagsan oo loogu talagalay deegaanka Horumarinta, taas oo ka duwanaan doonta kuwa caadiga ah. MySQL waxaa loogu habeeyey mashiinnada daciifka ah si caadi ah iyo waxqabadkeeda ka baxsan sanduuqa waa mid aad u liita.

Horumarinta iyo habka tijaabada ee Docker iyo Gitlab CI

Docker wuxuu kuu ogolaanayaa inaad isticmaasho Python, Ruby, NodeJS, tarjumaanka PHP ee nooca la rabo. Waxaan ka takhalusnaa baahida loo qabo isticmaalka nooc ka mid ah maamulaha version. Markii hore, Ruby waxay isticmaashay xirmo rpm ah oo kuu oggolaanaya inaad beddesho nooca iyadoo ku xiran mashruuca. Waxa kale oo ay ogolanaysaa, iyada oo ay ugu wacan tahay weelka Docker, in uu si habsami leh ugu haajiro koodka oo uu u daabaco iyada oo ay weheliso ku-tiirsanaanta. Dhib nagama qabno fahamka nooca turjubaanka iyo koodka labadaba. Si aad u cusboonaysiiso nooca, hoos u dhig weelka hore oo kor u qaad weelka cusub. Haddii ay wax qaldamaan, waxaan hoos u dhigi karnaa weelka cusub, kor u qaad weelka hore.

Kadib dhisidda sawirka, weelasha ku jira Horumarinta iyo Wax-soo-saarka labadaba waxay ahaan doonaan isku mid. Tani waxay si gaar ah run ugu tahay rakibaadda waaweyn.

Horumarinta iyo habka tijaabada ee Docker iyo Gitlab CI Dhanka Frontend waxaan isticmaalnaa JavaScipt iyo NodeJS.

Hadda waxaan haynaa mashruucii ugu dambeeyay ee ReacJS. Horumariyuhu waxa uu ku orday wax kasta oo ku jiray weelka oo waxa uu horumariyay isaga oo isticmaalaya dib-u-cusbooneysii.

Marka xigta, hawsha isu-ururinta JavaScipt ayaa la bilaabay oo koodhka lagu soo ururiyay statics waxaa lagu bixiyaa agabka kaydinta nginx.

Horumarinta iyo habka tijaabada ee Docker iyo Gitlab CI

Halkan waxaan ku siiyay nidaamka mashruuceeni ugu dambeeyay.

Waa maxay hawlaha la xaliyay? Waxaan u baahneyn inaan dhisno nidaam ay aaladaha mobiladu la falgalaan. Waxay helayaan xog. Mid ka mid ah suurtogalnimada ayaa ah in loo diro ogeysiisyada riixitaanka qalabkan.

Maxaan u samaynay tan?

Waxaan u qaybinay arjiga qaybaha sida: qaybta maamulka ee JS, dhabarka, kaas oo ka shaqeeya interface REST ee hoos yimaada Ruby on Rails. Dhabarka dambe wuxuu la falgalaa xogta xogta. Natiijada ka soo baxda waxaa la siiyaa macmiilka. Gudiga maamulka waxa ay la falgalaan dhabarka dambe iyo xogta xogta iyada oo loo sii marayo interface REST.

Waxaan sidoo kale u baahneyn inaan dirno ogeysiisyada riixitaanka. Intaa ka hor, waxaan haynay mashruuc hirgeliyay hab ka mas'uul ah gaarsiinta ogeysiisyada aaladaha mobilada.

Waxaanu samaynay nidaamkan soo socda: hawlwadeen ka socda browserka wuxuu la falgalaa maamulka maamulka, guddiga maamulka wuxuu la falgalaa dhabarka dambe, hawshu waa inay soo dirto ogeysiisyada riix.

Ogeysiisyada riixa waxay la falgalaan qayb kale oo laga hirgeliyay NodeJS.

Safafka ayaa la dhisay ka dibna ogeysiisyada ayaa loo diraa iyadoo loo eegayo habka ay u shaqeeyaan.

Laba xog ururin ayaa halkan lagu sawiray. Waqtigan xaadirka ah, iyadoo la kaashanayo Docker, waxaan isticmaalnaa 2 xog ururin madax-bannaan oo aan sinaba ula xiriirin midba midka kale. Intaa waxaa dheer, waxay leeyihiin shabakad toosan oo caadi ah, iyo xogta jireed waxaa lagu kaydiyaa hagayaal kala duwan oo ku yaal mashiinka horumariyaha.

Horumarinta iyo habka tijaabada ee Docker iyo Gitlab CI

Isku mid laakiin tiro ahaan. Tani waa meesha dib-u-isticmaalka koodku uu muhiim yahay.

Haddii hore aan uga hadalnay dib u isticmaalka koodka qaabka maktabadaha, markaa tusaalahan, adeegeena ka jawaabaya ogeysiisyada riixida ayaa dib loo isticmaalaa sidii server dhamaystiran. Waxay bixisaa API ah. Horumarkeena cusubna mar hore ayuu la falgalay.

Waqtigaas, waxaan isticmaalnay nooca 4 ee NodeJS. Hadda (2017 - ed. note) horumarradii ugu dambeeyay waxaan isticmaalnaa nooca 7 ee NodeJS. Wax dhib ah kuma laha qaybaha cusub ee ku lug leh noocyada cusub ee maktabadaha.

Haddii loo baahdo, waad dib-u-cusboonaysiin kartaa oo kor u qaadi kartaa nooca NodeJS ee adeegga ogeysiiska riix.

Oo haddii aan sii wadi karno iswaafajinta API, markaa waxay suurtogal noqon doontaa in lagu beddelo mashaariic kale oo hore loo isticmaalay.

Horumarinta iyo habka tijaabada ee Docker iyo Gitlab CI

Maxaad u baahan tahay inaad ku darto Docker? Waxaan ku darnaa Dockerfile kaydkayaga, kaas oo qeexaya ku tiirsanaanta lagama maarmaanka ah. Tusaalahan, qaybaha si macquul ah ayaa loo jajabiyay. Tani waa habka ugu yar ee horumariyaha dhabarka.

Marka la abuurayo mashruuc cusub, waxaan abuurnaa Dockerfile, sharax nidaamka deegaanka ee la rabo (Python, Ruby, NodeJS). In docker-compose, waxay qeexaysaa ku-tiirsanaanta lagama maarmaanka ah - database-ka. Waxaan ku tilmaameynaa inaan u baahanahay keydka xogta noocaan ah iyo nooca noocaas ah, ku kaydi xogta halkaas iyo halkaas.

Waxaan isticmaalnaa weel saddexaad oo gooni ah oo leh nginx si aan ugu adeegno taagan. Waa suurtagal in sawiro la soo geliyo. Dhabarka dambe wuxuu ku dhejiyaa mugga horay loo sii diyaariyay, kaas oo sidoo kale lagu dhejiyay weelka nginx, kaas oo dib u soo celinaya static.

Si loo kaydiyo nginx, qaabeynta mysql, waxaan ku darnay galka Docker kaas oo aan ku kaydinayno qaabeynta lagama maarmaanka ah. Marka horumariye uu sameeyo git clone ee kaydka mishiinkiisa, waxa uu hore u haystay mashruuc u diyaarsan horumarinta deegaanka. Wax su'aal ah kama taagna dekedee ama dejimaha la dabaqi karo.

Horumarinta iyo habka tijaabada ee Docker iyo Gitlab CI

Marka xigta, waxaan haynaa dhowr qaybood: admin, inform-API, ogeysiisyada riix.

Si aan u bilowno waxaas oo dhan, waxaan abuurnay kayd kale, kaas oo aan ugu yeernay dockerized-app. Waqtigan xaadirka ah waxaan isticmaalnaa dhowr kayd ka hor qayb kasta. Si macquul ah ayay u kala duwan yihiin - GitLab waxay u egtahay gal, laakiin mashiinka horumariyaha, gal mashruuc gaar ah. Hal heer hoos ayaa ah qaybaha la isku dari doono.

Horumarinta iyo habka tijaabada ee Docker iyo Gitlab CI

Tani waa tusaale kaliya waxa ku jira abka dockerized-ka ah. Waxaan sidoo kale keennay hagaha Docker halkan, kaas oo aan ku buuxinayno qaabeynta looga baahan yahay isdhexgalka dhammaan qaybaha. Waxaa jira README.md oo si kooban u qeexaya sida loo socodsiiyo mashruuca.

Halkan waxaan ku codsanay laba faylal oo ka kooban docker. Tan waxaa loo sameeyaa si loo awoodo in lagu ordo talaabooyinka. Marka horumariye la shaqeeyo xudunta u ah, uma baahna ogeysiisyada riixitaanka, wuxuu si fudud u bilaabayaa faylka docker-compose, sidaas awgeed, kheyraadka waa la keydiyaa.

Haddii ay jirto baahi loo qabo in lagu dhex daro ogeysiisyada riixitaanka, ka dib docker-compose.yaml iyo docker-compose-push.yaml ayaa la bilaabay.

Mar haddii docker-compose.yaml iyo docker-compose-push.yaml ay ku jiraan galka, hal shabakad oo farsamaysan ayaa si toos ah loo abuurayaa.

Horumarinta iyo habka tijaabada ee Docker iyo Gitlab CI

Sharaxaada qaybaha. Kani waa fayl aad u horumarsan oo masuul ka ah ururinta qaybaha. Maxaa cajiib ah halkan? Halkan waxaan ku soo bandhigaynaa qaybta dheelitirka.

Kani waa sawir Docker oo diyaarsan oo ku shaqeeya nginx iyo arji dhegaysanaya godka Docker. Firfircooni, sida weelasha la shido ama la damiyo, waxay dib u soo saartaa habaynta nginx. Waxaan u qaybinay maaraynta qaybaha magacyada domain heerka saddexaad.

Deegaanka Horumarinta, waxaan u isticmaalnaa .dev domain - api.informer.dev. Codsiyada leh domain .dev ayaa laga heli karaa mashiinka maxaliga ah ee horumariyaha.

Dheeraad ah, qaabeynta ayaa lagu wareejinayaa mashruuc kasta oo dhammaan mashaariicda ayaa la wada bilaabay isku mar.

Horumarinta iyo habka tijaabada ee Docker iyo Gitlab CI

Sawir ahaan, waxaa soo baxday in macmiilku yahay browserkayaga ama qalabyada aan ku codsaneyno xisaabiyaha.

Isku-dheellitirka magaca domain ayaa go'aamiya weelka lala xiriirinayo.

Waxay noqon kartaa nginx, kaas oo siinaya maamulaha JS. Tani waxay noqon kartaa nginx, kaas oo siinaya API, ama faylasha static, kuwaas oo la siiyo nginx qaab muuqaal ah.

Jaantusku waxa uu tusinayaa in weelasha ay ku xidhan yihiin shabakad dalwad ah oo ay ku qarsoon yihiin wakiil ka dambeeya.

Mashiinka horumariyaha, waxaad geli kartaa weelka adigoo garanaya IP-ga, laakiin mabda'a ahaan tan ma isticmaalno. Dhab ahaantii ma jirto baahi loo qabo helitaan toos ah.

Horumarinta iyo habka tijaabada ee Docker iyo Gitlab CI

Tusaalahan aad eegi karto si aad codsigaaga u joojiso? Fikradayda, tusaale wanaagsan ayaa ah sawirka rasmiga ah ee docker ee MySQL.

Waa arrin adag. Waxaa jira noocyo badan. Laakin shaqadeeda ayaa kuu ogolaanaysa inaad daboosho baahiyo badan oo laga yaabo inay ka dhashaan habka horumarka dheeraadka ah. Haddii aad waqti ku bixiso oo aad ogaato sida ay u wada falgalaan, markaa waxaan u maleynayaa inaadan wax dhibaato ah kala kulmi doonin is-fulinta.

Hub.docker.com badanaa waxay ka kooban tahay xiriiriyeyaasha github.com, oo ka kooban xog ceeriin ah oo si toos ah aad uga dhisi karto sawirka naftaada.

Intaa waxaa dheer oo ku jira kaydkan waxaa jira qoraal docker-endpoint.sh, kaas oo mas'uul ka ah bilaabista bilowga iyo habaynta dheeraadka ah ee bilaabista arjiga.

Sidoo kale tusaalahan, waxaa jira karti lagu habeynayo iyadoo la adeegsanayo doorsoomayaasha deegaanka. Marka la qeexo doorsoomayaasha deegaanka marka la wado hal weel ama docker-compose, waxaan dhihi karnaa waxaan u baahanahay inaan dhigno furaha sirta ah ee madhan docker si uu u xidido MySQL ama wax kasta oo aan rabno.

Waxaa jira ikhtiyaar lagu abuurayo erayga sirta ah ee aan tooska ahayn. Waxaan leenahay waxaan u baahanahay isticmaale, waxaan u baahanahay inaan u sameyno furaha sirta ah ee isticmaalaha, waxaan u baahanahay inaan sameyno database.

Mashaariicdayada, waxaan wax yar ku midaynay Dockerfile, kaas oo mas'uul ka ah bilaabista. Halkaa waxa aanu ku saxnay si aanu ugu habboonayno baahiyahayaga si aanu uga dhigno kordhinta xuquuqda isticmaale ee codsigu isticmaalo. Tani waxay noo ogolaatay inaan si fudud uga abuurno xogta konsole-ka codsiga hadhow. Codsiyada Ruby waxay leeyihiin amar ku saabsan abuurista, wax ka beddelka, iyo tirtiridda xogta macluumaadka.

Horumarinta iyo habka tijaabada ee Docker iyo Gitlab CI

Tani waa tusaale waxa nooc gaar ah oo MySQL ah u eg yahay github.com. Waxaad furi kartaa Dockerfile oo arag sida rakibiddu uga socoto halkaas.

docker-endpoint.sh waa qoraalka mas'uul ka ah barta laga soo galo. Inta lagu jiro bilawga bilawga ah, talaabooyinka diyaarinta qaarkood ayaa loo baahan yahay, waxaana dhammaan tallaabooyinkan lagu qaaday kaliya qoraalka bilowga.

Horumarinta iyo habka tijaabada ee Docker iyo Gitlab CI

Aynu u gudubno qaybta labaad.

Si loo kaydiyo koodka isha, waxaan u wareegnay gitlab. Kani waa nidaam awood leh oo awood leh oo leh muuqaal muuqaal ah.

Mid ka mid ah qaybaha Gitlab waa Gitlab CI. Waxay kuu ogolaanaysaa inaad sharaxdo amarrada isku xigxiga ee hadhow loo isticmaali doono in lagu habeeyo nidaamka gudbinta koodka ama la sameeyo tijaabo toos ah.

Gitlab CI 2 hadal https://goo.gl/uohKjI - Warbixinta kooxda Ruby Russia - aad u faahfaahsan oo laga yaabo inay ku xiisaynayso.

Horumarinta iyo habka tijaabada ee Docker iyo Gitlab CI

Hadda waxaan eegi doonaa waxa loo baahan yahay si loo dhaqaajiyo Gitlab CI. Si loo bilaabo Gitlab CI, waxaan kaliya u baahanahay inaan galno .gitlab-ci.yml faylka xididka mashruuca.

Halkan waxaan ku qeexaynaa in aan rabno in aan fulino isku xigxiga dawlado sida imtixaan, geyn.

Waxaan fulinaa qoraallo si toos ah ugu wacaya docker-compose si loo dhiso codsigeena. Tani waa uun tusaale dhabarka dambe.

Marka xigta, waxaan leenahay waa lagama maarmaan in la sameeyo socdaalka si loo beddelo database-ka oo loo sameeyo imtixaanno.

Haddii qoraallada si sax ah loo fuliyo oo aysan soo celin koodka qaladka, markaa nidaamku wuxuu sii socdaa marxaladda labaad ee dejinta.

Heerka geynta ayaa hadda loo hirgeliyay diyaarinta. Maanu abaabulin dib-u-bilaabid eber ah.

Waxaan si qasab ah u daminnaa dhammaan weelasha, ka dibna waxaan kor u qaadeynaa dhammaan weelasha mar kale, oo la soo ururiyey marxaladda koowaad ee baaritaanka.

Waxaan u soconaa doorsoomiyaha deegaanka hadda guuritaanka xogta ee ay qoreen horumariyayaashu.

Waxaa jira qoraal ah in tani ay khuseyso oo kaliya laanta sayidkiisa.

Marka la beddelo laamaha kale lama fuliyo.

Waa suurtagal in la abaabulo wareegyada laamo.

Horumarinta iyo habka tijaabada ee Docker iyo Gitlab CI

Si tan loo sii habeeyo, waxaan u baahanahay inaan ku rakibno Gitlab Runner.

Adeeggan waxa uu ku qoran yahay Golang. Waa hal fayl, sida ku badan dunida Golang, oo aan u baahnayn wax ku-tiirsanaan ah.

Bilawga, waxaanu diwaangelinaa Gitlab Runner.

Waxaan ka helnaa furaha isku xirka shabakadda Gitlab.

Kadibna waxaan ugu yeernaa amarka bilowga ee khadka taliska.

U deji Gitlab Runner si isdhexgal leh (Shell, Docker, VirtualBox, SSH)

Koodhka Gitlab Runner ayaa fulin doona ballan kasta, iyadoo ku xidhan goobta .gitlab-ci.yml.

Horumarinta iyo habka tijaabada ee Docker iyo Gitlab CI

Sida ay muuqaal ahaan ugu muuqato Gitlab ee interface-ka shabakadda. Ka dib markii aan ku xirnay GITlab CI, waxaan haynaa calan muujinaya xaaladda dhismaha hadda.

Waxaan aragnaa in ballan la sameeyay 4 daqiiqo ka hor, taas oo ku gudubtay dhammaan imtixaanadii oo aan wax dhibaato ah keenin.

Horumarinta iyo habka tijaabada ee Docker iyo Gitlab CI

Waxaan si dhow u eegi karnaa dhismayaasha. Halkan waxaan ku aragnaa in laba gobol ay hore u dhaafeen. Heerka tijaabada iyo heerka geynta ee diyaarinta.

Haddii aan gujino dhismo gaar ah, markaa waxaa jiri doona soo-saarka konsole ee amarrada lagu socodsiiyay habka iyadoo loo eegayo .gitlab-ci.yml.

Horumarinta iyo habka tijaabada ee Docker iyo Gitlab CI

Tani waa sida taariikhda badeecadeenu u egtahay. Waxaan aragnaa in ay jireen isku dayo lagu guuleystay. Marka imtixaanada la gudbiyo, uma sii soconayso tallaabada xigta oo koodka diyaarinta lama cusboonaysiin.

Horumarinta iyo habka tijaabada ee Docker iyo Gitlab CI

Waa maxay hawlaha aan ku xallinay diyaarinta markii aan hirgelinay docker? Nidaamkeenu wuxuu ka kooban yahay qaybo waxaanan u baahanahay inaan dib u bilowno, kaliya qayb ka mid ah qaybaha lagu cusboonaysiiyay kaydka, ee maaha nidaamka oo dhan.

Si tan loo sameeyo, waxay ahayd inaan wax walba ku burburino faylal kala duwan.

Kadib markii aanu tan samaynay, waxa dhibaato naga haysatay xaqiiqda ah in Docker-compose u abuurto meel shabakadeed oo u gaar ah aabbe kasta oo aanu arag qaybaha deriska.

Si aan u wareegno, waxaan ku abuurnay shabakadda Docker gacanta. Waxa lagu qoray Docker-compose in aad u isticmaasho shabakadan mashruucan.

Markaa, qayb kasta oo ka bilaabma mesh-kan waxay arkaysaa qaybaha qaybaha kale ee nidaamka.

Arrinka soo socdaa waa kala qaybinta diyaarinta mashruucyo badan.

Maadaama si ay waxaas oo dhami u muuqdaan kuwo qurux badan oo ugu dhow wax soo saarka, waxaa fiican in la isticmaalo dekedda 80 ama 443, taas oo loo isticmaalo meel kasta oo WEB ah.

Horumarinta iyo habka tijaabada ee Docker iyo Gitlab CI

Sideen ku xalinay? Waxaan u xilsaarnay hal Gitlab Runner dhammaan mashaariicda waaweyn.

Gitlab wuxuu kuu ogolaanayaa inaad maamusho dhowr orodyahan oo Gitlab ah oo la qaybiyay, kuwaas oo si fudud u qaadi doona dhammaan hawlaha markooda qaab fowdo ah oo u socodsiiya.

Si aanaan u haysan guri, waxaan ku xaddidnay kooxda mashaariicdayada hal Gitlab Runner, kaas oo la tacaalaya iyada oo aan dhibaato lahayn muggayada.

Waxaan u rarnay nginx-proxy script-up gooni ah waxaanan ku darnay dhammaan mashaariicda ku dhex jira.

Mashruucayagu waxa uu leeyahay hal shabakad, miisaan-ilaaliyehu waxa uu leeyahay dhawr shabakadood oo magacyo mashruuc ah. Waxay u sii wakiilan kartaa magacyada domainka.

Codsiyadayadu waxay ka yimaadaan domainka dekedda 80 waxaana lagu xalliyaa koox weel oo u adeega domainkan.

Horumarinta iyo habka tijaabada ee Docker iyo Gitlab CI

Maxaa kale oo dhibaatooyin ah ayaa jiray? Tani waa waxa dhammaan weelasha ay u shaqeeyaan sidii xidid ahaan. Tani waa xidid aan u dhigmin xididka martida loo yahay nidaamka.

Si kastaba ha noqotee, haddii aad gasho weelka, wuxuu noqon doonaa xidid, faylka aan ku abuurno weelkaan wuxuu helayaa xuquuq xidid.

Haddii horumariyuhu uu galo weelka oo uu halkaas ku sameeyo amarro soo saaraya faylal, ka dibna ka tagay weelka, ka dibna waxa uu ku hayaa fayl tusaha shaqada ee uu heli karo.

Sidee loo xalin karaa? Waxaad ku dari kartaa isticmaalayaasha kuwaas oo ku jiri doona weelka.

Dhibaatooyinkee ayaa kacay markii aan ku darnay isticmaalaha?

Marka la abuurayo isticmaale, inta badan ma hayno aqoonsi kooxeed isku mid ah (UID) iyo aqoonsiga isticmaalaha (GID).

Si loo xaliyo dhibaatadan ku jirta weelka, waxaan isticmaalnaa isticmaalayaasha leh aqoonsiga 1000.

Xaaladeena, tani waxay ku soo beegantay xaqiiqda ah in ku dhawaad ​​dhammaan horumariyayaashu ay isticmaalaan Ubuntu OS. Iyo Ubuntu, isticmaaleha ugu horreeya wuxuu haystaa aqoonsiga 1000.

Horumarinta iyo habka tijaabada ee Docker iyo Gitlab CI

Qorshe ma wadnaa?

Akhri dukumeentiga Docker Mashruucu si firfircoon ayuu u horumarayaa, dukumeentiyadu waa isbedelayaan. Xogta la helay laba ama saddex bilood ka hor ayaa durba si tartiib tartiib ah u noqonaysa mid duugowday.

Qaar ka mid ah dhibaatooyinka aan xallinay waxaa suurtogal ah in mar hore lagu xalliyo hab caadi ah.

Markaa waxaan rabaa in aan horayba u sii socdo si aan toos ugu aado kooxda fanka.

Mid ka mid ah tusaale ahaan waa Docker's farsamada ku dhex dhisan ee loo yaqaan Docker Swarm, kaas oo ka soo baxa sanduuqa. Waxaan rabaa inaan wax ku socodsiiyo wax soo saarka ku saleysan tignoolajiyada Docker Swarm.

Weelasha dhaldhalaalka ah ayaa ka dhigaya mid aan habboonayn in lagu shaqeeyo geedo. Hadda logu waa go'doon. Waxay ku kala firirsan yihiin weelasha. Mid ka mid ah hawlaha waa in si ku habboon loo galo logyada iyada oo loo marayo interface interface.

Horumarinta iyo habka tijaabada ee Docker iyo Gitlab CI

Source: www.habr.com

Add a comment