Mmepe na usoro nnwale na Docker na Gitlab CI

M na-atụ aro ka ị gụọ transcript nke akụkọ Alexander Sigachev sitere na Inventos "Usoro mmepe na ule na Docker + Gitlab CI"

Ndị na-amalite ịmalite mmepe na usoro nnwale dabere na Docker + Gitlab CI na-ajụkarị ajụjụ ndị bụ isi. Ebee ka ịmalite? Kedu ka esi hazie? Kedu ka esi nwalee?

Akụkọ a dị mma n'ihi na ọ na-ekwu n'ụzọ ahaziri ahazi banyere mmepe na usoro nyocha site na iji Docker na Gitlab CI. Akụkọ n'onwe ya sitere na 2017. Echere m na site na akụkọ a ị nwere ike nweta isi ihe, usoro, echiche, na ahụmịhe nke ojiji.

Onye na-eche, biko n'okpuru pusi.

Aha m bụ Alexander Sigachev. M na-arụ ọrụ maka Inventos. Aga m agwa gị gbasara ahụmịhe m na-eji Docker yana otu anyị si eji nwayọ na-emejuputa ya na ọrụ na ụlọ ọrụ.

Isiokwu nke akụkọ a: Usoro mmepe site na iji Docker na Gitlab CI.

Mmepe na usoro nnwale na Docker na Gitlab CI

Nke a bụ okwu nke abụọ m gbasara Docker. N'oge akụkọ mbụ, anyị na-eji Docker naanị na Development na igwe nrụpụta. Ọnụọgụ ndị ọrụ jiri Docker bụ ihe dịka mmadụ 2-3. Nke nta nke nta, enwetara ahụmahụ na anyị gara n'ihu ntakịrị. Njikọ na anyị mbụ akụkọ.

Kedu ihe ga-adị na akụkọ a? Anyị ga-ekekọrịta ahụmịhe anyị gbasara rakes anyị nakọtara, nsogbu ndị anyị doziri. Ọ bụghị ebe niile mara mma, mana o nyere anyị ohere ịga n'ihu.

Ebumnuche anyị: dockerize ihe niile anyị nwetara aka.

Mmepe na usoro nnwale na Docker na Gitlab CI

Olee nsogbu anyị na-edozi?

Mgbe ụlọ ọrụ nwere ọtụtụ ìgwè, onye mmemme bụ ihe onwunwe nkekọrịta. Enwere usoro mgbe ewepụrụ onye mmemme n'otu ọrụ wee nye ọrụ ọzọ ruo oge ụfọdụ.

Ka onye mmemme wee ghọta ngwa ngwa, ọ kwesịrị ibudata koodu isi mmalite nke ọrụ ahụ wee malite ngwa ngwa ngwa ngwa o kwere mee, nke ga-enye ya ohere ịga n'ihu na-edozi nsogbu nke ọrụ a.

Ọtụtụ mgbe, ọ bụrụ na ịmalite site na ọkọ, enwere obere akwụkwọ na ọrụ ahụ. Naanị ndị agadi nwere ozi gbasara otu esi edozi ya. Ndị ọrụ na-edozi ebe ọrụ ha n'onwe ha n'ime otu ụbọchị ma ọ bụ abụọ. Iji mee nke a ọsọ ọsọ, anyị na-eji Docker.

Ihe na-esote bụ nhazi nke ntọala na Development. Na ahụmịhe m, ndị mmepe na-ebute ụzọ mgbe niile. N'okwu nke ise ọ bụla, a na-abanye na ngalaba omenala, dịka ọmụmaatụ vasya.dev. Ọ nọ ọdụ n'akụkụ m bụ onye agbata obi m Petya, onye ngalaba ya bụ petya.dev. Ha na-eji aha ngalaba a mepụta weebụsaịtị ma ọ bụ ụfọdụ akụkụ sistemụ.

Mgbe usoro ahụ na-etolite na aha ngalaba ndị a na-amalite ịbanye na nhazi ahụ, esemokwu na gburugburu mmepe mmepe na-ebilite ma degharịa ụzọ saịtị ahụ.

Otu ihe ahụ na-eme na ntọala nchekwa data. Ụfọdụ ndị anaghị echegbu onwe ha na nchekwa ma na-arụ ọrụ na paswọọdụ mgbọrọgwụ efu. N'oge nrụnye, MySQL jụrụ mmadụ maka paswọọdụ na paswọọdụ wee bụrụ 123. Ọ na-emekarị na nhazi nchekwa data na-agbanwe mgbe niile dabere na ntinye nke onye mmepụta. Onye gbaziri, onye emezighị nhazi ahụ. Enwere aghụghọ mgbe anyị tinyere ụfọdụ nhazi ule n'ime .gitignore na onye nrụpụta ọ bụla kwesịrị ịwụnye nchekwa data. Nke a mere ka usoro mmalite ahụ sie ike karị. Tinyere ihe ndị ọzọ, ịkwesịrị icheta banyere nchekwa data. A ghaghị ibido nchekwa data, a ga-edebanye aha paswọọdụ, onye ọrụ ga-edebanye aha, a ghaghị ịmepụta akara, na ihe ndị ọzọ.

Nsogbu ọzọ bụ ụdị ọba akwụkwọ dị iche iche. Ọ na-emekarị na onye mmepụta na-arụ ọrụ dị iche iche. Enwere ọrụ Legacy, nke malitere afọ ise gara aga (site na 2017 - ndetu nchịkọta akụkọ). Na mmalite anyị malitere na MySQL 5.5. Enwekwara ọrụ ọgbara ọhụrụ ebe anyị na-agbalị imejuputa ụdị MySQL ọgbara ọhụrụ, dịka ọmụmaatụ 5.7 ma ọ bụ karịa (na 2017 - ndetu nchịkọta akụkọ)

Onye ọ bụla na-arụ ọrụ na MySQL maara na ọba akwụkwọ ndị a na-ebu ndabere. Ọ bụ nnukwu nsogbu ijikọ ọdụ data abụọ ọnụ. Opekempe, ọ bụ nsogbu ijikọ ndị ahịa ochie na nchekwa data ọhụrụ. Nke a na-ebutekwa ọtụtụ nsogbu.

Nsogbu na-esote bụ mgbe onye nrụpụta na-arụ ọrụ na igwe mpaghara, ọ na-eji akụrụngwa mpaghara, faịlụ mpaghara, RAM mpaghara. Mmekọrịta niile n'oge ịmepụta ihe ngwọta maka nsogbu na-eme n'ime usoro nke eziokwu na ọ na-arụ ọrụ na otu igwe. Otu ihe atụ ga-abụ mgbe anyị nwere sava azụ azụ na Production 3, onye nrụpụta na-echekwa faịlụ na ndekọ mgbọrọgwụ wee si n'ebe ahụ nginx na-ewe faịlụ iji zaghachi arịrịọ ahụ. Mgbe koodu dị otú ahụ na-abanye na mmepụta, ọ na-apụta na faịlụ ahụ dị na otu n'ime sava 3.

Ntuziaka nke microservices na-etolite ugbu a. Mgbe anyị kewara nnukwu ngwa anyị n'ime ụfọdụ obere ihe ndị na-emekọrịta ihe. Nke a na-enye gị ohere ịhọrọ teknụzụ maka nchịkọta ọrụ akọwapụtara. Nke a na-enyekwa gị ohere kewaa ọrụ na mpaghara ọrụ n'etiti ndị mmepe.

Onye nrụpụta n'ihu, na-etolite na JS, enweghị mmetụta ọ bụla na azụ azụ. Onye nrụpụta azụ azụ, n'aka nke ya, na-etolite, n'ọnọdụ anyị, Ruby on Rails na anaghị egbochi Frondend. A na-eme mmekọrịta site na iji API.

Dị ka ego, iji Docker anyị nwere ike ịmegharị akụrụngwa na Staging. Ọrụ ọ bụla, n'ihi nkọwa ya, chọrọ ntọala ụfọdụ. N'anụ ahụ, ọ dị mkpa ịnyefe ma ọ bụ ihe nkesa mebere ma hazie ha iche, ma ọ bụ kewaa ụdị mgbanwe gburugburu ebe obibi na ọrụ nwere ike imetụta ibe ha, dabere na ụdị nke ọba akwụkwọ.

Mmepe na usoro nnwale na Docker na Gitlab CI

Ngwa. Kedu ihe anyị na-eji?

  • Docker n'onwe ya. Dockerfile na-akọwa ndabere nke otu ngwa.
  • Docker-Compose bụ ngwugwu na-achịkọta ọtụtụ ngwa Docker anyị.
  • Anyị na-eji GitLab chekwaa koodu isi mmalite.
  • Anyị na-eji GitLab-CI maka ntinye usoro.

Mmepe na usoro nnwale na Docker na Gitlab CI

Akụkọ ahụ nwere akụkụ abụọ.

Akụkụ nke mbụ ga-agwa gị otu esi agba Docker na igwe ndị nrụpụta.

Akụkụ nke abụọ ga-ekwu maka otu anyị na GitLab ga-esi na-emekọrịta ihe, otu anyị si agba ule yana otu anyị si agbapụta na Staging.

Mmepe na usoro nnwale na Docker na Gitlab CI

Docker bụ teknụzụ na-enye ohere (iji usoro nkwupụta) kọwaa ihe ndị dị mkpa. Nke a bụ ihe atụ Dockerfile. N'ebe a, anyị na-ekwupụta na anyị na-eketa site na onyonyo Docker gọọmentị nke Ruby:2.3.0. Ọ nwere ụdị Ruby 2.3 arụnyere. Anyị rụnyere ọba akwụkwọ mgbakọ dị mkpa yana NodeJS. Anyị na-akọwa na anyị na-eke ndekọ /app. Anyị na-ekenye ngwa ndekọ aha dị ka ndekọ na-arụ ọrụ. N'ime ndekọ a, anyị na-etinye Gemfile kacha nta achọrọ na Gemfile.lock. Mgbe ahụ, anyị na-arụ ọrụ na-arụnye ihe oyiyi ndabere a. Anyị na-egosi na akpa ahụ ga-adị njikere ige ntị na ọdụ ụgbọ mmiri 3000. Iwu ikpeazụ bụ iwu nke na-ebupụta ngwa anyị ozugbo. Ọ bụrụ na anyị na-eme iwu na-agba ọsọ ọrụ, ngwa ahụ ga-anwa ịgba ọsọ ma mee iwu akọwapụtara.

Mmepe na usoro nnwale na Docker na Gitlab CI

Nke a bụ ihe atụ pere mpe nke faịlụ mebere docker. N'okwu a, anyị na-egosi na enwere njikọ n'etiti akpa abụọ. Nke a na-abanye ozugbo na ọrụ nchekwa data yana ọrụ weebụ. Ngwa weebụ anyị n'ọtụtụ oge na-achọ ụdị nchekwa data dị ka ndabere maka ịchekwa data. Ebe anyị na-eji MySQL, ihe atụ dị na MySQL - ma ọ dịghị ihe na-egbochi anyị iji ụfọdụ nchekwa data ọzọ (PostgreSQL, Redis).

Anyị na-ewere ihe oyiyi MySQL 5.7.14 na-enweghị mgbanwe site na isi mmalite sitere na ọdụ Docker. Anyị na-anakọta onyonyo nke na-ahụ maka ngwa webụ anyị site na ndekọ aha ugbu a. N'oge mmalite nke mbụ, ọ na-anakọta anyị ihe oyiyi. Mgbe ahụ ọ na-agba iwu anyị na-eme ebe a. Ọ bụrụ na anyị laghachi azụ, anyị ga-ahụ na a kọwara iwu mmalite site na Puma. Puma bụ ọrụ edere na Ruby. N'okwu nke abụọ, anyị na-atụgharị. Iwu a nwere ike ịbụ nke aka ike dabere na mkpa anyị ma ọ bụ ọrụ anyị.

Anyị na-akọwakwa na anyị kwesịrị ibugharị ọdụ ụgbọ mmiri na igwe ndị nrụpụta anyị site na ọdụ ụgbọ mmiri 3000 ruo 3000. A na-eme nke a na-akpaghị aka site na iji iptables na usoro nke ya, nke etinyere ozugbo na Docker.

Onye nrụpụta nwere ike, dị ka ọ dị na mbụ, nweta adreesị IP ọ bụla dị, dịka ọmụmaatụ, 127.0.0.1 adreesị IP mpaghara ma ọ bụ mpụga nke igwe.

Ahịrị ikpeazụ na-ekwu na akpa weebụ dabere na akpa db. Mgbe anyị kpọrọ akpa weebụ ka ịmalite, docker-compose ga-ebu ụzọ wepụta anyị nchekwa data. Ugbua na mmalite nke nchekwa data (n'ezie, mgbe mmalite nke akpa! Nke a anaghị ekwe nkwa ịdị njikere nke nchekwa data) ọ ga-amalite ngwa anyị, backend anyị.

Nke a na-enye anyị ohere izere njehie mgbe nchekwa data adịghị elu ma na-enye anyị ohere ịchekwa ihe onwunwe mgbe anyị kwụsịrị akpa nchekwa data, si otú ahụ na-ewepụta ihe onwunwe maka ọrụ ndị ọzọ.

Mmepe na usoro nnwale na Docker na Gitlab CI

Kedu ihe iji nchekwa data dockerization na oru ngo na-enye anyị? Anyị na-edekọ ụdị MySQL maka ndị mmepe niile. Nke a na-enye gị ohere ịzenarị ụfọdụ njehie nwere ike ime mgbe ụdị dị iche iche, mgbe syntax, nhazi, na ntọala ndabara gbanwere. Nke a na-enye gị ohere ịkọwa aha nnabata nkịtị maka nchekwa data, nbanye, paswọọdụ. Anyị na-apụ na zoo nke aha na esemokwu dị na faịlụ config nke dị na mbụ.

Anyị nwere ohere iji nhazi kachasị mma maka gburugburu mmepe, nke ga-adị iche na nke ndabara. A na-ahazi MySQL site na ndabara maka igwe na-adịghị ike yana arụmọrụ ya na igbe dị ala.

Mmepe na usoro nnwale na Docker na Gitlab CI

Docker na-enye gị ohere iji Python, Ruby, NodeJS, onye ntụgharị PHP nke ụdị achọrọ. Anyị na-ewepụ mkpa ọ dị iji ụdị njikwa ụdị. Na mbụ, a na-eji ngwugwu rpm maka Ruby, nke nyere gị ohere ịgbanwe ụdị ahụ dabere na ọrụ ahụ. N'ihi akpa Docker, nke a na-enye gị ohere ịkwaga koodu nke ọma wee bipụta ya yana ndabere. Anyị enweghị nsogbu ịghọta ụdị nke ma onye ntụgharị okwu na koodu. Ka imelite ụdị ahụ, ịkwesịrị ịkwatu akpa ochie wee welie akpa ọhụrụ ahụ. Ọ bụrụ na ihe na-aga nke ọma, anyị nwere ike belata akpa ọhụrụ ahụ, bulie akpa ochie.

Mgbe emechara ihe oyiyi ahụ, arịa ndị dị na Development na Production ga-abụ otu. Nke a bụ eziokwu karịsịa maka nnukwu nrụnye.

Mmepe na usoro nnwale na Docker na Gitlab CI Na Frontend anyị na-eji JavaScipt na NodeJS.

Ugbu a anyị nwere ọrụ ikpeazụ anyị na ReacJS. Onye nrụpụta wepụtara ihe niile dị n'ime akpa wee mepụta site na iji mbugharị ọkụ.

Na-esote, a na-arụ ọrụ nke ikpokọta JavaScipt na-ezigara koodu a gbakọtara site na nginx, na-echekwa akụrụngwa.

Mmepe na usoro nnwale na Docker na Gitlab CI

N'ebe a, enyela m eserese nke ọrụ ọhụrụ anyị.

Kedu nsogbu ị doziri? Anyị nwere mkpa iwulite usoro nke ngwaọrụ mkpanaka na-emekọrịta ihe. Ha na-enweta data. Otu n'ime ohere bụ izipu ọkwa ntinye na ngwaọrụ a.

Gịnị ka anyị mere maka nke a?

Anyị kewara ngwa ahụ n'ime ihe ndị a: akụkụ nchịkwa na JS, azụ azụ na-arụ ọrụ site na interface REST n'okpuru Ruby on Rails. Backend na-emekọrịta ihe na nchekwa data. A na-enye nsonaazụ a na-emepụta na onye ahịa. Ogwe nchịkwa na-emekọrịta ihe na azụ azụ yana nchekwa data site na interface REST.

Anyị nwekwara mkpa izipu ọkwa Push. Tupu nke a, anyị nwere oru ngo nke etinyere usoro nke na-ahụ maka ịnye ọkwa na nyiwe mkpanaka.

Anyị emepụtala atụmatụ ndị a: onye na-arụ ọrụ site na ihe nchọgharị na-emekọrịta ihe na nchịkwa nchịkwa, onye nchịkwa na-emekọ ihe na azụ azụ, ọrụ bụ izipu ọkwa Push.

Ịma ọkwa Push na-emekọrịta ihe na mpaghara ọzọ arụnyere na NodeJS.

A na-ewu kwụ n'ahịrị na ezipụ ọkwa dịka usoro nke ha siri dị.

Edepụtara ọdụ data abụọ ebe a. Ugbu a, na-eji Docker, anyị na-eji ọdụ data 2 nọọrọ onwe ha na-ejikọghị onwe ha n'ụzọ ọ bụla. Na mgbakwunye na eziokwu na ha nwere netwọk mebere nke ọma, na data anụ ahụ na-echekwa na akwụkwọ ndekọ aha dị iche iche na igwe mmepụta ihe.

Mmepe na usoro nnwale na Docker na Gitlab CI

Otu ihe ma na ọnụọgụgụ. Ejigharị koodu dị mkpa ebe a.

Ọ bụrụ na anyị kwuru na mbụ banyere iji koodu n'ụdị ụlọ akwụkwọ, mgbe ahụ, na ihe atụ a, ọrụ anyị, nke na-anabata ọkwa Push, na-ejighachi ya dị ka ihe nkesa zuru oke. Ọ na-enye API. Na mmepe ọhụrụ anyị na-ejikọta ya.

N'oge ahụ, anyị na-eji ụdị 4 nke NodeJS. Ugbu a (na 2017 - ndetu nchịkọta akụkọ) na mmepe anyị kachasị ọhụrụ anyị na-eji ụdị 7 nke NodeJS. Enweghị nsogbu na akụrụngwa ọhụrụ iji tinye ụdị ọba akwụkwọ ọhụrụ.

Ọ bụrụ na ọ dị mkpa, ị nwere ike megharịa ma welie ụdị NodeJS nke ọrụ ngosi Push.

Ma ọ bụrụ na anyị nwere ike idowe ndakọrịta API, mgbe ahụ ọ ga-ekwe omume iji ọrụ ndị ọzọ ejiri na mbụ dochie ya.

Mmepe na usoro nnwale na Docker na Gitlab CI

Kedu ihe ịchọrọ ịgbakwunye Docker? Anyị na-agbakwunye Dockerfile na ebe nchekwa anyị, nke na-akọwa ndabere dị mkpa. N'ihe atụ a, a na-ekewa ihe ndị ahụ n'ụzọ ezi uche dị na ya. Nke a bụ ngwa kacha nta maka onye nrụpụta azụ.

Mgbe ị na-ekepụta ọrụ ọhụrụ, anyị na-emepụta Dockerfile ma kọwaa gburugburu ebe obibi achọrọ (Python, Ruby, NodeJS). Na docker-Compose, ọ na-akọwa ndabere dị mkpa - nchekwa data. Anyị na-akọwa na anyị chọrọ nchekwa data nke ụdị na ụdị dị otú ahụ, iji chekwaa data n'ebe ahụ na ebe ahụ.

Anyị na-eji akpa atọ dị iche na nginx iji nye ọdịnaya kwụ ọtọ. Ọ ga-ekwe omume bulite foto. Azụ azụ na-etinye ha na olu akwadoro, nke a na-etinyekwa n'ime akpa na nginx, nke na-enye data static.

Iji chekwaa nginx na nhazi mysql, anyị gbakwunyere nchekwa Docker nke anyị na-echekwa nhazi ndị dị mkpa. Mgbe onye nrụpụta na-eme git clone nke ebe nchekwa na igwe ya, o nweelarị ọrụ dị njikere maka mmepe mpaghara. Enweghị ajụjụ gbasara ọdụ ụgbọ mmiri ma ọ bụ ntọala ndị a ga-etinye.

Mmepe na usoro nnwale na Docker na Gitlab CI

Ọzọ anyị nwere ọtụtụ ihe: admin, info-API, push notification.

Iji malite ihe ndị a niile, anyị mepụtara ebe nchekwa ọzọ a na-akpọ dockerized-app. Ugbu a, anyị na-eji ọtụtụ ebe nchekwa maka akụrụngwa ọ bụla. Ha dị nnọọ iche n'ụzọ ezi uche dị na ya - na GitLab ọ dị ka folda, mana na igwe onye nrụpụta ọ dị ka folda maka otu ọrụ. Otu ọkwa dị n'okpuru bụ ihe ndị a ga-ejikọta.

Mmepe na usoro nnwale na Docker na Gitlab CI

Nke a bụ ọmụmaatụ nke ọdịnaya nke ngwa dockerized. Anyị na-edobe akwụkwọ ndekọ aha Docker ebe a, nke anyị na-ejuputa nhazi nke achọrọ maka mmekọrịta nke ihe niile. Enwere README.md na-akọwa nkenke ka esi malite ọrụ ahụ.

N'ebe a, anyị etinyela faịlụ abụọ nwere docker. A na-eme nke a iji nwee ike ịmalite na nkebi. Mgbe onye nrụpụta na-arụ ọrụ na kernel, ọ chọghị ọkwa Push, ọ na-ebupụta faịlụ docker-compose na, yabụ, echekwara akụrụngwa.

Ọ bụrụ na ọ dị mkpa ijikọ na ọkwa Push, mgbe ahụ docker-compose.yaml na docker-compose-push.yaml ga-amalite.

Ebe docker-compose.yaml na docker-compose-push.yaml dị na folda ahụ, a na-emepụta otu netwọk mebere na-akpaghị aka.

Mmepe na usoro nnwale na Docker na Gitlab CI

Nkọwa nke components. Nke a bụ faịlụ dị elu karịa nke na-ahụ maka ịnakọta akụrụngwa. Kedu ihe dị ịrịba ama ebe a? N'ebe a, anyị na-ewebata akụkụ nke balancer.

Nke a bụ onyonyo Docker emebere nke na-agba nginx yana ngwa na-ege ntị oghere Docker. Dị ike, ka agbanyere ma gbanyụọ akpa, a na-emegharị nginx nhazi. Anyị na-ekesa njikwa akụrụngwa site na iji aha ngalaba nke atọ.

Maka gburugburu mmepe anyị na-eji ngalaba .dev - api.informer.dev. Ngwa nwere ngalaba .dev dị na igwe mpaghara nke onye nrụpụta.

Mgbe ahụ, a na-ebufe configs na ọrụ ọ bụla na ọrụ niile na-arụkọ ọrụ ọnụ n'otu oge.

Mmepe na usoro nnwale na Docker na Gitlab CI

Ọ bụrụ na anyị egosipụta ya n'ụzọ eserese, ọ na-apụta na onye ahịa bụ ihe nchọgharị anyị ma ọ bụ ụdị ngwá ọrụ anyị na-arịọ onye na-edozi ihe.

The balancer na-ekpebi nke akpa kwesịrị ịnweta dabere na ngalaba aha.

Nke a nwere ike ịbụ nginx, nke na-enye JS na panel nchịkwa. Enwere ike ime nke a site na nginx, nke na-enye API, ma ọ bụ faịlụ static, nke nginx na-enye n'ụdị ntinye ihe oyiyi.

Eserese a na-egosi na ejikọrọ akpa ndị ahụ na netwọk mebere ma zoo n'azụ proxy.

Na igwe onye nrụpụta, ị nwere ike ịnweta akpa ahụ na-ama IP, mana n'ụkpụrụ anyị anaghị eji nke a. Ọ fọrọ nke nta ka ọ bụrụ na ọ dịghị mkpa maka kọntaktị ozugbo.

Mmepe na usoro nnwale na Docker na Gitlab CI

Kedu ihe atụ ka m ga-elele iji dockerize ngwa m? N'uche nke m, ezigbo ihe atụ bụ onyonyo docker maka MySQL.

Ọ gbagwojuru anya. Enwere ọtụtụ nsụgharị. Mana ọrụ ya na-enye gị ohere ikpuchi ọtụtụ mkpa ndị nwere ike ibilite na usoro mmepe n'ihu. Ọ bụrụ na ị wepụta oge ma ghọta otú ihe niile si emekọrịta, mgbe ahụ echere m na ị gaghị enwe nsogbu ọ bụla iji mejuputa ya n'onwe gị.

Hub.docker.com na-enwekarị njikọ github.com, ebe a na-enye data raw ozugbo nke ị nwere ike isi na ya rụọ ihe oyiyi n'onwe gị.

N'ịga n'ihu na ebe nchekwa a enwere script docker-endpoint.sh, nke na-ahụ maka mmalite mmalite na nhazi ọzọ nke mmalite ngwa.

Nakwa na ihe atụ a, enwere ike ịhazi nhazi site na iji mgbanwe gburugburu ebe obibi. Site na ịkọwapụta mgbanwe gburugburu ebe obibi mgbe ị na-agba otu akpa ma ọ bụ site na docker-compose, anyị nwere ike ịsị na anyị kwesịrị ịtọ paswọọdụ efu maka docker maka mgbọrọgwụ na MySQL ma ọ bụ ihe ọ bụla anyị chọrọ.

Enwere nhọrọ iji mepụta paswọọdụ enweghị usoro. Anyị na-ekwu na anyị chọrọ onye ọrụ, anyị kwesịrị ịtọ paswọọdụ maka onye ọrụ, na anyị kwesịrị ịmepụta nchekwa data.

N'ime ọrụ anyị, anyị ejikọtala Dockerfile ntakịrị, nke na-ahụ maka mmalite. N'ebe ahụ, anyị doziri ya ka ọ dị anyị mkpa iji gbasaa ikike onye ọrụ nke ngwa ahụ na-eji. Nke a mere ka o kwe omume ịmepụta nchekwa data site na ngwa njikwa ngwa n'ọdịnihu. Ngwa Ruby nwere iwu maka imepụta, gbanwee na ihichapụ ọdụ data.

Mmepe na usoro nnwale na Docker na Gitlab CI

Nke a bụ ọmụmaatụ nke otu ụdị MySQL dị na github.com. Ị nwere ike mepee Dockerfile wee hụ ka nrụnye na-esi eme ebe ahụ.

script docker-endpoint.sh maka ebe ntinye. N'oge mbido mbụ, a chọrọ ụfọdụ omume nkwadebe yana omume ndị a niile etinyere na edemede mmalite.

Mmepe na usoro nnwale na Docker na Gitlab CI

Ka anyị gaa n'ihu n'akụkụ nke abụọ.

Anyị gbanwere na gitlab iji chekwaa koodu isi mmalite. Nke a bụ usoro siri ike nke nwere interface anya.

Otu n'ime ihe Gitlab bụ Gitlab CI. Ọ na-enye gị ohere ịkọwa usoro iwu nke a ga-emesị jiri hazie usoro nnyefe koodu ma ọ bụ mee nnwale akpaghị aka.

Akuko na Gitlab CI 2 https://goo.gl/uohKjI - akụkọ sitere na klọb Ruby Russia zuru oke ma nwee ike ịmasị gị.

Mmepe na usoro nnwale na Docker na Gitlab CI

Ugbu a, anyị ga-eleba anya n'ihe achọrọ iji rụọ ọrụ Gitlab CI. Iji malite Gitlab CI, anyị kwesịrị itinye faịlụ .gitlab-ci.yml na mgbọrọgwụ nke ọrụ ahụ.

N'ebe a, anyị na-akọwa na anyị chọrọ ịme usoro nke steeti dịka ule, ntinye.

Anyị na-eme scripts na-akpọ kpọmkwem docker-compose build nke ngwa anyị. Nke a bụ ihe atụ nke naanị azụ azụ.

Ọzọ anyị na-ekwu na ọ dị mkpa na-agba ọsọ migrations ịgbanwe nchekwa data na-agba ọsọ ule.

Ọ bụrụ na e gburu scripts nke ọma ma ghara ịlaghachi koodu njehie, mgbe ahụ, usoro ahụ na-aga n'ihu na ọkwa nke abụọ nke ntinye.

A na-emejuputa ọkwa nke ntinye ugbu a maka nhazi. Anyị ahazighị mmalite mmalite oge adịghị ala.

Anyị na-amanye ihe niile na-ekpochapụ arịa niile, mgbe ahụ, anyị na-ebuli arịa niile ọzọ, anakọtara na ọkwa mbụ n'oge ule.

Ka anyị mee mbugharị nchekwa data nke ndị nrụpụta dere maka gburugburu ebe agbanwe agbanwe ugbu a.

Enwere ndetu na nke a kwesịrị itinye naanị na ngalaba nna ukwu.

Ọ naghị arụ ọrụ mgbe ị na-agbanwe alaka ndị ọzọ.

Ọ ga-ekwe omume ịhazi rollouts n'akụkụ alaka.

Mmepe na usoro nnwale na Docker na Gitlab CI

Iji hazie nke a n'ihu, anyị kwesịrị ịwụnye Gitlab Runner.

Edere akụrụngwa a na Golang. Ọ bụ otu faịlụ dị ka ọ na-adịkarị na ụwa Golang, nke na-adịghị achọ ihe ndabere ọ bụla.

Na mmalite anyị na-edebanye aha Gitlab Runner.

Anyị na-enweta igodo na interface weebụ Gitlab.

Mgbe ahụ, anyị na-akpọ iwu mmalite na ahịrị iwu.

Na-ahazi Gitlab Runner na ọnọdụ mkparịta ụka (Shell, Docker, VirtualBox, SSH)

Koodu dị na Gitlab Runner ga-eme ihe ọ bụla dabere na ntọala .gitlab-ci.yml.

Mmepe na usoro nnwale na Docker na Gitlab CI

Otu esi ele anya na Gitlab na interface weebụ. Mgbe anyị jikọtara GITlab CI, anyị nwere ọkọlọtọ nke na-egosi ọnọdụ ihe owuwu ahụ dị ugbu a.

Anyị na-ahụ na 4 nkeji gara aga e mere nkwa nke gafere ule niile na-akpataghị nsogbu ọ bụla.

Mmepe na usoro nnwale na Docker na Gitlab CI

Anyị nwere ike ileba anya na-ewuli elu karịa. N'ebe a, anyị na-ahụ na steeti abụọ agafeela. Ọkwa ule na ọkwa ntinye na nhazi.

Ọ bụrụ na anyị pịnye n'otu ihe owuwu a kapịrị ọnụ, a ga-enwe mmepụta njikwa nke iwu ewepụtara n'ime usoro ahụ dịka .gitlab-ci.yml si dị.

Mmepe na usoro nnwale na Docker na Gitlab CI

Nke a bụ ihe akụkọ ngwaahịa anyị dị ka. Anyị na-ahụ na enweela mbọ niile gara nke ọma. Mgbe etinyere ule ndị ahụ, ha anaghị aga n'ihu na-esote yana koodu nhazi anaghị emelite.

Mmepe na usoro nnwale na Docker na Gitlab CI

Kedu nsogbu anyị doziri na nhazi mgbe anyị mebere docker? Usoro anyị nwere ihe mejupụtara yana anyị kwesịrị ịmalitegharị naanị ụfọdụ akụrụngwa emelitere na ebe nchekwa, ọ bụghị sistemụ niile.

Iji mee nke a, anyị ga-ekewa ihe niile n'ime nchekwa dị iche iche.

Mgbe anyị mechara nke a, anyị nwere nsogbu na Docker-compose na-emepụta oghere netwọk nke ya maka folda ọ bụla ma ọ naghị ahụ akụkụ nke ndị agbata obi ya.

Iji gaa gburugburu, anyị jiri aka mepụta netwọkụ na Docker. Na Docker-depụta e dere na ị ga-eji netwọk dị otú ahụ maka ọrụ a.

Ya mere, akụkụ ọ bụla nke na-amalite na ntupu a na-ahụ ihe ndị dị na akụkụ ndị ọzọ nke usoro ahụ.

Nsogbu na-esote bụ ikewa nhazi n'etiti ọtụtụ ọrụ.

Ebe ọ bụ na ihe a niile na-ele anya mara mma na nso dị ka o kwere mee maka mmepụta, ọ dị mma iji ọdụ ụgbọ mmiri 80 ma ọ bụ 443, nke a na-eji ebe niile na WEB.

Mmepe na usoro nnwale na Docker na Gitlab CI

Kedu ka anyị siri dozie nke a? Anyị kenyere otu Gitlab Runner na nnukwu ọrụ niile.

Gitlab na-enye gị ohere ịmalite ọtụtụ ndị na-agba ọsọ Gitlab kesara, nke ga-ewere ọrụ niile n'otu n'otu n'usoro ọgba aghara wee mee ha.

Iji zere nsogbu ụlọ, anyị na-ejedebe otu ọrụ anyị na otu Gitlab Runner, nke na-anagide mpịakọta anyị n'enweghị nsogbu.

Anyị bufere nginx-proxy n'ime edemede mmalite dị iche wee dee grids nke ọrụ niile dị na ya.

Ihe oru ngo anyi nwere otu grid, na onye na-edozi ihe nwere otutu grids dabere na aha oru ngo. Ọ nwere ike proxy n'ihu site na ngalaba aha.

Arịrịọ anyị na-abịa site na ngalaba na ọdụ ụgbọ mmiri 80 ma kpebisie ike na otu arịa na-eje ozi na ngalaba a.

Mmepe na usoro nnwale na Docker na Gitlab CI

Olee nsogbu ndị ọzọ e nwere? Nke a bụ ihe akpa niile na-agba ọsọ dị ka mgbọrọgwụ na ndabara. Nke a bụ mgbọrọgwụ na-enweghị isi nke usoro ahụ.

Otú ọ dị, ọ bụrụ na ị banye na akpa ahụ, ọ ga-abụ mgbọrọgwụ na faịlụ anyị mepụtara na akpa a na-enweta ikike mgbọrọgwụ.

Ọ bụrụ na onye nrụpụta abanye n'ime akpa ahụ wee mee ụfọdụ iwu n'ebe ahụ na-emepụta faịlụ, wee hapụ akpa ahụ, mgbe ahụ na ndekọ ọrụ ya, o nwere faịlụ nke ọ na-enweghị ohere.

Olee otú a pụrụ isi dozie nke a? Ị nwere ike ịgbakwunye ndị ọrụ ga-anọ na akpa.

Kedu nsogbu bilitere mgbe anyị gbakwunyere onye ọrụ?

Mgbe ị na-eke onye ọrụ, ID otu (UID) na ID onye ọrụ (GID) anaghị adabakarị.

Iji dozie nsogbu a n'ime akpa anyị na-eji ndị ọrụ nwere ID 1000.

N'ọnọdụ anyị, nke a dabara n'eziokwu na ihe fọrọ nke nta ka ọ bụrụ ndị mmepe niile na-eji Ubuntu OS. Na Ubuntu OS onye ọrụ mbụ nwere ID 1000.

Mmepe na usoro nnwale na Docker na Gitlab CI

Anyị nwere atụmatụ?

gụgharịa akwụkwọ Docker. Ọrụ a na-arụsi ọrụ ike na-emepe emepe, akwụkwọ na-agbanwe. Data enwetara ọnwa abụọ ma ọ bụ atọ gara aga ji nwayọọ nwayọọ na-aghọ ihe ochie.

Ọ pụrụ ịbụ na e ji ụzọ ọkọlọtọ dozie ụfọdụ n'ime nsogbu ndị anyị edoziworo.

Achọrọ m ịga n'ihu ma kwaga ozugbo na orchestration.

Otu ihe atụ bụ usoro arụnyere Docker a na-akpọ Docker Swarm, nke na-apụta na igbe ahụ. Ọ ga-amasị m ịmalite ihe na mmepụta dabere na teknụzụ Docker Swarm.

Ngwunye akpa na-eme ka iji osisi rụọ ọrụ adịghị mma. Ugbu a osisi ndị ahụ dịpụrụ adịpụ. A na-agbasasị ha n'ime akpa. Otu n'ime ọrụ ndị a bụ ime ka ọ dị mfe ịnweta ndekọ site na interface weebụ.

Mmepe na usoro nnwale na Docker na Gitlab CI

isi: www.habr.com

Tinye a comment