Idagbasoke ohun elo ati imuṣiṣẹ Buluu-Alawọ ewe, ti o da lori ilana Ohun elo Factor mejila pẹlu awọn apẹẹrẹ ni php ati docker

Idagbasoke ohun elo ati imuṣiṣẹ Buluu-Alawọ ewe, ti o da lori ilana Ohun elo Factor mejila pẹlu awọn apẹẹrẹ ni php ati docker

Ni akọkọ, imọran kekere kan. Kini o sele Awọn mejila-ifosiwewe App?

Ni awọn ọrọ ti o rọrun, iwe-ipamọ yii jẹ apẹrẹ lati jẹ ki o rọrun fun idagbasoke awọn ohun elo SaaS, iranlọwọ nipasẹ sisọ awọn olupilẹṣẹ ati awọn onise-ẹrọ DevOps nipa awọn iṣoro ati awọn iṣe ti o wa ni igba pupọ julọ ni idagbasoke awọn ohun elo igbalode.

Iwe aṣẹ naa ni a ṣẹda nipasẹ awọn olupilẹṣẹ ti Syeed Heroku.

Ohun elo Mejila-Factor le ṣee lo si awọn ohun elo ti a kọ ni eyikeyi ede siseto ati lilo eyikeyi akojọpọ awọn iṣẹ atilẹyin (awọn aaye data, awọn ila ifiranṣẹ, awọn caches, ati bẹbẹ lọ).

Ni ṣoki nipa awọn ifosiwewe lori eyiti ilana yii da:

  1. Codebase - Ipilẹ koodu kan tọpa ni iṣakoso ẹya – awọn imuṣiṣẹ lọpọlọpọ
  2. Awọn igbẹkẹle - Sọ ni gbangba ati ya sọtọ awọn igbẹkẹle
  3. Iṣeto ni - Ṣafipamọ iṣeto ni akoko ṣiṣe
  4. Awọn iṣẹ atilẹyin - Wo awọn iṣẹ atilẹyin bi awọn orisun plug-in
  5. Kọ, tu silẹ, ṣiṣe - Yatọ si apejọ apejọ ati awọn ipele ipaniyan
  6. Awọn ilana - Ṣiṣe ohun elo naa bi ọkan tabi diẹ sii awọn ilana ti orilẹ-ede
  7. Ibudo abuda - Awọn iṣẹ okeere nipasẹ abuda ibudo
  8. Ti o jọra - Ṣe iwọn ohun elo rẹ nipa lilo awọn ilana
  9. Isọnu - Mu igbẹkẹle pọ si pẹlu ibẹrẹ iyara ati tiipa mimọ
  10. Idagbasoke ohun elo / iṣiṣẹ iṣẹ - Jeki idagbasoke rẹ, iṣeto, ati awọn agbegbe iṣelọpọ bi iru bi o ti ṣee
  11. wíwọlé - Wo akọọlẹ naa bi ṣiṣan ti awọn iṣẹlẹ
  12. Awọn iṣẹ iṣakoso - Ṣiṣe awọn iṣẹ iṣakoso / iṣakoso ni lilo awọn ilana ad hoc

O le gba alaye diẹ sii nipa awọn ifosiwewe 12 lati awọn orisun wọnyi:

Kini imuṣiṣẹ Blue-Green?

Gbigbe Blue-Green jẹ ọna ti jiṣẹ ohun elo kan si gbóògì ni iru ọna ti alabara ipari ko rii eyikeyi awọn ayipada ni apakan rẹ. Ni awọn ọrọ miiran, fifi ohun elo ranṣẹ pẹlu odo igba akoko.

Eto BG Deploy Ayebaye dabi eyiti o han ninu aworan ni isalẹ.

Idagbasoke ohun elo ati imuṣiṣẹ Buluu-Alawọ ewe, ti o da lori ilana Ohun elo Factor mejila pẹlu awọn apẹẹrẹ ni php ati docker

  • Ni ibẹrẹ awọn olupin ti ara 2 wa pẹlu koodu kanna, ohun elo, iṣẹ akanṣe, ati olulana kan wa (iwọntunwọnsi).
  • Olutọpa naa ni akọkọ ṣe itọsọna gbogbo awọn ibeere si ọkan ninu awọn olupin naa (alawọ ewe).
  • Ni akoko ti o nilo lati tu silẹ lẹẹkansi, gbogbo iṣẹ akanṣe ti ni imudojuiwọn lori olupin miiran (bulu), eyiti ko ṣe lọwọlọwọ eyikeyi awọn ibeere.
  • Lẹhin ti awọn koodu ti wa ni titan buluu olupin ti ni imudojuiwọn patapata, a fun olulana ni aṣẹ lati yipada lati alawọ ewe on bulu olupin.
  • Bayi gbogbo awọn onibara wo abajade ti koodu ti nṣiṣẹ pẹlu ti bulu olupin.
  • Fun igba diẹ, alawọ ewe olupin naa n ṣiṣẹ bi ẹda afẹyinti ni ọran ti imuṣiṣẹ ti ko ni aṣeyọri si bulu olupin ati ni irú ti ikuna ati idun, awọn olulana yipada awọn olumulo san pada si alawọ ewe olupin pẹlu ẹya iduroṣinṣin atijọ, ati koodu tuntun ti firanṣẹ fun atunyẹwo ati idanwo.
  • Ati ni opin ilana, o ti ni imudojuiwọn ni ọna kanna alawọ ewe olupin. Ati lẹhin mimu dojuiwọn, olulana yipada sisan ibeere pada si alawọ ewe olupin.

Gbogbo rẹ dara pupọ ati ni wiwo akọkọ ko yẹ ki o jẹ awọn iṣoro eyikeyi pẹlu rẹ.
Ṣugbọn niwọn bi a ti n gbe ni agbaye ode oni, aṣayan pẹlu iyipada ti ara bi a ti tọka si ni ero kilasika ko baamu wa. Gba alaye silẹ fun bayi, a yoo pada si nigbamii.

Buburu ati imọran to dara

beAwọn apẹẹrẹ ti o wa ni isalẹ fihan awọn ohun elo / awọn ilana ti Mo lo, o le lo Egba eyikeyi awọn omiiran pẹlu awọn iṣẹ kanna.

Pupọ julọ awọn apẹẹrẹ yoo ni ọna kan tabi omiiran intersect pẹlu idagbasoke wẹẹbu (eyi jẹ iyalẹnu), pẹlu PHP ati Docker.

Awọn oju-iwe ti o wa ni isalẹ n pese apejuwe adaṣe ti o rọrun ti lilo awọn ifosiwewe nipa lilo awọn apẹẹrẹ kan pato; ti o ba fẹ lati ni imọ-jinlẹ diẹ sii lori koko yii, tẹle awọn ọna asopọ loke si orisun atilẹba.

1. Codebase

Lo FTP ati FileZilla lati gbe awọn faili si awọn olupin ni ẹẹkan, ma ṣe fi koodu pamọ nibikibi yatọ si lori olupin iṣelọpọ.

Ise agbese yẹ ki o nigbagbogbo ni ipilẹ koodu kan, eyini ni, gbogbo koodu wa lati ọkan Git ibi ipamọ. Awọn olupin (gbóògì, iṣeto, test1, test2...) lo koodu lati awọn ẹka ti ibi ipamọ ti o wọpọ kan. Ni ọna yii a ṣe aṣeyọri aitasera koodu.

2. Awọn igbẹkẹle

Ṣe igbasilẹ gbogbo awọn ile-ikawe ninu awọn folda taara si gbongbo iṣẹ akanṣe naa. Ṣe awọn imudojuiwọn ni irọrun nipa gbigbe koodu titun si folda pẹlu ẹya lọwọlọwọ ti ile-ikawe. Fi gbogbo awọn ohun elo pataki sori ẹrọ taara lori olupin agbalejo nibiti awọn iṣẹ 20 diẹ sii nṣiṣẹ.

Ise agbese kan yẹ ki o nigbagbogbo ni atokọ ti oye kedere ti awọn igbẹkẹle (nipasẹ awọn igbẹkẹle Mo tun tumọ si agbegbe). Gbogbo awọn igbẹkẹle gbọdọ wa ni asọye ni gbangba ati ya sọtọ.
Jẹ ká ya bi apẹẹrẹ olupilẹṣẹ и Docker.

olupilẹṣẹ - oluṣakoso package ti o fun ọ laaye lati fi awọn ile-ikawe sori ẹrọ ni PHP. Olupilẹṣẹ faye gba o lati tokasi awọn ẹya ni muna tabi alaimuṣinṣin, ati ṣalaye wọn ni gbangba. Awọn iṣẹ akanṣe 20 oriṣiriṣi le wa lori olupin ati ọkọọkan yoo ni atokọ ti ara ẹni ti awọn idii ati awọn ile-ikawe ominira ti omiiran.

Docker - IwUlO ti o fun ọ laaye lati ṣalaye ati ya sọtọ agbegbe ninu eyiti ohun elo naa yoo ṣiṣẹ. Gẹgẹ bẹ, gẹgẹbi pẹlu olupilẹṣẹ, ṣugbọn diẹ sii daradara, a le pinnu kini ohun elo naa n ṣiṣẹ pẹlu. Yan ẹya kan pato ti PHP, fi sori ẹrọ nikan awọn idii pataki fun iṣẹ akanṣe lati ṣiṣẹ, laisi fifi ohunkohun kun. Ati ṣe pataki julọ, laisi kikọlu pẹlu awọn idii ati agbegbe ti ẹrọ agbalejo ati awọn iṣẹ akanṣe miiran. Iyẹn ni, gbogbo awọn iṣẹ akanṣe lori olupin ti n ṣiṣẹ nipasẹ Docker le lo Egba eyikeyi awọn idii ati agbegbe ti o yatọ patapata.

3. Iṣeto ni

Awọn atunto itaja bi awọn iduro taara ni koodu naa. Awọn iduro lọtọ fun olupin idanwo, lọtọ fun iṣelọpọ. Di isẹ ti ohun elo ti o da lori ayika taara ni oye iṣowo ti iṣẹ akanṣe nipa lilo ti ohun miiran ba kọ.

Awọn atunto - Eyi ni ọna nikan ti awọn imuṣiṣẹ iṣẹ akanṣe yẹ ki o yatọ. Ni deede, awọn atunto yẹ ki o kọja nipasẹ awọn oniyipada ayika (env vars).

Iyẹn ni, paapaa ti o ba tọju ọpọlọpọ awọn faili atunto .config.prod .config.local ati fun lorukọ mii ni akoko imuṣiṣẹ si .config (iṣeto akọkọ lati eyiti ohun elo naa ka data) - eyi kii yoo jẹ ọna ti o tọ, niwon ninu ọran yii alaye lati awọn atunto yoo wa ni gbangba si gbogbo awọn olupilẹṣẹ ohun elo ati pe data lati ọdọ olupin iṣelọpọ yoo gbogun. Gbogbo awọn atunto gbọdọ wa ni ipamọ taara ni eto imuṣiṣẹ (CI / CD) ati ipilẹṣẹ fun awọn agbegbe oriṣiriṣi pẹlu awọn iye oriṣiriṣi pataki fun agbegbe kan pato ni akoko imuṣiṣẹ.

4. Kẹta Awọn iṣẹ

Ti so mọ agbegbe ni muna, lo awọn asopọ oriṣiriṣi fun awọn iṣẹ kanna ni awọn agbegbe kan.

Ni otitọ, aaye yii ni agbara pupọ pẹlu aaye nipa awọn atunto, nitori laisi aaye yii, data iṣeto deede ko le ṣe ati, ni gbogbogbo, agbara lati tunto yoo ṣubu si asan.

Gbogbo awọn asopọ si awọn iṣẹ ita, gẹgẹbi awọn olupin ti isinyi, awọn apoti isura infomesonu, awọn iṣẹ caching, gbọdọ jẹ kanna fun agbegbe agbegbe ati agbegbe ẹni-kẹta / iṣelọpọ. Ni awọn ọrọ miiran, ni eyikeyi akoko, nipa yiyipada okun asopọ, Mo le rọpo awọn ipe si ipilẹ #1 pẹlu ipilẹ #2 laisi iyipada koodu ohun elo. Tabi, nwa niwaju, bi apẹẹrẹ, nigba ti iwọn iṣẹ naa, iwọ kii yoo ni lati pato asopọ ni ọna pataki fun olupin kaṣe afikun.

5. Kọ, tu silẹ, ṣiṣẹ

Ni nikan ni ik ti ikede ti awọn koodu lori olupin, pẹlu ko si anfani ti yiyi pada awọn Tu. Ko si ye lati kun aaye disk. Ẹnikẹni ti o ba ro pe wọn le tu koodu sinu iṣelọpọ pẹlu aṣiṣe jẹ oluṣeto buburu!

Gbogbo awọn ipele ti imuṣiṣẹ gbọdọ wa niya lati ara wọn.

Ni aye lati yipo pada. Ṣe awọn idasilẹ pẹlu awọn ẹda atijọ ti ohun elo (ti o ti ṣajọpọ ati ṣetan fun ogun) ti o fipamọ ni wiwọle yara yara, nitorinaa ti awọn aṣiṣe ba le mu ẹya atijọ pada. Iyẹn ni, ni majemu nibẹ ni folda kan tu silẹ ati folda lọwọlọwọ, ati lẹhin imuṣiṣẹ aṣeyọri ati apejọ folda naa lọwọlọwọ ti sopọ nipasẹ ọna asopọ aami si itusilẹ tuntun ti o wa ninu tu silẹ pẹlu awọn mora orukọ ti awọn Tu nọmba.

Eyi ni ibiti a ti ranti imuṣiṣẹ Blue-Green, eyiti o fun ọ laaye kii ṣe lati yipada laarin koodu nikan, ṣugbọn lati yipada laarin gbogbo awọn orisun ati paapaa awọn agbegbe pẹlu agbara lati yi ohun gbogbo pada.

6. Awọn ilana

Tọju data ipo ohun elo taara laarin ohun elo funrararẹ. Lo awọn akoko ni Ramu ti ohun elo funrararẹ. Lo pinpin pupọ laarin awọn iṣẹ ẹnikẹta bi o ti ṣee. Gbekele otitọ pe ohun elo le ni ilana kan nikan ati pe ko gba laaye fun iwọn.

Nipa awọn akoko, tọju data nikan ni kaṣe ti iṣakoso nipasẹ awọn iṣẹ ẹnikẹta (memcached, redis), nitorinaa ti o ba ni awọn ilana ohun elo 20 ti n ṣiṣẹ, eyikeyi ninu wọn, ti wọle si kaṣe, yoo ni anfani lati tẹsiwaju ṣiṣẹ pẹlu alabara ni ipo kanna ni eyiti olumulo n ṣiṣẹ pẹlu ohun elo ni ilana miiran. Pẹlu ọna yii, o wa pe laibikita iye awọn ẹda ti awọn iṣẹ ẹnikẹta ti o lo, ohun gbogbo yoo ṣiṣẹ ni deede ati laisi awọn iṣoro pẹlu iraye si data.

7. Ibudo abuda

Olupin wẹẹbu nikan ni o yẹ ki o mọ bi o ṣe le ṣiṣẹ pẹlu awọn iṣẹ ẹnikẹta. Tabi dara julọ sibẹsibẹ, fi sori ẹrọ awọn iṣẹ ẹnikẹta taara inu olupin wẹẹbu naa. Fun apẹẹrẹ, bi module PHP ni Apache.
Gbogbo awọn iṣẹ rẹ gbọdọ wa si ara wọn nipasẹ iraye si adirẹsi ati ibudo (localgost: 5432, localhost: 3000, nginx: 80, php-fpm: 9000), iyẹn, lati nginx Mo le wọle si mejeeji php-fpm ati si postgres, ati lati php-fpm si postgres ati nginx ati ni otitọ lati iṣẹ kọọkan Mo le wọle si iṣẹ miiran. Ni ọna yii, ṣiṣeeṣe ti iṣẹ kan ko ni asopọ si ṣiṣeeṣe ti iṣẹ miiran.

8. Parallelism

Ṣiṣẹ pẹlu ilana kan, bibẹẹkọ awọn ilana pupọ kii yoo ni anfani lati ni ibamu pẹlu ara wọn!

Fi aaye silẹ fun wiwọn. Docker swarm jẹ nla fun eyi.
Docker Swarm jẹ ohun elo fun ṣiṣẹda ati ṣiṣakoso awọn iṣupọ ti awọn apoti mejeeji laarin awọn ẹrọ oriṣiriṣi ati opo awọn apoti lori ẹrọ kanna.

Lilo swarm, Mo le pinnu iye awọn orisun ti Emi yoo pin si ilana kọọkan ati iye awọn ilana ti iṣẹ kanna ti Emi yoo ṣe ifilọlẹ, ati iwọntunwọnsi inu, gbigba data lori ibudo ti a fun, yoo jẹ aṣoju laifọwọyi si awọn ilana naa. Nitorinaa, ri pe fifuye lori olupin naa ti pọ si, Mo le ṣafikun awọn ilana diẹ sii, nitorinaa idinku fifuye lori awọn ilana kan.

9. Disposability

Ma ṣe lo awọn ila lati ṣiṣẹ pẹlu awọn ilana ati data. Pa ọkan ilana yẹ ki o ni ipa lori gbogbo ohun elo. Ti iṣẹ kan ba lọ silẹ, ohun gbogbo lọ silẹ.

Ilana ati iṣẹ kọọkan le wa ni pipa nigbakugba ati eyi ko yẹ ki o kan awọn iṣẹ miiran (dajudaju, eyi ko tumọ si pe iṣẹ naa kii yoo wa fun iṣẹ miiran, ṣugbọn pe iṣẹ miiran kii yoo pa lẹhin eyi). Gbogbo awọn ilana gbọdọ wa ni fopin si oore-ọfẹ, nitorina nigbati wọn ba ti pari, ko si data ti yoo bajẹ ati pe eto naa yoo ṣiṣẹ ni deede nigbamii ti o ba tan-an. Iyẹn ni, paapaa ni iṣẹlẹ ti ifopinsi pajawiri, data ko yẹ ki o bajẹ (ilana iṣowo dara nibi, awọn ibeere ninu ibi ipamọ data ṣiṣẹ nikan ni awọn ẹgbẹ, ati pe ti o ba kere ju ibeere kan lati ẹgbẹ ba kuna tabi ti ṣiṣẹ pẹlu aṣiṣe, lẹhinna ko si ibeere miiran lati ọdọ ẹgbẹ nikẹhin kuna ni otitọ).

10. Idagbasoke ohun elo / iṣiṣẹ iṣẹ

Ṣiṣejade, iṣeto ati ẹya agbegbe ti ohun elo gbọdọ yatọ. Ninu iṣelọpọ a lo ilana Yii Lite, ati agbegbe Yii, ki o ṣiṣẹ ni iyara ni iṣelọpọ!

Ni otitọ, gbogbo awọn imuṣiṣẹ ati iṣẹ pẹlu koodu yẹ ki o wa ni agbegbe ti o jọra (a ko sọrọ nipa ohun elo ti ara). Paapaa, oṣiṣẹ idagbasoke eyikeyi yẹ ki o ni anfani lati fi koodu ranṣẹ si iṣelọpọ ti o ba jẹ dandan, kii ṣe diẹ ninu awọn ẹka ti o ni ikẹkọ pataki, eyiti o ṣeun nikan si agbara pataki le gbe ohun elo naa sinu iṣelọpọ.

Docker tun ṣe iranlọwọ fun wa pẹlu eyi. Ti gbogbo awọn aaye ti tẹlẹ ba ṣe akiyesi, lilo docker yoo mu ilana ti imuṣiṣẹ agbegbe mejeeji lori iṣelọpọ ati lori ẹrọ agbegbe lati titẹ ọkan tabi meji awọn aṣẹ.

11. Awọn akọọlẹ

A kọ awọn akọọlẹ si awọn faili ati awọn apoti isura infomesonu! A ko nu awọn faili ati awọn apoti isura infomesonu lati awọn akọọlẹ. Jẹ ki a kan ra dirafu lile pẹlu 9000 Peta baiti ati pe o dara.

Gbogbo awọn akọọlẹ yẹ ki o gbero bi ṣiṣan ti awọn iṣẹlẹ. Ohun elo funrararẹ ko yẹ ki o ni ipa ninu awọn iforukọsilẹ ṣiṣe. Awọn iforukọsilẹ yẹ ki o jade boya si stdout tabi firanṣẹ nipasẹ ilana kan gẹgẹbi udp, nitorinaa ṣiṣẹ pẹlu awọn akọọlẹ ko ṣẹda awọn iṣoro eyikeyi fun ohun elo naa. graylog dara fun eyi. Greylog gbigba gbogbo awọn igbasilẹ nipasẹ udp (ilana yii ko nilo iduro fun esi nipa gbigba aṣeyọri ti apo-iwe) ko dabaru pẹlu ohun elo ni ọna eyikeyi ati pe o kan pẹlu iṣeto ati awọn igbasilẹ ṣiṣe. Imọye ohun elo ko yipada lati ṣiṣẹ pẹlu iru awọn isunmọ.

12. Isakoso awọn iṣẹ-ṣiṣe

Lati ṣe imudojuiwọn data, awọn apoti isura infomesonu, ati bẹbẹ lọ, lo aaye ipari ti a ṣẹda lọtọ ni API, ṣiṣe rẹ ni awọn akoko 2 ni ọna kan yoo mu ki ohun gbogbo ṣe ẹda. Ṣugbọn iwọ kii ṣe aṣiwere, iwọ kii yoo tẹ lẹẹmeji, ati pe a ko nilo ijira.

Gbogbo awọn iṣẹ ṣiṣe iṣakoso yẹ ki o ṣee ṣe ni agbegbe kanna bi gbogbo koodu, ni ipele itusilẹ. Iyẹn ni, ti a ba nilo lati yi ọna ipilẹ data pada, lẹhinna a kii yoo ṣe pẹlu ọwọ nipa yiyipada awọn orukọ awọn ọwọn ati ṣafikun awọn tuntun nipasẹ diẹ ninu awọn irinṣẹ iṣakoso data wiwo. Fun iru awọn nkan bẹẹ, a ṣẹda awọn iwe afọwọkọ lọtọ - awọn iṣipopada, eyiti a ṣe ni ibi gbogbo ati ni gbogbo awọn agbegbe ni ọna kanna pẹlu abajade ti o wọpọ ati oye. Fun gbogbo awọn iṣẹ ṣiṣe miiran, gẹgẹbi kikun iṣẹ akanṣe pẹlu data, awọn ilana ti o jọra yẹ ki o lo.

Apẹẹrẹ imuse ni PHP, Laravel, Laradock, Docker-Compose

PS Gbogbo awọn apẹẹrẹ ni a ṣe lori MacOS. Pupọ ninu wọn tun dara fun Linux. Awọn olumulo Windows, dariji mi, ṣugbọn Emi ko ṣiṣẹ pẹlu Windows fun igba pipẹ.

Jẹ ki a fojuinu ipo kan nibiti a ko ni ẹya eyikeyi ti PHP ti a fi sori PC wa ati pe ko si nkankan rara.
Fi sori ẹrọ awọn ẹya tuntun ti docker ati docker-compose. (Eyi le rii lori Intanẹẹti)

docker -v && 
docker-compose -v

Idagbasoke ohun elo ati imuṣiṣẹ Buluu-Alawọ ewe, ti o da lori ilana Ohun elo Factor mejila pẹlu awọn apẹẹrẹ ni php ati docker

1. A fi Laradock

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

Idagbasoke ohun elo ati imuṣiṣẹ Buluu-Alawọ ewe, ti o da lori ilana Ohun elo Factor mejila pẹlu awọn apẹẹrẹ ni php ati docker

Nipa Laradock, Emi yoo sọ pe o jẹ ohun ti o tutu pupọ, eyiti o ni ọpọlọpọ awọn apoti ati awọn ohun elo iranlọwọ. Ṣugbọn Emi kii yoo ṣeduro lilo Laradock bii iru laisi awọn iyipada ni iṣelọpọ nitori apọju rẹ. O dara lati ṣẹda awọn apoti ti ara rẹ ti o da lori awọn apẹẹrẹ ni Laradock, eyi yoo jẹ iṣapeye diẹ sii, nitori ko si ẹnikan ti o nilo ohun gbogbo ti o wa ni akoko kanna.

2. Tunto Laradock lati ṣiṣẹ ohun elo wa.

cd laradock && 
cp env-example .env

Idagbasoke ohun elo ati imuṣiṣẹ Buluu-Alawọ ewe, ti o da lori ilana Ohun elo Factor mejila pẹlu awọn apẹẹrẹ ni php ati docker

2.1. Ṣii iwe ilana habr (folda obi ti o wa ninu eyiti laradock ti di cloned) ni diẹ ninu awọn olootu. (Ninu ọran PHPStorm mi)

Ni ipele yii a fun iṣẹ naa nikan ni orukọ.

Idagbasoke ohun elo ati imuṣiṣẹ Buluu-Alawọ ewe, ti o da lori ilana Ohun elo Factor mejila pẹlu awọn apẹẹrẹ ni php ati docker

2.2. Lọlẹ aworan aaye iṣẹ. (Ninu ọran rẹ, awọn aworan yoo gba akoko diẹ lati kọ)
Aaye iṣẹ jẹ aworan ti a pese silẹ ni pataki fun ṣiṣẹ pẹlu ilana ni ipo ti olupilẹṣẹ.

A lọ sinu apoti nipa lilo

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

Idagbasoke ohun elo ati imuṣiṣẹ Buluu-Alawọ ewe, ti o da lori ilana Ohun elo Factor mejila pẹlu awọn apẹẹrẹ ni php ati docker

2.3. Fifi Laravel sori ẹrọ

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

Idagbasoke ohun elo ati imuṣiṣẹ Buluu-Alawọ ewe, ti o da lori ilana Ohun elo Factor mejila pẹlu awọn apẹẹrẹ ni php ati docker

2.4. Lẹhin fifi sori, a ṣayẹwo boya awọn liana pẹlu ise agbese ti a ti ṣẹda ki o si pa compose.

ls
exit
docker-compose down

Idagbasoke ohun elo ati imuṣiṣẹ Buluu-Alawọ ewe, ti o da lori ilana Ohun elo Factor mejila pẹlu awọn apẹẹrẹ ni php ati docker

2.5. Jẹ ki a pada si PHPStorm ki a ṣeto ọna ti o tọ si ohun elo laravel wa ninu faili .env.

Idagbasoke ohun elo ati imuṣiṣẹ Buluu-Alawọ ewe, ti o da lori ilana Ohun elo Factor mejila pẹlu awọn apẹẹrẹ ni php ati docker

3. Fi gbogbo koodu kun Git.

Lati ṣe eyi, a yoo ṣẹda ibi ipamọ kan lori Github (tabi nibikibi miiran). Jẹ ki a lọ si itọsọna habr ni ebute ki o ṣiṣẹ koodu atẹle.

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

Jẹ ká ṣayẹwo ti o ba ti ohun gbogbo ni ibere.

Idagbasoke ohun elo ati imuṣiṣẹ Buluu-Alawọ ewe, ti o da lori ilana Ohun elo Factor mejila pẹlu awọn apẹẹrẹ ni php ati docker

Fun irọrun, Mo ṣeduro lilo diẹ ninu wiwo wiwo fun Git, ninu ọran mi o jẹ GitKraken. (eyi ni ọna asopọ itọkasi)

4. Jẹ ká lọlẹ!

Ṣaaju ki o to bẹrẹ, rii daju pe ko si ohun ti o wa ni ori awọn ibudo 80 ati 443.

docker-compose up -d nginx php-fpm

Idagbasoke ohun elo ati imuṣiṣẹ Buluu-Alawọ ewe, ti o da lori ilana Ohun elo Factor mejila pẹlu awọn apẹẹrẹ ni php ati docker

Nitorinaa, iṣẹ akanṣe wa ni awọn iṣẹ lọtọ mẹta:

  • nginx - olupin ayelujara
  • php-fpm - php fun gbigba awọn ibeere lati ọdọ olupin wẹẹbu kan
  • aaye iṣẹ - php fun awọn olupilẹṣẹ

Ni akoko yii, a ti ṣaṣeyọri pe a ti ṣẹda ohun elo kan ti o pade awọn aaye 4 ninu 12, eyun:

1. Codebase - gbogbo koodu wa ni ibi ipamọ kan (akọsilẹ kekere: o le jẹ deede lati ṣafikun docker inu iṣẹ akanṣe laravel, ṣugbọn eyi kii ṣe pataki).

2. Awọn igbẹkẹle - Gbogbo awọn igbẹkẹle wa ni a kọ ni gbangba ni ohun elo / composer.json ati ni Dockerfile kọọkan ti eiyan kọọkan.

3. Awọn iṣẹ atilẹyin - Ọkọọkan awọn iṣẹ naa (php-fom, nignx, aaye iṣẹ) n gbe igbesi aye tirẹ ati ti sopọ lati ita ati nigbati o ba ṣiṣẹ pẹlu iṣẹ kan, ekeji kii yoo ni ipa.

4. Awọn ilana - iṣẹ kọọkan jẹ ilana kan. Ọkọọkan awọn iṣẹ naa ko ṣetọju ipo inu.

5. Ibudo abuda

docker ps

Idagbasoke ohun elo ati imuṣiṣẹ Buluu-Alawọ ewe, ti o da lori ilana Ohun elo Factor mejila pẹlu awọn apẹẹrẹ ni php ati docker

Bi a ti le rii, iṣẹ kọọkan nṣiṣẹ lori ibudo tirẹ ati pe o wa si gbogbo awọn iṣẹ miiran.

6. Ti o jọra

Docker gba wa laaye lati fa awọn ilana pupọ ti awọn iṣẹ kanna pẹlu iwọntunwọnsi fifuye laifọwọyi laarin wọn.

Jẹ ki a da awọn apoti duro ati ṣiṣe wọn nipasẹ asia --iwọn

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

Idagbasoke ohun elo ati imuṣiṣẹ Buluu-Alawọ ewe, ti o da lori ilana Ohun elo Factor mejila pẹlu awọn apẹẹrẹ ni php ati docker

Gẹgẹbi a ti le rii, awọn ẹda ti ṣẹda ti apoti php-fpm. A ko nilo lati yi ohunkohun pada ni ṣiṣẹ pẹlu eiyan yii. A tun tẹsiwaju lati wọle si lori ibudo 9000, ati Docker ṣe ilana fifuye laarin awọn apoti fun wa.

7. Isọnu - eiyan kọọkan le pa laisi ipalara fun ekeji. Idaduro tabi tun bẹrẹ apoti kii yoo ni ipa lori iṣẹ ohun elo lakoko awọn ifilọlẹ atẹle. Kọọkan eiyan le tun ti wa ni gbe ni eyikeyi akoko.

8. Idagbasoke ohun elo / iṣiṣẹ iṣẹ - gbogbo awọn agbegbe wa jẹ kanna. Nipa ṣiṣe eto lori olupin ni iṣelọpọ, iwọ kii yoo ni lati yi ohunkohun pada ninu awọn aṣẹ rẹ. Ohun gbogbo yoo da lori Docker ni ọna kanna.

9. wíwọlé - gbogbo awọn akọọlẹ inu awọn apoti wọnyi lọ si ṣiṣan ati pe o han ni console Docker. (ninu ọran yii, ni otitọ, pẹlu awọn apoti miiran ti ile, eyi le ma jẹ ọran ti o ko ba tọju rẹ)

 docker-compose logs -f

Idagbasoke ohun elo ati imuṣiṣẹ Buluu-Alawọ ewe, ti o da lori ilana Ohun elo Factor mejila pẹlu awọn apẹẹrẹ ni php ati docker

Ṣugbọn apeja kan wa ni pe awọn iye Aiyipada ni PHP ati Nginx tun kọ awọn akọọlẹ si faili kan. Lati pade awọn ifosiwewe 12, o jẹ dandan mu ṣiṣẹ kikọ awọn akọọlẹ si faili kan ninu awọn atunto ti eiyan kọọkan lọtọ.

Docker tun pese agbara lati firanṣẹ awọn akọọlẹ kii ṣe si stdout nikan, ṣugbọn si awọn nkan bii greylog, eyiti Mo mẹnuba loke. Ati inu graylog, a le ṣiṣẹ awọn igbasilẹ bi a ṣe fẹ ati pe ohun elo wa kii yoo ṣe akiyesi eyi ni eyikeyi ọna.

10. Awọn iṣẹ iṣakoso - gbogbo awọn iṣẹ ṣiṣe iṣakoso ni ipinnu nipasẹ laravel ọpẹ si ohun elo oniṣọna gangan bi awọn olupilẹṣẹ ti ohun elo ifosiwewe 12 yoo fẹ.

Gẹgẹbi apẹẹrẹ, Emi yoo ṣe afihan bi a ṣe n ṣiṣẹ diẹ ninu awọn aṣẹ.
A lọ sinu apoti.

 
docker-compose exec workspace bash
php artisan list

Idagbasoke ohun elo ati imuṣiṣẹ Buluu-Alawọ ewe, ti o da lori ilana Ohun elo Factor mejila pẹlu awọn apẹẹrẹ ni php ati docker

Bayi a le lo eyikeyi aṣẹ. (jọwọ ṣe akiyesi pe a ko tunto ibi ipamọ data ati kaṣe, nitorinaa idaji awọn aṣẹ kii yoo ṣiṣẹ ni deede, nitori wọn ṣe apẹrẹ lati ṣiṣẹ pẹlu kaṣe ati ibi ipamọ data).

Idagbasoke ohun elo ati imuṣiṣẹ Buluu-Alawọ ewe, ti o da lori ilana Ohun elo Factor mejila pẹlu awọn apẹẹrẹ ni php ati docker

11. Awọn atunto ati 12. Kọ, tu silẹ, ṣiṣe

Mo fẹ lati ya apakan yii si Imuṣiṣẹpọ Blue-Green, ṣugbọn o yipada lati jẹ sanlalu pupọ fun nkan yii. Emi yoo kọ nkan lọtọ nipa eyi.

Ni kukuru, ero naa da lori awọn eto CI/CD bii Jenkins и Gitlab CI. Ninu awọn mejeeji, o le ṣeto awọn oniyipada ayika ti o ni nkan ṣe pẹlu agbegbe kan pato. Gẹgẹ bẹ, ni ipo yii, aaye c yoo ṣẹ Awọn atunto.

Ati ojuami nipa Kọ, tu silẹ, ṣiṣe ni ipinnu nipasẹ awọn iṣẹ ti a ṣe sinu pẹlu orukọ Pipeline.

Pipeline gba ọ laaye lati pin ilana imuṣiṣẹ si ọpọlọpọ awọn ipele, ti o ṣe afihan awọn ipele ti apejọ, idasilẹ ati ipaniyan. Paapaa ni Pipeline, o le ṣẹda awọn afẹyinti, ati nitootọ ohunkohun. Eyi jẹ ọpa pẹlu agbara ailopin.

Koodu ohun elo wa ni Github.
Maṣe gbagbe lati pilẹṣẹ submodule nigbati o ba n pa ibi-ipamọ yii pọ.

PS: Gbogbo awọn ọna wọnyi le ṣee lo pẹlu awọn ohun elo miiran ati awọn ede siseto. Ohun akọkọ ni pe pataki ko yatọ.

orisun: www.habr.com

Fi ọrọìwòye kun