Forbairt feidhmchláir agus imscaradh Blue-Green, bunaithe ar mhodheolaíocht The Twelve-Factor App le samplaí i php agus docker

Forbairt feidhmchláir agus imscaradh Blue-Green, bunaithe ar mhodheolaíocht The Twelve-Factor App le samplaí i php agus docker

Gcéad dul síos, teoiric beag. Cad a tharla An Aip Déag Fachtóir?

I bhfocail shimplí, tá an doiciméad seo deartha chun forbairt feidhmchláir SaaS a shimpliú, ag cuidiú trí fhorbróirí agus innealtóirí DevOps a chur ar an eolas faoi na fadhbanna agus na cleachtais is minice a bhíonn le sárú i bhforbairt feidhmchláir nua-aimseartha.

Chruthaigh forbróirí ardán Heroku an doiciméad.

Is féidir an Aip Déag-Fachtóir a chur i bhfeidhm ar fheidhmchláir atá scríofa i dteanga ríomhchlárúcháin ar bith agus a úsáideann aon teaglaim de sheirbhísí tacaíochta (bunachair shonraí, scuainí teachtaireachta, taisce, etc.).

Go hachomair faoi na fachtóirí ar a bhfuil an mhodheolaíocht seo bunaithe:

  1. Códbase – Bunchód amháin rianaithe i rialú leagan – imscaradh iolrach
  2. Spleáchais – spleáchais a dhearbhú agus a leithlisiú go sainráite
  3. Cumraíocht - Sábháil cumraíocht in am rite
  4. Seirbhísí Tacaíochta – Smaoinigh ar sheirbhísí tacaíochta mar acmhainní plug-in
  5. Tóg, scaoil, rith – Deighil go docht idir na céimeanna tionóil agus cur i gcrích
  6. Na próisis – Rith an feidhmchlár mar phróiseas gan stát amháin nó níos mó
  7. Port ceangailteach – Seirbhísí easpórtála trí cheangal calafoirt
  8. Comhréireacht – Scála d’fheidhmchlár ag úsáid próisis
  9. Indiúscartha - Uasmhéadaigh iontaofacht le tosaithe tapa agus múchadh glan
  10. Forbairt iarratais/paireacht oibríochta – Coinnigh do thimpeallachtaí forbartha, stáitse agus táirgthe chomh cosúil agus is féidir
  11. Logáil – Féach ar an logáil mar shruth imeachtaí
  12. Tascanna riaracháin – Tascanna riaracháin/bainistíochta a dhéanamh ag baint úsáide as próisis ad hoc

Is féidir leat tuilleadh eolais a fháil faoi na 12 thoisc ó na hacmhainní seo a leanas:

Cad is imscaradh Blue-Green ann?

Is modh é imscaradh Blue-Green chun feidhmchlár a sheachadadh chuig táirgeadh sa chaoi is nach bhfeiceann an cliant deiridh aon athruithe ar a thaobh. I bhfocail eile, feidhmchlár a imscaradh le nialas downtime.

Breathnaíonn scéim clasaiceach BG Deploy cosúil leis an gceann a thaispeántar san íomhá thíos.

Forbairt feidhmchláir agus imscaradh Blue-Green, bunaithe ar mhodheolaíocht The Twelve-Factor App le samplaí i php agus docker

  • Ag an tús tá 2 fhreastalaithe fisiceacha leis an gcód céanna, feidhmchlár, tionscadal, agus tá ródaire (cothromóir).
  • Treoraíonn an ródaire gach iarratas chuig ceann de na freastalaithe ar dtús (glas).
  • Faoi láthair nuair is gá duit scaoileadh arís, déantar an tionscadal iomlán a nuashonrú ar fhreastalaí eile (gorm), nach bhfuil ag próiseáil aon iarratais faoi láthair.
  • Tar éis an cód a bheith ar gorm Tá an freastalaí nuashonraithe go hiomlán, tugtar ordú don ródaire aistriú uaidh glas ar gorm freastalaí.
  • Anois feiceann gach cliant toradh an chóid ag rith leis gorm freastalaí.
  • Le tamall anuas, glas feidhmíonn an freastalaí mar chóip chúltaca i gcás nár éirigh leis an imscaradh chuig gorm freastalaí agus i gcás teipe agus fabhtanna, athraíonn an ródaire an sreabhadh úsáideora ar ais go dtí glas freastalaí leis an seanleagan cobhsaí, agus seoltar an cód nua le haghaidh athbhreithnithe agus tástála.
  • Agus ag deireadh an phróisis, déantar é a nuashonrú ar an mbealach céanna glas freastalaí. Agus tar éis é a nuashonrú, aistríonn an ródaire an sreabhadh iarratais ar ais go dtí glas freastalaí.

Breathnaíonn sé go léir an-mhaith agus ar an gcéad amharc níor chóir go mbeadh aon fhadhbanna leis.
Ach ós rud é go bhfuil cónaí orainn sa domhan nua-aimseartha, ní oireann an rogha le hathrú fisiceach mar a léirítear sa scéim chlasaiceach dúinn. Taifead an t-eolas faoi láthair, cuirfimid ar ais chuige níos déanaí.

Droch-chomhairle agus dea-chomhairle

Séanadh: Léiríonn na samplaí thíos na fóntais/modheolaíochtaí a úsáidim, is féidir leat aon roghanna eile a úsáid a bhfuil feidhmeanna comhchosúla acu.

Trasnaíonn an chuid is mó de na samplaí ar bhealach amháin nó ar bhealach eile le forbairt gréasáin (is iontas é seo), le PHP agus Docker.

Tugann na hailt thíos cur síos simplí praiticiúil ar úsáid fachtóirí ag baint úsáide as samplaí sonracha; más mian leat tuilleadh teoiric a fháil ar an ábhar seo, lean na naisc thuas go dtí an fhoinse bunaidh.

1. Bunchód

Bain úsáid as FTP agus FileZilla chun comhaid a uaslódáil chuig na freastalaithe ceann ag an am, ná stóráil an cód áit ar bith seachas ar an bhfreastalaí táirgeachta.

Ba cheart go mbeadh bonn cód amháin ag an tionscadal i gcónaí, is é sin, tagann gach cód ó cheann amháin dul stór. Úsáideann freastalaithe (táirgeadh, stáitsiú, tástáil1, tástáil2...) cód ó bhrainsí de stór coiteann amháin. Ar an mbealach seo bainimid comhsheasmhacht cóid amach.

2. Spleáchais

Íoslódáil gach leabharlann i bhfillteáin go díreach chuig fréamh an tionscadail. Déan nuashonruithe go simplí tríd an gcód nua a aistriú chuig an bhfillteán leis an leagan reatha den leabharlann. Suiteáil na fóntais riachtanacha go léir go díreach ar an bhfreastalaí ósta áit a bhfuil 20 seirbhís eile ar siúl.

Ba cheart go mbeadh liosta spleáchais atá intuigthe go soiléir i dtionscadal (de réir spleáchais is éard atá i gceist agam freisin an timpeallacht). Ní mór gach spleáchas a shainiú go sainráite agus a aonrú.
Glacaimis mar shampla Cumadóir и dhugaire.

Cumadóir - bainisteoir pacáiste a ligeann duit leabharlanna a shuiteáil i PHP. Ceadaíonn Cumadóir duit leaganacha a shonrú go docht nó go scaoilte, agus iad a shainiú go sainráite. Is féidir le 20 tionscadal éagsúil a bheith ar an bhfreastalaí agus beidh liosta pearsanta pacáistí agus leabharlann ag gach ceann acu neamhspleách ar a chéile.

dhugaire — áirgiúlacht a ligeann duit an timpeallacht ina reáchtálfar an feidhmchlár a shainiú agus a leithlisiú. Dá réir sin, díreach cosúil le cumadóir, ach níos críochnúla, is féidir linn a chinneadh cad a oibríonn an t-iarratas leis. Roghnaigh leagan sonrach de PHP, suiteáil ach na pacáistí atá riachtanach chun go n-oibreoidh an tionscadal, gan aon rud breise a chur leis. Agus is tábhachtaí fós, gan cur isteach ar phacáistí agus ar thimpeallacht an mheaisín óstach agus tionscadail eile. Is é sin, is féidir le gach tionscadal ar an bhfreastalaí a ritheann trí Docker úsáid a bhaint as aon sraith pacáistí agus timpeallacht go hiomlán difriúil.

3. Cumraíocht

Stóráil cumraíochtaí mar tairisigh go díreach sa chód. Tairisigh ar leith don fhreastalaí tástála, ar leithligh le haghaidh táirgeadh. Oibriú an iarratais a cheangal ag brath ar an gcomhshaol go díreach i loighic ghnó an tionscadail ag baint úsáide as tógálacha eile.

Cumraíochtaí - is é seo an t-aon bhealach inar cheart go mbeadh difríocht idir imscaradh tionscadal. Go hidéalach, ba cheart cumraíochtaí a chur ar aghaidh trí athróga timpeallachta (env vars).

Is é sin, fiú má stóráil tú roinnt comhaid cumraíochta .config.prod .config.local agus iad a athainmniú ag an am imscaradh go .config (an príomh-config óna léann an t-iarratas sonraí) - ní bheidh sé seo an cur chuige ceart, ós rud é sa chás seo beidh an fhaisnéis ó na cumraíochtaí ar fáil go poiblí do gach forbróir feidhmchlár agus cuirfear isteach ar shonraí ón bhfreastalaí táirgthe. Ní mór gach cumraíocht a stóráil go díreach sa chóras imlonnaithe (CI/CD) agus a ghiniúint do thimpeallachtaí éagsúla le luachanna éagsúla atá riachtanach do thimpeallacht ar leith tráth an imscartha.

4. Seirbhísí Tríú Páirtí

Bí ceangailte go docht leis an gcomhshaol, bain úsáid as naisc éagsúla le haghaidh na seirbhísí céanna i dtimpeallachtaí áirithe.

Go deimhin, forluíonn an pointe seo go láidir leis an bpointe faoi chumraíochtaí, mar gan an pointe seo, ní féidir gnáthshonraí cumraíochta a dhéanamh agus, go ginearálta, ní thitfidh an cumas cumraíochta a bheag nó a mhór.

Caithfidh gach nasc le seirbhísí seachtracha, mar fhreastalaithe scuaine, bunachair shonraí, seirbhísí taisce, a bheith mar an gcéanna don timpeallacht áitiúil agus don timpeallacht tríú páirtí / táirgeachta araon. I bhfocail eile, ag am ar bith, trí theaghrán an cheangail a athrú, is féidir liom bonn #1 a chur in ionad glaonna go bonn #2 gan cód an fheidhmchláir a athrú. Nó, ag féachaint amach romhainn, mar shampla, nuair a bheidh an tseirbhís á scála, ní bheidh ort an nasc a shonrú ar aon bhealach speisialta le haghaidh freastalaí taisce breise.

5. Tógáil, scaoileadh, forghníomhú

Ná bíodh ach an leagan deiridh den chód ar an bhfreastalaí, gan seans ar bith an scaoileadh a thabhairt ar ais. Níl gá le spás diosca a líonadh. Is droch-ríomhchláraitheoir é duine ar bith a cheapann gur féidir leo cód a scaoileadh isteach i dtáirgeadh le hearráid!

Ní mór gach céim den imscaradh a scaradh óna chéile.

Bíodh seans agat rolladh siar. Déan eisiúintí le seanchóipeanna den fheidhmchlár (le chéile cheana féin agus réidh le haghaidh cath) a shábháiltear i rochtain thapa, ionas gur féidir leat an seanleagan a chur ar ais i gcás earráidí. Is é sin, go coinníollach tá fillteán eisiúintí agus fillteán reatha, agus tar éis imscaradh rathúil agus cóimeáil an fillteán reatha nasctha le nasc siombalach leis an scaoileadh nua atá taobh istigh eisiúintí le gnáthainm na huimhreach eisiúna.

Seo nuair a chuimhnímid ar imscaradh Blue-Green, rud a ligeann duit ní hamháin aistriú idir cód, ach freisin aistriú idir na hacmhainní go léir agus fiú timpeallachtaí leis an gcumas gach rud a rolladh siar.

6. Próisis

Stóráil sonraí stáit an fheidhmchláir go díreach laistigh den fheidhmchlár féin. Úsáid seisiúin i RAM an fheidhmchláir féin. Bain úsáid as an oiread comhroinnte agus is féidir idir seirbhísí tríú páirtí. Ag brath ar an bhfíric nach féidir ach próiseas amháin a bheith ag an iarratas agus nach gceadaíonn sé scálaithe.

Maidir le seisiúin, stóráil sonraí i dtaisce amháin arna rialú ag seirbhísí tríú páirtí (memcached, redis), mar sin fiú má tá 20 próiseas feidhmchláir ar siúl agat, beidh aon cheann acu, tar éis rochtain a fháil ar an taisce, in ann leanúint ar aghaidh ag obair leis an gcliant i an staid chéanna ina raibh an t-úsáideoir ag obair leis an iarratas i bpróiseas eile. Leis an gcur chuige seo, is cuma cé mhéad cóip de sheirbhísí tríú páirtí a úsáideann tú, oibreoidh gach rud de ghnáth agus gan fadhbanna le rochtain ar shonraí.

7. Port ceangailteach

Níor cheart go mbeadh a fhios ag an bhfreastalaí gréasáin ach conas oibriú le seirbhísí tríú páirtí. Nó níos fearr fós, suiteáil seirbhísí tríú páirtí go díreach taobh istigh den fhreastalaí gréasáin. Mar shampla, mar mhodúl PHP in Apache.
Caithfidh do sheirbhísí go léir a bheith inrochtana dá chéile trí rochtain ar sheoladh agus port éigin (localgost: 5432, localhost: 3000, nginx: 80, php-fpm:9000), is é sin, ó nginx is féidir liom rochtain a fháil ar php- fpm agus go postgres, agus ó php-fpm go postgres agus nginx agus i ndáiríre ó gach seirbhís is féidir liom rochtain a fháil ar sheirbhís eile. Ar an mbealach seo, níl inmharthanacht seirbhíse ceangailte le hinmharthanacht seirbhíse eile.

8. Comhthreomhaireacht

Oibrigh le próiseas amháin, nó ní bheidh roinnt próiseas in ann dul i ngleic lena chéile!

Fág seomra le haghaidh scálaithe. Tá Swarm Docker iontach le haghaidh seo.
Is uirlis é Docker Swarm chun braislí coimeádán a chruthú agus a bhainistiú idir meaisíní éagsúla agus sraith coimeádán ar an meaisín céanna.

Ag baint úsáide as swarm, is féidir liom a chinneadh cé mhéad acmhainní a leithdháilfidh mé ar gach próiseas agus cé mhéad próiseas den tseirbhís chéanna a sheolfaidh mé, agus déanfaidh an cothromóir inmheánach, a fhaigheann sonraí ar chalafort ar leith, é a sheachvótáil go huathoibríoch chuig na próisis. Mar sin, ag féachaint go bhfuil an t-ualach ar an bhfreastalaí méadaithe, is féidir liom níos mó próisis a chur leis, rud a laghdóidh an t-ualach ar phróisis áirithe.

9. Indiúscartha

Ná húsáid scuainí chun oibriú le próisis agus sonraí. Ba cheart go gcuirfeadh marú próiseas amháin isteach ar an iarratas iomlán. Má théann seirbhís amháin síos, téann gach rud síos.

Is féidir gach próiseas agus seirbhís a mhúchadh ag am ar bith agus níor cheart go gcuirfeadh sé seo isteach ar sheirbhísí eile (ar ndóigh, ní chiallaíonn sé seo nach mbeidh an tseirbhís ar fáil do sheirbhís eile, ach nach dtiocfaidh seirbhís eile as tar éis an ceann seo). Ní mór na próisis go léir a fhoirceannadh go grásta, ionas nuair a chuirtear deireadh leo, ní dhéanfar aon damáiste do shonraí agus oibreoidh an córas i gceart an chéad uair eile a chasann tú air. Is é sin, fiú i gcás foirceannadh éigeandála, níor cheart damáiste a dhéanamh do na sonraí (tá an mheicníocht idirbhirt oiriúnach anseo, ní oibríonn fiosrúcháin sa bhunachar sonraí ach i ngrúpaí, agus má theipeann ar cheist amháin ar a laghad ón ngrúpa nó má dhéantar é a fhorghníomhú le ceann eile). earráid, mar sin ní theipeann ar aon cheist eile ón ngrúpa i ndáiríre).

10. Paireacht forbartha/oibríochta iarratais

Caithfidh táirgeadh, stáitsiú agus leagan áitiúil an fheidhmchláir a bheith difriúil. I dtáirgeadh úsáidimid an creat Yii Lite, agus go háitiúil Yii, ionas go n-oibríonn sé níos tapúla i dtáirgeadh!

I ndáiríre, ba cheart go mbeadh gach imscaradh agus obair le cód i dtimpeallacht beagnach comhionann (níl muid ag caint faoi chrua-earraí fisiceacha). Chomh maith leis sin, ba cheart go mbeadh aon fhostaí forbartha in ann an cód a imscaradh chuig táirgeadh más gá, agus ní roinnt roinn devops atá oilte go speisialta, nach féidir ach a bhuíochas le neart speisialta an feidhmchlár a ardú go dtí an táirgeadh.

Cuidíonn Docker linn leis seo freisin. Má bhreathnaítear ar na pointí go léir roimhe seo, má úsáidtear docker cuirfear an próiseas imscaradh ar an gcomhshaol ar tháirgeadh agus ar an meaisín áitiúil chun ordú nó dhó a iontráil.

11. Logchomhaid

Scríobhaimid logaí chuig comhaid agus bunachair shonraí! Ní ghlanaimid comhaid agus bunachair shonraí ó logaí. A ligean ar a cheannach ach tiomáint crua le 9000 Peta bytes agus sin ceart go leor.

Ba cheart gach loga a mheas mar shruth imeachtaí. Níor cheart go mbeadh baint ag an bhfeidhmchlár féin le próiseáil logaí. Ba cheart logaí a aschur go stdout nó a sheoladh trí phrótacal ar nós udp, ionas nach gcruthóidh oibriú le logaí aon fhadhbanna don fheidhmchlár. Tá graylog maith le haghaidh seo. Faigheann Graylog gach loga trí udp (ní éilíonn an prótacal seo fanacht le freagra maidir le fáiltiú rathúil an phaicéid) ní chuireann sé isteach ar an iarratas ar bhealach ar bith agus ní dhéileálann sé ach le logaí a struchtúrú agus a phróiseáil. Ní athraíonn an loighic iarratais le bheith ag obair le cur chuige den sórt sin.

12. Tascanna riaracháin

Chun sonraí, bunachair shonraí, etc. a nuashonrú, bain úsáid as críochphointe a chruthaítear ar leithligh san API, agus má dhéantar é 2 uair i ndiaidh a chéile, déanfar gach rud a mhacasamhlú. Ach níl tú dúr, ní chliceáilfidh tú faoi dhó, agus ní theastaíonn imirce uainn.

Ba cheart na tascanna riaracháin go léir a dhéanamh sa timpeallacht chéanna leis an gcód ar fad, ag an leibhéal eisithe. Is é sin, más gá dúinn struchtúr an bhunachair sonraí a athrú, ansin ní dhéanfaimid é de láimh trí ainmneacha na gcolún a athrú agus cinn nua a chur leis trí roinnt uirlisí bainistíochta bunachar sonraí amhairc. I gcás rudaí den sórt sin, cruthaímid scripteanna ar leithligh - ascnaimh, a fhorghníomhaítear i ngach áit agus i ngach timpeallacht ar an mbealach céanna le toradh coitianta agus intuigthe. I gcás gach tasc eile, mar shampla an tionscadal a líonadh le sonraí, ba cheart modheolaíochtaí comhchosúla a úsáid.

Sampla de chur i bhfeidhm i PHP, Laravel, Laradock, Docker-Compose

PS Rinneadh na samplaí go léir ar MacOS. Tá an chuid is mó acu oiriúnach do Linux freisin. Úsáideoirí Windows, logh dom, ach níor oibrigh mé le Windows le fada an lá.

Samhlóimid cás nuair nach bhfuil aon leagan de PHP suiteáilte againn ar ár ríomhaire agus gan aon rud ar bith.
Suiteáil na leaganacha is déanaí de docker and docker-compose. (Is féidir é seo a fháil ar an Idirlíon)

docker -v && 
docker-compose -v

Forbairt feidhmchláir agus imscaradh Blue-Green, bunaithe ar mhodheolaíocht The Twelve-Factor App le samplaí i php agus docker

1. Cuir Laradock

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

Forbairt feidhmchláir agus imscaradh Blue-Green, bunaithe ar mhodheolaíocht The Twelve-Factor App le samplaí i php agus docker

Maidir le Laradock, déarfaidh mé gur rud an-fhionnuar é, ina bhfuil a lán coimeádán agus rudaí cúnta. Ach ní mholfainn Laradock a úsáid mar sin gan modhnuithe i dtáirgeadh mar gheall ar a iomarcaíocht. Tá sé níos fearr do choimeádáin féin a chruthú bunaithe ar shamplaí i Laradock, beidh sé seo i bhfad níos optamaithe, mar ní gá do dhuine ar bith gach rud atá ann ag an am céanna.

2. Cumraigh Laradock chun ár n-iarratas a rith.

cd laradock && 
cp env-example .env

Forbairt feidhmchláir agus imscaradh Blue-Green, bunaithe ar mhodheolaíocht The Twelve-Factor App le samplaí i php agus docker

2.1. Oscail an t-eolaire habr (an fillteán tuismitheora ina bhfuil laradock clónáilte) in eagarthóir éigin. (I mo chás PHPStorm)

Ag an gcéim seo ní thugaimid ach ainm don tionscadal.

Forbairt feidhmchláir agus imscaradh Blue-Green, bunaithe ar mhodheolaíocht The Twelve-Factor App le samplaí i php agus docker

2.2. Seoladh an íomhá spás oibre. (I do chás, tógfaidh sé roinnt ama na híomhánna a thógáil)
Is íomhá ullmhaithe go speisialta é spás oibre chun oibriú leis an gcreat thar ceann an fhorbróra.

Téann muid taobh istigh den choimeádán ag baint úsáide as

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

Forbairt feidhmchláir agus imscaradh Blue-Green, bunaithe ar mhodheolaíocht The Twelve-Factor App le samplaí i php agus docker

2.3. Suiteáil Laravel

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

Forbairt feidhmchláir agus imscaradh Blue-Green, bunaithe ar mhodheolaíocht The Twelve-Factor App le samplaí i php agus docker

2.4. Tar éis a shuiteáil, déanaimid seiceáil an bhfuil an t-eolaire leis an tionscadal cruthaithe agus marú cum.

ls
exit
docker-compose down

Forbairt feidhmchláir agus imscaradh Blue-Green, bunaithe ar mhodheolaíocht The Twelve-Factor App le samplaí i php agus docker

2.5. Rachaimid ar ais go PHPStorm agus socróimid an cosán ceart chuig ár bhfeidhmchlár laravel sa chomhad .env.

Forbairt feidhmchláir agus imscaradh Blue-Green, bunaithe ar mhodheolaíocht The Twelve-Factor App le samplaí i php agus docker

3. Cuir an cód go léir le Git.

Chun seo a dhéanamh, cruthóimid stór ar Github (nó áit ar bith eile). A ligean ar dul chuig an eolaire habr sa teirminéal agus a fhorghníomhú an cód seo a leanas.

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

Déanaimis seiceáil an bhfuil gach rud in ord.

Forbairt feidhmchláir agus imscaradh Blue-Green, bunaithe ar mhodheolaíocht The Twelve-Factor App le samplaí i php agus docker

Ar mhaithe le caoithiúlacht, molaim roinnt comhéadan amhairc a úsáid le haghaidh Git, i mo chás féin é GitKraken. (seo nasc atreoraithe)

4. Seolaimis!

Sula dtosaíonn tú, déan cinnte nach bhfuil aon rud ar crochadh ar chalafoirt 80 agus 443.

docker-compose up -d nginx php-fpm

Forbairt feidhmchláir agus imscaradh Blue-Green, bunaithe ar mhodheolaíocht The Twelve-Factor App le samplaí i php agus docker

Mar sin, tá 3 sheirbhís ar leith inár dtionscadal:

  • nginx - freastalaí gréasáin
  • php-fpm - php chun iarratais a fháil ó fhreastalaí gréasáin
  • spás oibre - php d'fhorbróirí

Faoi láthair, tá sé bainte amach againn go bhfuil feidhmchlár cruthaithe againn a chomhlíonann 4 phointe as 12, is iad sin:

1. Códbase — tá an cód ar fad in aon stór amháin (nóta beag: b'fhéidir go mbeadh sé ceart docker a chur taobh istigh den tionscadal laravel, ach níl sé seo tábhachtach).

2. Spleáchais - Tá ár gcuid spleáchais go léir scríofa go sainráite in application/composer.json agus i ngach Dockerfile de gach coimeádán.

3. Seirbhísí Tacaíochta — Tá a shaol féin ag gach ceann de na seirbhísí (php-fom, nignx, spás oibre) agus tá siad ceangailte ón taobh amuigh agus nuair a bhíonn siad ag obair le seirbhís amháin, ní dhéanfar aon difear don tseirbhís eile.

4. Na próisis — is próiseas amháin é gach seirbhís. Ní choimeádann gach ceann de na seirbhísí staid inmheánach.

5. Port ceangailteach

docker ps

Forbairt feidhmchláir agus imscaradh Blue-Green, bunaithe ar mhodheolaíocht The Twelve-Factor App le samplaí i php agus docker

Mar is féidir linn a fheiceáil, ritheann gach seirbhís ar a port féin agus tá rochtain ag gach seirbhís eile.

6. Comhréireacht

Ligeann Docker dúinn próisis iolracha de na seirbhísí céanna a sceitheadh ​​le cothromú ualaigh uathoibríoch eatarthu.

A ligean ar stop a chur leis na coimeádáin agus iad a reáchtáil tríd an bhratach --scála

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

Forbairt feidhmchláir agus imscaradh Blue-Green, bunaithe ar mhodheolaíocht The Twelve-Factor App le samplaí i php agus docker

Mar a fheicimid, cruthaíodh cóipeanna den choimeádán php-fpm. Ní gá dúinn aon rud a athrú agus muid ag obair leis an gcoimeádán seo. Leanaimid de bheith ag rochtain air freisin ar phort 9000, agus rialaíonn Docker an t-ualach idir coimeádáin dúinn.

7. Indiúscartha - is féidir gach coimeádán a mharú gan dochar a dhéanamh don cheann eile. Ní dhéanfaidh stopadh nó atosú an choimeádáin difear d'oibriú an fheidhmchláir le linn seoltaí ina dhiaidh sin. Is féidir gach coimeádán a ardú freisin ag am ar bith.

8. Forbairt iarratais/paireacht oibríochta - is ionann ár dtimpeallachtaí go léir. Tríd an gcóras a rith ar fhreastalaí i dtáirgeadh, ní bheidh ort aon rud a athrú i d'orduithe. Beidh gach rud bunaithe ar Docker ar an mbealach céanna.

9. Logáil — téann na logaí go léir sna coimeádáin seo chuig an sruthán agus tá siad le feiceáil sa chonsól Docker. (sa chás seo, i ndáiríre, le coimeádáin baile eile, b'fhéidir nach amhlaidh an cás mura dtugann tú aire dó)

 docker-compose logs -f

Forbairt feidhmchláir agus imscaradh Blue-Green, bunaithe ar mhodheolaíocht The Twelve-Factor App le samplaí i php agus docker

Ach tá gabháil ann go scríobhann na luachanna Réamhshocraithe i PHP agus Nginx logaí chuig comhad freisin. Chun freastal ar na 12 fachtóirí, tá sé riachtanach dícheangail logs a scríobh chuig comhad i bhfoirmíochtaí gach coimeádáin ar leithligh.

Soláthraíonn Docker freisin an cumas chun logaí a sheoladh ní hamháin chuig stdout, ach freisin le rudaí mar liathlog, a luaigh mé thuas. Agus taobh istigh den liathlog, is féidir linn na logaí a oibriú mar is toil linn agus ní thabharfaidh ár n-iarratas faoi deara ar bhealach ar bith.

10. Tascanna riaracháin — réitítear na tascanna riaracháin go léir le laravel a bhuíochas leis an uirlis cheardaithe go díreach mar is mian le cruthaitheoirí an fheidhmchláir 12 fachtóir.

Mar shampla, taispeánfaidh mé conas a dhéantar roinnt orduithe a fhorghníomhú.
Téann muid isteach sa choimeádán.

 
docker-compose exec workspace bash
php artisan list

Forbairt feidhmchláir agus imscaradh Blue-Green, bunaithe ar mhodheolaíocht The Twelve-Factor App le samplaí i php agus docker

Anois is féidir linn aon ordú a úsáid. (Tabhair faoi deara le do thoil nach ndearnamar an bunachar sonraí agus an taisce a chumrú, mar sin ní dhéanfar leath de na horduithe a fhorghníomhú i gceart, toisc go bhfuil siad deartha chun oibriú leis an taisce agus leis an mbunachar sonraí).

Forbairt feidhmchláir agus imscaradh Blue-Green, bunaithe ar mhodheolaíocht The Twelve-Factor App le samplaí i php agus docker

11. Cumraíochtaí agus 12. Tóg, scaoil, rith

Bhí mé ag iarraidh an chuid seo a thiomnú do Imscaradh Gorm-Green, ach d'éirigh sé ró-fhairsing don alt seo. Scríobhfaidh mé alt ar leith faoi seo.

Go hachomair, tá an coincheap bunaithe ar chórais CI/CD mar Jenkins и Gitlab CI. Sa dá cheann, is féidir leat athróga timpeallachta a bhaineann le timpeallacht ar leith a shocrú. Dá réir sin, sa chás seo, comhlíonfar pointe c Cumraíochtaí.

Agus an pointe faoi Tóg, scaoil, rith a réiteach le feidhmeanna tógtha leis an ainm Píblíne.

Píblíne ligeann sé duit an próiseas imscartha a roinnt ina go leor céimeanna, ag cur béime ar na céimeanna tionóil, scaoilte agus forghníomhaithe. Chomh maith leis sin i bPíblíne, is féidir leat cúltacaí a chruthú, agus go deimhin rud ar bith. Is uirlis í seo a bhfuil acmhainneacht gan teorainn aici.

Tá an cód iarratais ag Github.
Ná déan dearmad an fomhodúl a thúsú agus an stór seo á chlónáil.

PS: Is féidir na cineálacha cur chuige seo go léir a úsáid le haon fhóntais agus teangacha ríomhchlárúcháin eile. Is é an rud is mó ná nach bhfuil difríocht idir an bunúsach.

Foinse: will.com

Add a comment