Mmepe ngwa na mbugharị Blue-Green, dabere na usoro iri na abụọ-Factor App nwere ọmụmaatụ na php na docker.

Mmepe ngwa na mbugharị Blue-Green, dabere na usoro iri na abụọ-Factor App nwere ọmụmaatụ na php na docker.

Mbụ, ntakịrị tiori. Kedu ihe mere Ngwa Iri na Abụọ?

N'okwu dị mfe, e mere akwụkwọ a iji mee ka mmepe nke ngwa SaaS dị mfe, na-enyere aka site n'ịgwa ndị mmepe na ndị injinia DevOps banyere nsogbu na omume ndị a na-ahụkarị na mmepe nke ngwa ọgbara ọhụrụ.

E mepụtara akwụkwọ ahụ site n'aka ndị mmepe nke ikpo okwu Heroku.

Enwere ike itinye ngwa iri na abụọ-Factor na ngwa edere n'asụsụ mmemme ọ bụla yana iji nchikota ọrụ nkwado ọ bụla (ọdụ data, kwụ n'ahịrị ozi, cache, wdg).

Na nkenke gbasara ihe ndị usoro a dabere na ya:

  1. Codebase – Otu codebase esoro na njikwa ụdị – otutu ntinye
  2. Ndabere - Kwupụta nke ọma ma kewapụ ịdabere na ya
  3. Nhazi - Chekwa nhazi n'oge ọ na-agba ọsọ
  4. Ọrụ nkwado - Tụlee ọrụ nkwado dị ka akụrụngwa nkwụnye
  5. Wulite, hapụ, gbaa ọsọ - Kewapụ nke ọma mgbakọ na usoro igbu
  6. Nhazi - Gbaa ngwa dị ka otu ma ọ bụ karịa usoro enweghị obodo
  7. Njikọ ọdụ ụgbọ mmiri - Mbupu ọrụ site na njikọ ọdụ ụgbọ mmiri
  8. Yiri - Mepụta ngwa gị site na iji usoro
  9. Mwepu - Mee ka ntụkwasị obi dịkwuo elu site na mmalite ngwa ngwa na nkwụsị dị ọcha
  10. Nkwalite ngwa/mmekọrịta ọrụ - Debe ebe mmepe gị, nhazi na mmepụta ihe dịka o kwere mee
  11. Ịbanye - Lelee ndekọ dị ka iyi ihe omume
  12. Ọrụ nchịkwa - Mee ọrụ nchịkwa / njikwa site na iji usoro ad hoc

Ị nwere ike nweta ozi ndị ọzọ gbasara ihe iri na abụọ ahụ site na akụrụngwa ndị a:

Kedu ihe bụ mbugharị Blue-Green?

Nnyekwasa Blue-Green bụ usoro iji nyefee ngwa na mmepụta n'ụzọ dị otú a na onye ahịa njedebe adịghị ahụ mgbanwe ọ bụla n'akụkụ ya. N'ikwu ya n'ụzọ ọzọ, ibuga ngwa na efu downtime.

Atụmatụ BG Deploy a kpochapụrụ dị ka nke egosiri na foto dị n'okpuru.

Mmepe ngwa na mbugharị Blue-Green, dabere na usoro iri na abụọ-Factor App nwere ọmụmaatụ na php na docker.

  • Na mbido enwere sava anụ ahụ 2 nwere otu koodu, ngwa, oru ngo, yana onye rawụta (balancer).
  • The rawụta na mbụ na-eduzi arịrịọ niile na otu n'ime sava ahụ (akwụkwọ ndụ akwụkwọ ndụ).
  • N'oge mgbe ịchọrọ ịhapụ ọzọ, a na-emelite ọrụ ahụ dum na ihe nkesa ọzọ (acha anụnụ anụnụ), nke anaghị ahazi arịrịọ ọ bụla ugbu a.
  • Mgbe agbanyere koodu acha anụnụ anụnụ ihe nkesa na-emelite kpamkpam, a na-enye router iwu ka ọ gbanwee site na akwụkwọ ndụ akwụkwọ ndụ on acha anụnụ anụnụ ihe nkesa.
  • Ugbu a ndị ahịa niile na-ahụ nsonaazụ nke koodu na-agba ọsọ acha anụnụ anụnụ ihe nkesa.
  • Ruo oge ụfọdụ, akwụkwọ ndụ akwụkwọ ndụ ihe nkesa na-eje ozi dị ka nnomi ndabere ma ọ bụrụ na ebunyeghị nke ọma acha anụnụ anụnụ ihe nkesa na ọ bụrụ na ọdịda na ahụhụ, rawụta na-atụgharị onye ọrụ na-agbaghachi azụ akwụkwọ ndụ akwụkwọ ndụ ihe nkesa nwere ụdị kwụsiri ike ochie, a na-eziga koodu ọhụrụ maka nyocha na nyocha.
  • Na njedebe nke usoro ahụ, a na-emelite ya n'otu ụzọ ahụ akwụkwọ ndụ akwụkwọ ndụ ihe nkesa. Ma mgbe emelite ya, rawụta na-atụgharị arịrịọ arịrịọ azụ akwụkwọ ndụ akwụkwọ ndụ ihe nkesa.

Ihe niile na-ele anya nke ọma na na ilele mbụ e kwesịghị inwe nsogbu ọ bụla na ya.
Ma ebe ọ bụ na anyị bi n'ụwa nke oge a, nhọrọ na mgbanwe anụ ahụ dị ka egosiri na atụmatụ oge gboo adịghị adabara anyị. Dekọọ ozi ugbu a, anyị ga-alaghachi na ya ma emechaa.

Ndụmọdụ ọjọọ na nke ọma

DisclaimerIhe atụ dị n'okpuru na-egosi akụrụngwa / usoro m na-eji, ị nwere ike iji ihe ọ bụla ọzọ nwere ọrụ yiri ya.

Ọtụtụ n'ime ihe atụ ga-n'otu ụzọ ma ọ bụ ọzọ intersect na web mmepe (nke a bụ ihe ijuanya), na PHP na Docker.

Paragraf ndị dị n'okpuru na-enye nkọwa dị mfe nke bara uru nke iji ihe eme ihe site na iji ihe atụ akọwapụtara; ọ bụrụ na ịchọrọ inwetakwu tiori na isiokwu a, soro njikọ dị n'elu na isi mmalite mbụ.

1. Codebase

Jiri FTP na FileZilla bulite faịlụ na sava otu n'otu oge, echekwala koodu ebe ọ bụla na-abụghị na sava mmepụta.

Ọrụ ahụ kwesịrị inwe otu koodu ntọala mgbe niile, ya bụ, koodu niile sitere na otu Git ebe nchekwa. Sava (mmepụta, staging, test1, test2...) na-eji koodu sitere na ngalaba nke otu ebe nchekwa. N'ụzọ dị otú a, anyị na-enweta koodu agbanwe agbanwe.

2. Ndabere

Budata ọba akwụkwọ niile dị na nchekwa ozugbo na mgbọrọgwụ nke ọrụ ahụ. Mee mmelite naanị site na ịnyefe koodu ọhụrụ na nchekwa nke nwere ụdị ọba akwụkwọ dị ugbu a. Wụnye ngwa niile dị mkpa ozugbo na sava nnabata ebe ọrụ 20 ọzọ na-agba ọsọ.

Ihe oru ngo kwesiri inwe ndepụta nke ịdabere na nghota nke oma (site na dabere na m bu kwa gburugburu). A ghaghị ịkọwapụta ihe ndabere niile ma kewapụ ya.
Ka anyị were dị ka ihe atụ andiwet и Docker.

andiwet - onye njikwa ngwugwu na-enye gị ohere ịwụnye ọba akwụkwọ na PHP. Onye na-ede ihe na-enye gị ohere ịkọwapụta ụdịdị dị iche iche nke ọma ma ọ bụ na-atọ ụtọ, wee kọwapụta ha nke ọma. Enwere ike inwe ọrụ 20 dị iche iche na ihe nkesa na nke ọ bụla ga-enwe ndepụta nke ngwugwu na ọba akwụkwọ n'adabereghị na nke ọzọ.

Docker - ngwa na-enye gị ohere ịkọwapụta na kewapụ gburugburu ebe ngwa ahụ ga-arụ ọrụ. N'ihi ya, dị ka onye na-ede egwú, ma karịa nke ọma, anyị nwere ike ikpebi ihe ngwa ahụ na-arụ ọrụ. Họrọ ụdị PHP akọwapụtara, wụnye naanị ngwugwu dị mkpa maka ọrụ ahụ ka ọ rụọ ọrụ, na-agbakwunyeghị ihe ọ bụla. Na nke kachasị mkpa, na-enweghị ihe mgbochi na ngwugwu na gburugburu ebe obibi nke igwe nnabata na ọrụ ndị ọzọ. Nke ahụ bụ, ọrụ niile dị na ihe nkesa na-aga site na Docker nwere ike iji ngwugwu ngwugwu ọ bụla na gburugburu ebe dị iche iche.

3. Nhazi

Chekwaa configs dị ka ndị na-agbanwe agbanwe ozugbo na koodu. Ihe dị iche iche maka ihe nkesa ule, dị iche iche maka mmepụta. Kee ọrụ nke ngwa dabere na gburugburu ebe obibi ozugbo na azụmahịa mgbagha nke oru ngo na-eji ma ọ bụrụ na ọzọ constructs.

Nhazi - nke a bụ naanị ụzọ na ntinye ọrụ ga-esi dị iche. Dị ka o kwesịrị, a ga-agafe nhazi site na mgbanwe gburugburu ebe obibi (env vars).

Ya bụ, ọ bụrụgodị na ị na-echekwa ọtụtụ faịlụ nhazi .config.prod .config.local ma nyegharịa ha aha n'oge ntinye aha na .config (isi nhazi nke ngwa ahụ na-agụ data) - nke a agaghị abụ ụzọ ziri ezi, ebe ọ bụ na na nke a ozi sitere na nhazi ga-adị n'ihu ọha maka ndị mmepe ngwa niile na data sitere na ihe nkesa mmepụta ga-emebi. A ghaghị ịchekwa nhazi niile ozugbo na usoro ntinye (CI / CD) ma mepụta maka gburugburu dị iche iche nwere ụkpụrụ dị iche iche dị mkpa maka otu ebe n'oge ntinye.

4. Ọrụ Ndị ọzọ

Jikọọ nke ọma na gburugburu ebe obibi, jiri njikọ dị iche iche maka otu ọrụ na mpaghara ụfọdụ.

N'ezie, isi ihe a na-ejikọta ya na isi ihe gbasara nhazi, ebe ọ bụ na enweghị isi ihe a, enweghị ike ịme data nhazi nkịtị na, n'ozuzu, ikike ịhazi ga-adaba na ihe ọ bụla.

Njikọ niile na ọrụ mpụga, dị ka sava kwụ n'ahịrị, ọdụ data, ọrụ caching, ga-abụrịrị otu maka ma mpaghara mpaghara yana ebe ndị ọzọ / mmepụta ihe. N'ikwu ya n'ụzọ ọzọ, n'oge ọ bụla, site n'ịgbanwe eriri njikọ, enwere m ike dochie oku na ntọala #1 na isi #2 na-enweghị ịgbanwe koodu ngwa. Ma ọ bụ, na-ele anya n'ihu, dịka ọmụmaatụ, mgbe ị na-arụ ọrụ ahụ, ị ​​gaghị akọwapụta njikọ ahụ n'ụzọ ọ bụla pụrụ iche maka ihe nkesa cache ọzọ.

5. Wulite, hapụ, mebie

Nwee naanị ụdị ikpeazụ nke koodu ahụ na sava ahụ, n'enweghị ohere ịtụgharịghachi ntọhapụ ahụ. Ọ dịghị mkpa imeju oghere diski. Onye ọ bụla na-eche na ha nwere ike hapụ koodu n'ime mmepụta na njehie bụ ajọ mmemme!

A ghaghị kewapụ usoro niile nke ntinye n'ebe ọ bụla ọzọ.

Nwee ohere ịtụgharị azụ. Mepụta mbipụta na ngwa ochie (agbakọtaralarị ma dị njikere maka agha) echekwara na ịnweta ngwa ngwa, nke mere na ọ bụrụ na enwere njehie ị nwere ike iweghachi ụdị ochie ahụ. Ya bụ, n'ọnọdụ ọ bụla enwere folda ndapụta na nchekwa ugbu a, na mgbe ịga nke ọma nkenyekwa na mgbakọ na nchekwa ugbu a jikọtara site na njikọ ihe atụ na ntọhapụ ọhụrụ nke dị n'ime ndapụta na aha nkịtị nke nọmba ntọhapụ.

Nke a bụ ebe anyị na-echeta ntinye nke Blue-Green, nke na-enye gị ohere ọ bụghị naanị ịgbanwe n'etiti koodu, kamakwa ka ị gbanwee n'etiti ihe niile na ọbụna gburugburu na ikike ịtụgharị ihe niile.

6. Usoro

Chekwaa data steeti ngwa ozugbo n'ime ngwa n'onwe ya. Jiri nnọkọ na RAM nke ngwa n'onwe ya. Jiri oke nkekọrịta n'etiti ọrụ ndị ọzọ ka enwere ike. Dabere n'eziokwu na ngwa ahụ nwere ike ịnwe naanị otu usoro ma ghara ikwe ka ịchacha.

Banyere nnọkọ, chekwaa data naanị na cache nke ọrụ ndị ọzọ na-achịkwa (memcached, redis), yabụ ọ bụrụgodi na ị nwere usoro ngwa 20 na-agba ọsọ, nke ọ bụla n'ime ha, nwetagoro cache, ga-enwe ike ịga n'ihu na-arụ ọrụ na onye ahịa. Otu ọnọdụ nke onye ọrụ na-arụ ọrụ na ngwa na usoro ọzọ. Site na usoro a, ọ na-apụta na n'agbanyeghị ole mbipụta nke ọrụ ndị ọzọ ị na-eji, ihe niile ga-arụ ọrụ nke ọma na enweghị nsogbu na ịnweta data.

7. Njikọ Port

Naanị sava weebụ kwesịrị ịma otu esi arụ ọrụ na ọrụ ndị ọzọ. Ma ọ bụ nke ka mma, wụnye ọrụ ndị ọzọ ozugbo n'ime sava weebụ. Dịka ọmụmaatụ, dị ka modul PHP na Apache.
Ọrụ gị niile ga-enwerịrị ike ịnweta ibe gị site na ịnweta ụfọdụ adreesị na ọdụ ụgbọ mmiri (localgost: 5432, localhost: 3000, nginx: 80, php-fpm: 9000), ya bụ, site na nginx enwere m ike ịnweta ma php-fpm na gaa postgres, na site na php-fpm ruo postgres na nginx na n'ezie site na ọrụ ọ bụla enwere m ike ịnweta ọrụ ọzọ. N'ụzọ dị otú a, ike nke ọrụ adịghị ejikọta na viability nke ọrụ ọzọ.

8. Parallelism

Na-arụ ọrụ na otu usoro, ma ọ bụghị ya, ọtụtụ usoro agaghị enwe ike ịmekọrịta ibe ha!

Hapụ ohere maka ncha. Docker swarm dị mma maka nke a.
Docker Swarm bụ ngwá ọrụ maka ịmepụta na ijikwa ụyọkọ akpa ma n'etiti igwe dị iche iche yana ụyọkọ arịa n'otu igwe.

N'iji swarm, enwere m ike ikpebi ego ole m ga-ekenye maka usoro ọ bụla na usoro ole nke otu ọrụ m ga-amalite, na onye na-ahụ maka ime ụlọ, na-enweta data na ọdụ ụgbọ mmiri nyere, ga-akpaghị aka na proxy ya na usoro. Ya mere, ịhụ na ibu dị na ihe nkesa ahụ abawanyela, enwere m ike itinyekwu usoro, si otú ahụ belata ibu na ụfọdụ usoro.

9. Akwụsịghị

Ejila kwụ n'ahịrị rụọ ọrụ na usoro na data. Igbu otu usoro kwesịrị imetụta ngwa niile. Ọ bụrụ na otu ọrụ na-agbada, ihe niile na-agbada.

Enwere ike gbanyụọ usoro na ọrụ ọ bụla n'oge ọ bụla na nke a ekwesịghị imetụta ọrụ ndị ọzọ (n'ezie, nke a apụtaghị na ọrụ ahụ agaghị adị maka ọrụ ọzọ, mana na ọrụ ọzọ agaghị agbanyụ mgbe nke a gasịrị). A ghaghị ịkwụsị usoro niile nke ọma, nke mere na mgbe ha kwụsịrị, ọ dịghị data ga-emebi ma usoro ahụ ga-arụ ọrụ nke ọma oge ọzọ ị gbanye ya. Nke ahụ bụ, ọbụlagodi n'ọnọdụ nkwụsị mberede, data ahụ ekwesịghị imebi (usoro azụmahịa dị mma ebe a, ajụjụ ndị dị na nchekwa data na-arụ ọrụ naanị n'ìgwè, ma ọ bụrụ na ọ dịkarịa ala otu ajụjụ sitere na otu ahụ dara ma ọ bụ jiri ya mee ihe). njehie, mgbe ahụ ọ dịghị ajụjụ ọzọ sitere na otu na-ada ada n'ezie).

10. Nkwalite ngwa / arụ ọrụ

Mmepụta, nhazi na ụdị ngwa mpaghara ga-adị iche. Na mmepụta anyị na-eji usoro Yii Lite, yana mpaghara Yii, ka ọ na-arụ ọrụ ngwa ngwa na mmepụta!

N'ezie, ihe niile deployment na-arụ ọrụ na koodu kwesịrị ịbụ na ihe fọrọ nke nta ka ọ bụrụ otu gburugburu (anyị anaghị ekwu maka ngwaike anụ ahụ). Ọzọkwa, onye ọrụ mmepe ọ bụla ga-enwe ike itinye koodu ahụ na mmepụta ma ọ bụrụ na ọ dị mkpa, ọ bụghịkwa ụfọdụ ngalaba devops a zụrụ azụ, nke naanị ekele maka ike pụrụ iche nwere ike ibuli ngwa ahụ n'ime mmepụta.

Docker na-enyekwara anyị aka na nke a. Ọ bụrụ na achọpụtara isi ihe niile gara aga, iji docker ga-eweta usoro nke ibugharị gburugburu ma na mmepụta na igwe mpaghara ịbanye otu iwu ma ọ bụ abụọ.

11. Ndekọ

Anyị na-ede ndekọ na faịlụ na ọdụ data! Anyị anaghị ehichapụ faịlụ na ọdụ data site na ndekọ. Ka anyị jiri 9000 Peta bytes zụta draịvụ ike, nke ahụ dịkwa mma.

Ekwesịrị iwere ndekọ ndekọ niile dị ka iyi ihe omume. Ngwa n'onwe ya ekwesịghị itinye aka na nhazi ndekọ. Ekwesịrị imepụta ndekọ ma ọ bụ stdout ma ọ bụ ziga ya site na protocol dị ka udp, ka ịrụ ọrụ na ndekọ anaghị emepụta nsogbu ọ bụla maka ngwa ahụ. graylog dị mma maka nke a. Graylog na-enweta ndekọ niile site na udp (usoro a anaghị achọ ichere nzaghachi maka nnabata nke ngwugwu ahụ na-aga nke ọma) anaghị egbochi ngwa ahụ n'ụzọ ọ bụla yana naanị na-arụ ọrụ nhazi na nhazi ndekọ. Ihe mgbagha ngwa anaghị agbanwe iji rụọ ọrụ na ụzọ ndị dị otú ahụ.

12. Ọrụ nchịkwa

Ka imelite data, ọdụ data, wdg, jiri ebe njedebe ekepụtara iche na API, ime ya ugboro abụọ n'usoro ga-eme ka emegharịa ihe niile. Ma ị bụghị onye nzuzu, ị gaghị pịa ugboro abụọ, na anyị achọghị ịkwaga.

Ekwesịrị ịrụ ọrụ nchịkwa niile n'otu mpaghara dị ka koodu niile, na ọkwa ntọhapụ. Nke ahụ bụ, ọ bụrụ na anyị kwesịrị ịgbanwe nhazi nke nchekwa data, mgbe ahụ, anyị agaghị eme ya site n'ịgbanwe aha nke ogidi na ịgbakwunye ndị ọhụrụ site na ụfọdụ ngwaọrụ njikwa nchekwa data anya. Maka ihe ndị dị otú ahụ, anyị na-emepụta edemede dị iche iche - migrations, nke a na-egbu ebe niile na gburugburu ebe obibi n'otu ụzọ ahụ na nsonaazụ nkịtị na nghọta. Maka ọrụ ndị ọzọ niile, dị ka iji data mejupụta ọrụ ahụ, a ga-eji usoro ndị yiri ya mee ihe.

Mmejuputa ihe atụ na PHP, Laravel, Laradock, Docker-Compose

P.S Ihe atụ niile mere na MacOS. Ọtụtụ n'ime ha dịkwa mma maka Linux. Ndị ọrụ Windows, gbaghara m, mana anaghị m arụ ọrụ na Windows ogologo oge.

Ka anyị were were ọnọdụ ebe anyị enweghị ụdị PHP arụnyere na PC anyị na ọ nweghị ihe ọ bụla.
Wụnye ụdị docker kacha ọhụrụ na docker-dejupụta. (Enwere ike ịchọta nke a na ịntanetị)

docker -v && 
docker-compose -v

Mmepe ngwa na mbugharị Blue-Green, dabere na usoro iri na abụọ-Factor App nwere ọmụmaatụ na php na docker.

1. Tinye Laradock

git clone https://github.com/Laradock/laradock.git && 
ls

Mmepe ngwa na mbugharị Blue-Green, dabere na usoro iri na abụọ-Factor App nwere ọmụmaatụ na php na docker.

Banyere Laradock, m ga-ekwu na ọ bụ ihe dị mma nke ukwuu, nke nwere ọtụtụ arịa na ihe inyeaka. Ma agaghị m akwado iji Laradock dị ka nke a na-enweghị mgbanwe na mmepụta n'ihi redundancy ya. Ọ ka mma ịmepụta arịa nke onwe gị dabere na ihe atụ na Laradock, nke a ga-eme ka ọ dịkwuo mma, n'ihi na ọ dịghị onye chọrọ ihe niile dị n'ebe ahụ n'otu oge.

2. Hazie Laradock iji mee ngwa anyị.

cd laradock && 
cp env-example .env

Mmepe ngwa na mbugharị Blue-Green, dabere na usoro iri na abụọ-Factor App nwere ọmụmaatụ na php na docker.

2.1. Mepee ndekọ habr (nchekwa ndị nne na nna nke laradock na-etinye n'ime ya) na ụfọdụ nchịkọta akụkọ. (N'okwu PHPStorm m)

N'oge a, anyị na-enye ọrụ ahụ naanị aha.

Mmepe ngwa na mbugharị Blue-Green, dabere na usoro iri na abụọ-Factor App nwere ọmụmaatụ na php na docker.

2.2. Mepee onyonyo oghere ọrụ. (N'ọnọdụ gị, ihe onyonyo a ga-ewe oge iji wuo ya)
Oghere ọrụ bụ onyonyo akwadoro nke ọma maka iji usoro arụ ọrụ na nnọchite onye nrụpụta.

Anyị na-eji n'ime akpa

docker-compose up -d workspace && 
docker-compose exec workspace bash

Mmepe ngwa na mbugharị Blue-Green, dabere na usoro iri na abụọ-Factor App nwere ọmụmaatụ na php na docker.

2.3. Ịwụnye Laravel

composer create-project --prefer-dist laravel/laravel application

Mmepe ngwa na mbugharị Blue-Green, dabere na usoro iri na abụọ-Factor App nwere ọmụmaatụ na php na docker.

2.4. Mgbe echichi, anyị na-elele ma ndekọ na oru ngo e kere na-egbu dee.

ls
exit
docker-compose down

Mmepe ngwa na mbugharị Blue-Green, dabere na usoro iri na abụọ-Factor App nwere ọmụmaatụ na php na docker.

2.5. Ka anyị laghachi na PHPStorm ma tọọ ụzọ ziri ezi na ngwa laravel anyị na faịlụ .env.

Mmepe ngwa na mbugharị Blue-Green, dabere na usoro iri na abụọ-Factor App nwere ọmụmaatụ na php na docker.

3. Tinye koodu niile na Git.

Iji mee nke a, anyị ga-emepụta ebe nchekwa na Github (ma ọ bụ ebe ọ bụla ọzọ). Ka anyị gaa na ndekọ habr dị na ọdụ ma mebie koodu a.

echo "# habr-12factor" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin [email protected]:nzulfigarov/habr-12factor.git # здесь будет ссылка на ваш репо
git push -u origin master
git status

Ka anyị lelee ma ihe niile dị n'usoro.

Mmepe ngwa na mbugharị Blue-Green, dabere na usoro iri na abụọ-Factor App nwere ọmụmaatụ na php na docker.

Maka ịdị mma, ana m akwado iji ụfọdụ interface interface maka Git, n'ọnọdụ m ọ bụ GitKraken. (ebe a bụ njikọ ntụnye aka)

4. Ka anyị malite!

Tupu ịmalite, jide n'aka na ọ nweghị ihe kwụgidere na ọdụ ụgbọ mmiri 80 na 443.

docker-compose up -d nginx php-fpm

Mmepe ngwa na mbugharị Blue-Green, dabere na usoro iri na abụọ-Factor App nwere ọmụmaatụ na php na docker.

Yabụ, ọrụ anyị nwere ọrụ atọ dị iche iche:

  • nginx - sava weebụ
  • php-fpm - php maka ịnata arịrịọ sitere na sava weebụ
  • ebe ọrụ - php maka ndị mmepe

Ugbu a, anyị enwetala na anyị ekepụtala ngwa ga-ezute isi anọ n'ime 4, ya bụ:

1. Codebase - koodu niile dị n'otu ebe nchekwa (obere ndetu: ọ nwere ike ịbụ ihe ziri ezi ịgbakwunye docker n'ime ọrụ laravel, mana nke a adịghị mkpa).

2. Ndabere - Edere ihe ndabere anyị niile n'ụzọ doro anya na ngwa / composer.json yana na Dockerfile nke akpa ọ bụla.

3. Ọrụ nkwado - Onye ọ bụla n'ime ọrụ (php-fom, nignx, workspace) na-ebi ndụ nke ya ma jikọta ya na mpụga na mgbe ị na-arụ ọrụ na otu ọrụ, nke ọzọ agaghị emetụta ya.

4. Nhazi - ọrụ ọ bụla bụ otu usoro. Nke ọ bụla n'ime ọrụ ahụ anaghị akwado ọnọdụ ime.

5. Njikọ ọdụ ụgbọ mmiri

docker ps

Mmepe ngwa na mbugharị Blue-Green, dabere na usoro iri na abụọ-Factor App nwere ọmụmaatụ na php na docker.

Dịka anyị nwere ike ịhụ, ọrụ ọ bụla na-arụ ọrụ n'ọdụ ụgbọ mmiri nke ya ma nwee ike ịnweta ọrụ ndị ọzọ niile.

6. Yiri

Docker na-enye anyị ohere ịmepụta ọtụtụ usoro nke otu ọrụ na-eji nhazi ibu akpaka n'etiti ha.

Ka anyị kwụsị arịa ndị ahụ ma na-ebufe ha n'ọkọlọtọ --ọnụ ọgụgụ

docker-compose down && 
docker-compose up -d --scale php-fpm=3 nginx php-fpm

Mmepe ngwa na mbugharị Blue-Green, dabere na usoro iri na abụọ-Factor App nwere ọmụmaatụ na php na docker.

Dịka anyị nwere ike ịhụ, emepụtala ụdị nke akpa php-fpm. Anyị ekwesịghị ịgbanwe ihe ọ bụla na-arụ ọrụ na akpa a. Anyị na-aga n'ihu na ịnweta ya na ọdụ ụgbọ mmiri 9000, Docker na-achịkwa ibu n'etiti arịa maka anyị.

7. Mwepu - Enwere ike igbu akpa ọ bụla na-emerụghị ibe ya ahụ. Ịkwụsị ma ọ bụ ịmalitegharị akpa agaghị emetụta ọrụ nke ngwa ahụ n'oge mmalite na-esote. Enwere ike ibuli akpa ọ bụla n'oge ọ bụla.

8. Nkwalite ngwa/mmekọrịta ọrụ - gburugburu anyị niile bụ otu. Site n'ịgba ọsọ usoro na ihe nkesa na mmepụta, ị gaghị agbanwe ihe ọ bụla na iwu gị. Ihe niile ga-adabere na Docker n'otu ụzọ ahụ.

9. Ịbanye - ndekọ niile dị na arịa ndị a na-aga na iyi wee hụ na njikwa Docker. (na nke a, n'ezie, na ihe ndị ọzọ a na-eme n'ụlọ, nke a nwere ike ọ gaghị abụ ikpe ma ọ bụrụ na ị naghị elekọta ya)

 docker-compose logs -f

Mmepe ngwa na mbugharị Blue-Green, dabere na usoro iri na abụọ-Factor App nwere ọmụmaatụ na php na docker.

Mana enwere nwude na ụkpụrụ ndabara na PHP na Nginx na-edekwa ndekọ na faịlụ. Iji zute ihe iri na abụọ ahụ, ọ dị mkpa gbanyụọ ide ndekọ na faịlụ na nhazi nke akpa ọ bụla iche iche.

Docker na-enyekwa ikike izipu ndekọ ọ bụghị naanị na stdout, kamakwa na ihe ndị dị ka graylog, nke m kwuru n'elu. Na n'ime graylog, anyị nwere ike rụọ ọrụ ndekọ dịka masịrị anyị na ngwa anyị agaghị achọpụta nke a n'ụzọ ọ bụla.

10. Ọrụ nchịkwa - A na-edozi ọrụ nchịkwa niile site na laravel ekele maka ngwa ọrụ nka dịka ndị okike nke ngwa 12 ga-amasị.

Dịka ọmụmaatụ, m ga-egosi otu esi eme ụfọdụ iwu.
Anyị na-abanye n'ime akpa ahụ.

 
docker-compose exec workspace bash
php artisan list

Mmepe ngwa na mbugharị Blue-Green, dabere na usoro iri na abụọ-Factor App nwere ọmụmaatụ na php na docker.

Ugbu a, anyị nwere ike iji iwu ọ bụla. (biko mara na anyị ahazighị nchekwa data na cache, ya mere, ọkara nke iwu agaghị eme nke ọma, n'ihi na e mere ha iji rụọ ọrụ na cache na nchekwa data).

Mmepe ngwa na mbugharị Blue-Green, dabere na usoro iri na abụọ-Factor App nwere ọmụmaatụ na php na docker.

11. Nhazi na 12. Wulite, hapụ, gbaa ọsọ

Achọrọ m ịrara akụkụ a nye Blue-Green Deployment, mana ọ tụgharịrị buru ibu maka edemede a. M ga-ede edemede dị iche maka nke a.

Na nkenke, echiche a dabere na sistemụ CI/CD dị ka Jenkins и Gitlab CI. Na abụọ, ị nwere ike ịtọ mgbanwe gburugburu ebe obibi jikọtara ya na otu gburugburu ebe obibi. N'ihi ya, n'ọnọdụ a, isi ihe c ga-emezu Nhazi.

Na isi ihe banyere Wulite, hapụ, gbaa ọsọ A na-edozi ya site na ọrụ arụnyere na aha Pipeline.

Pipeline na-enye gị ohere kewaa usoro ntinye n'ime ọtụtụ usoro, na-egosipụta ọkwa nke mgbakọ, ntọhapụ na igbu. Nakwa na Pipeline, ị nwere ike ịmepụta ndabere, na n'ezie ihe ọ bụla. Nke a bụ ngwá ọrụ nwere ikike na-akparaghị ókè.

Koodu ngwa dị na Github.
Echefula ibido submodule mgbe ị na-emechi ebe nchekwa a.

P.S.: Enwere ike iji ụzọ ndị a niile na ngwa ọrụ na asụsụ mmemme ọ bụla. Isi ihe bụ na isi ihe adịghị iche.

isi: www.habr.com

Tinye a comment