Devlopman aplikasyon ak deplwaman Blue-Green, ki baze sou metodoloji The Twelve-Factor App ak egzanp nan php ak docker.

Devlopman aplikasyon ak deplwaman Blue-Green, ki baze sou metodoloji The Twelve-Factor App ak egzanp nan php ak docker.

Premyèman, yon ti teyori. Sa ki te pase App a Douz Faktè?

Nan mo senp, dokiman sa a fèt pou senplifye devlopman aplikasyon SaaS, ede nan enfòme devlopè yo ak enjenyè DevOps sou pwoblèm ak pratik ki pi souvan rankontre nan devlopman aplikasyon modèn yo.

Dokiman an te kreye pa devlopè platfòm Heroku a.

Aplikasyon Douz Faktè a ka aplike nan aplikasyon ki ekri nan nenpòt langaj pwogramasyon epi lè l sèvi avèk nenpòt konbinezon sèvis sipò (baz done, ke moun kap kriye mesaj, kachèt, elatriye).

Yon ti tan sou faktè ki baze sou metodoloji sa a:

  1. Kodbaz - Yon kodbaz swiv nan kontwòl vèsyon - deplwaman miltip
  2. Depandans – Ekspliziteman deklare ak izole depandans
  3. Konfigirasyon - Sove konfigirasyon nan ègzekutabl
  4. Sèvis fè bak – Konsidere sèvis sipò kòm resous plug-in
  5. Bati, lage, kouri – Fè egzateman separe etap yo asanble ak ekzekisyon
  6. Pwosesis yo – Kouri aplikasyon an kòm youn oswa plizyè pwosesis apatrid
  7. Port obligatwa – Ekspòtasyon sèvis atravè pò obligatwa
  8. Concurrency – Echèl aplikasyon w lan lè l sèvi avèk pwosesis
  9. Disposability - Maksimize fyab ak demaraj rapid ak fèmen pwòp
  10. Devlopman aplikasyon/parite operasyon – Kenbe anviwònman devlopman, sèn, ak pwodiksyon ou menm jan posib
  11. Logging - Gade boutèy demi lit la kòm yon kouran evènman yo
  12. Travay administrasyon yo – Fè travay administrasyon/jesyon lè l sèvi avèk pwosesis ad hoc

Ou ka jwenn plis enfòmasyon sou 12 faktè yo nan resous sa yo:

Ki sa ki deplwaman Blue-Green?

Blue-Green deplwaman se yon metòd pou bay yon aplikasyon pou pwodiksyon nan yon fason ke kliyan final la pa wè okenn chanjman sou pati li. Nan lòt mo, deplwaye yon aplikasyon ki gen zewo D '.

Konplo klasik BG Deploy la sanble ak sa ki montre nan imaj ki anba a.

Devlopman aplikasyon ak deplwaman Blue-Green, ki baze sou metodoloji The Twelve-Factor App ak egzanp nan php ak docker.

  • Nan kòmansman an gen 2 serveurs fizik ki gen absoliman menm kòd, aplikasyon, pwojè, epi gen yon routeur (balancer).
  • Routeur la okòmansman dirije tout demann nan youn nan sèvè yo (vèt).
  • Nan moman sa a lè ou bezwen lage ankò, tout pwojè a mete ajou sou yon lòt sèvè (ble), ki pa kounye a ap trete okenn demann.
  • Apre kòd la sou li ble sèvè konplètman mete ajou, routeur la bay yon lòd pou chanje soti nan vèt sou ble sèvè.
  • Koulye a, tout kliyan wè rezilta a nan kòd la kouri ak ble sèvè.
  • Depi kèk tan, vèt sèvè a sèvi kòm yon backup nan ka deplwaman san siksè nan ble sèvè ak nan ka ta gen echèk ak pinèz, routeur la chanje koule itilizatè a tounen nan vèt sèvè ak ansyen vèsyon ki estab, epi yo voye nouvo kòd la pou revizyon ak tès.
  • Ak nan fen pwosesis la, li se mete ajou nan menm fason an vèt sèvè. Epi apre mete ajou li, routeur la chanje koule demann lan tounen nan vèt sèvè.

Li tout sanble trè bon ak nan premye gade pa ta dwe gen okenn pwoblèm ak li.
Men, depi nou ap viv nan mond lan modèn, opsyon a ak chanjman fizik jan sa endike nan konplo klasik la pa kostim nou. Anrejistre enfòmasyon an pou kounye a, nou pral retounen sou li pita.

Move ak bon konsèy

Avètisman: Egzanp ki anba yo montre sèvis piblik/metodoloji ke mwen itilize, ou ka itilize absoliman nenpòt altènativ ak fonksyon menm jan an.

Pifò nan egzanp yo pral nan yon fason oswa yon lòt kwaze ak devlopman entènèt (sa a se yon sipriz), ak PHP ak Docker.

Paragraf ki anba yo bay yon senp deskripsyon pratik sou itilizasyon faktè lè l sèvi avèk egzanp espesifik; si ou vle jwenn plis teyori sou sijè sa a, swiv lyen ki anwo yo nan sous orijinal la.

1. Codebase

Sèvi ak FTP ak FileZilla pou telechaje fichye yo sou sèvè yo youn pa youn, pa sere kòd la nenpòt kote lòt pase sou sèvè pwodiksyon an.

Pwojè a ta dwe toujou gen yon sèl baz kòd, se sa ki, tout kòd soti nan yon sèl ale depo. Sèvè (pwodiksyon, staging, test1, test2...) sèvi ak kòd ki soti nan branch nan yon sèl depo komen. Nan fason sa a nou reyalize konsistans kòd.

2. Depandans

Telechaje tout bibliyotèk nan dosye dirèkteman nan rasin pwojè a. Fè mizajou tou senpleman pa transfere nouvo kòd la nan katab la ak vèsyon aktyèl la nan bibliyotèk la. Enstale tout sèvis piblik ki nesesè yo dirèkteman sou sèvè lame a kote 20 plis sèvis ap kouri.

Yon pwojè ta dwe toujou gen yon lis depandans klèman konprann (pa depandans mwen vle di tou anviwònman an). Tout depandans yo dwe klèman defini ak izole.
Ann pran kòm egzanp konpozitè и Koupre.

konpozitè — yon manadjè pake ki pèmèt ou enstale bibliyotèk nan PHP. Composer pèmèt ou presize vèsyon entèdi oswa lach, epi klèman defini yo. Ka gen 20 pwojè diferan sou sèvè a epi chak pral gen yon lis pèsonèl pakè ak bibliyotèk endepandan de lòt la.

Koupre — yon sèvis piblik ki pèmèt ou defini ak izole anviwònman kote aplikasyon an pral kouri. An konsekans, jis tankou ak konpozitè, men pi byen, nou ka detèmine kisa aplikasyon an ap travay ak. Chwazi yon vèsyon espesifik nan PHP, enstale sèlman pakè ki nesesè pou pwojè a travay, san yo pa ajoute anyen anplis. Ak sa ki pi enpòtan, san yo pa entèfere ak pakè yo ak anviwònman nan machin nan lame ak lòt pwojè. Sa vle di, tout pwojè sou sèvè ki kouri atravè Docker ka itilize absoliman nenpòt seri pakè ak yon anviwònman konplètman diferan.

3. Konfigirasyon

Sere konfigirasyon yo kòm konstan dirèkteman nan kòd la. Konstan separe pou sèvè tès la, separe pou pwodiksyon an. Mare operasyon an nan aplikasyon an depann sou anviwònman an dirèkteman nan lojik biznis la nan pwojè a lè l sèvi avèk si lòt bagay konstwi.

Konfigirasyon - sa a se sèl fason ke deplwaman pwojè yo ta dwe diferan. Idealman, konfigirasyon yo ta dwe pase nan varyab anviwònman yo (vars env).

Sa vle di, menm si ou estoke plizyè fichye konfigirasyon .config.prod .config.local epi chanje non yo nan moman deplwaman an .config (konfigirasyon prensipal ki soti nan aplikasyon an li done) - sa a pa pral bon apwòch la, depi nan ka sa a enfòmasyon ki soti nan konfigirasyon yo pral piblikman disponib nan tout devlopè aplikasyon yo ak done ki soti nan sèvè pwodiksyon an pral konpwomèt. Tout konfigirasyon yo dwe estoke dirèkteman nan sistèm deplwaman an (CI/CD) epi yo dwe pwodwi pou diferan anviwònman ak diferan valè ki nesesè pou yon anviwònman espesifik nan moman deplwaman an.

4. Sèvis Twazyèm Pati

Fè entèdi mare nan anviwònman an, sèvi ak koneksyon diferan pou menm sèvis yo nan sèten anviwònman.

An reyalite, pwen sa a fòtman sipèpoze ak pwen an sou konfigirasyon, depi san pwen sa a, done konfigirasyon nòmal pa ka fèt epi, an jeneral, kapasite nan konfigirasyon pral tonbe nan anyen.

Tout koneksyon ak sèvis ekstèn, tankou sèvè keu, baz done, sèvis kachèt, dwe menm bagay la tou pou anviwònman lokal la ak anviwònman twazyèm pati / pwodiksyon an. Nan lòt mo, nenpòt ki lè, lè m chanje kòd koneksyon an, mwen ka ranplase apèl nan baz #1 ak baz #2 san yo pa chanje kòd aplikasyon an. Oswa, gade pi devan, kòm yon egzanp, lè dekale sèvis la, ou pa pral bezwen presize koneksyon an nan nenpòt fason espesyal pou yon sèvè kachèt adisyonèl.

5. Bati, lage, egzekite

Gen sèlman vèsyon final la nan kòd la sou sèvè a, ki pa gen okenn chans pou woule tounen liberasyon an. Pa bezwen ranpli espas disk. Nenpòt moun ki panse ke yo ka lage kòd nan pwodiksyon ak yon erè se yon pwogramè move!

Tout etap deplwaman yo dwe separe youn ak lòt.

Gen yon chans pou woule tounen. Fè degaje ak ansyen kopi aplikasyon an (deja reyini ak pare pou batay) sove nan aksè rapid, pou ke nan ka ta gen erè ou ka retabli vèsyon an fin vye granmoun. Sa vle di, kondisyonèl gen yon katab degaje ak katab aktyèl, ak apre siksè deplwaman ak asanble katab la aktyèl lye pa yon lyen senbolik nan nouvo lage ki chita anndan an degaje ak non konvansyonèl nimewo lage a.

Sa a se kote nou sonje deplwaman Blue-Green, ki pèmèt ou pa sèlman chanje ant kòd, men tou, chanje ant tout resous ak menm anviwònman ak kapasite nan woule tounen tout bagay.

6. Pwosesis

Sere done eta aplikasyon an dirèkteman nan aplikasyon an li menm. Sèvi ak sesyon yo nan RAM aplikasyon an tèt li. Sèvi ak anpil pataje ant sèvis twazyèm pati ke posib. Konte sou lefèt ke aplikasyon an ka gen sèlman yon pwosesis epi yo pa pèmèt pou dekale.

Konsènan sesyon yo, sere done sèlman nan yon kachèt ki kontwole pa sèvis twazyèm pati (memcached, redis), kidonk menm si ou gen 20 pwosesis aplikasyon kouri, nenpòt nan yo, ki gen aksè nan kachèt la, yo pral kapab kontinye travay ak kliyan an nan menm eta a nan ki itilizatè a te travay ak aplikasyon an nan yon lòt pwosesis. Avèk apwòch sa a, li sanble ke kèlkeswa kopi sèvis twazyèm pati ou itilize, tout bagay pral travay nòmalman epi san pwoblèm ak aksè nan done yo.

7. Port obligatwa

Se sèlman sèvè entènèt la ki ta dwe konnen ki jan yo travay ak sèvis twazyèm pati. Oswa pi byen toujou, enstale sèvis twazyèm pati dirèkteman andedan sèvè entènèt la. Pou egzanp, kòm yon modil PHP nan Apache.
Tout sèvis ou yo dwe aksesib youn ak lòt atravè aksè nan kèk adrès ak pò (localgost:5432, localhost:3000, nginx:80, php-fpm:9000), se sa ki soti nan nginx mwen ka jwenn tou de php-fpm ak nan postgres, ak soti nan php-fpm nan postgres ak nginx ak aktyèlman nan chak sèvis mwen ka jwenn aksè nan yon lòt sèvis. Konsa, viabilite yon sèvis pa mare ak viabilité yon lòt sèvis.

8. Paralelis

Travay ak yon sèl pwosesis, otreman plizyè pwosesis pa yo pral kapab jwenn ansanm youn ak lòt!

Kite plas pou eskalade. Docker swarm se gwo pou sa.
Docker Swarm se yon zouti pou kreye ak jere gwoup resipyan tou de ant diferan machin ak yon pakèt resipyan sou menm machin nan.

Sèvi ak swarm, mwen ka detèmine konbyen resous mwen pral asiyen nan chak pwosesis ak konbyen pwosesis nan menm sèvis la mwen pral lanse, ak balans entèn la, k ap resevwa done sou yon pò bay, ap otomatikman proxy li nan pwosesis yo. Kidonk, wè ke chaj la sou sèvè a ogmante, mwen ka ajoute plis pwosesis, kidonk diminye chaj la sou sèten pwosesis.

9. Disposability

Pa sèvi ak keu pou travay ak pwosesis ak done. Touye yon pwosesis ta dwe afekte tout aplikasyon an. Si yon sèvis desann, tout bagay ap desann.

Chak pwosesis ak sèvis yo ka etenn nenpòt ki lè epi sa pa ta dwe afekte lòt sèvis (nan kou, sa pa vle di ke sèvis la pap disponib pou yon lòt sèvis, men yon lòt sèvis pa pral fèmen apre sa a). Tout pwosesis yo dwe sispann grasyeuz, pou lè yo sispann, pa gen okenn done yo pral domaje ak sistèm nan ap travay kòrèkteman nan pwochen fwa ou limen li. Sa vle di, menm nan ka yon revokasyon ijans, done yo pa ta dwe domaje (mekanis tranzaksyon an apwopriye isit la, demann nan baz done a travay sèlman nan gwoup, epi si omwen yon demann nan gwoup la echwe oswa egzekite ak yon erè, Lè sa a, pa gen okenn lòt rechèch nan gwoup la finalman echwe an reyalite).

10. Parite devlopman/operasyon aplikasyon

Pwodiksyon, sèn ak vèsyon lokal aplikasyon an dwe diferan. Nan pwodiksyon nou itilize fondasyon Yii Lite, ak lokalman Yii, pou li travay pi vit nan pwodiksyon!

An reyalite, tout deplwaman ak travay ak kòd yo ta dwe nan prèske yon anviwònman ki idantik (nou pa pale de pyès ki nan konpitè fizik). Epitou, nenpòt anplwaye devlopman ta dwe kapab deplwaye kòd la nan pwodiksyon si sa nesesè, epi yo pa kèk depatman devops ki resevwa fòmasyon espesyal, ki sèlman gras a fòs espesyal ka leve aplikasyon an nan pwodiksyon an.

Docker ede nou tou ak sa. Si tout pwen anvan yo obsève, lè l sèvi avèk Docker pral pote pwosesis la nan deplwaye anviwònman an tou de sou pwodiksyon ak sou machin lokal la antre youn oswa de kòmandman.

11. Jounal

Nou ekri mòso bwa nan dosye ak baz done! Nou pa netwaye dosye ak baz done nan mòso bwa. An n jis achte yon dis lou ak 9000 Peta octets Et sa byen.

Tout mòso bwa yo ta dwe konsidere kòm yon kouran evènman yo. Aplikasyon an li menm pa ta dwe patisipe nan pwosesis mòso bwa. Jounal yo ta dwe soti nan stdout oswa voye atravè yon pwotokòl tankou udp, pou ke travay ak mòso bwa pa kreye okenn pwoblèm pou aplikasyon an. graylog bon pou sa. Graylog resevwa tout mòso bwa atravè udp (pwotokòl sa a pa mande pou tann pou yon repons sou resepsyon an siksè nan pake a) pa entèfere ak aplikasyon an nan okenn fason epi sèlman kontra ak estriktirasyon ak pwosesis mòso bwa. Lojik aplikasyon an pa chanje pou travay ak apwòch sa yo.

12. Travay administrasyon

Pou mete ajou done, baz done, elatriye, sèvi ak yon pwen final ki te kreye separeman nan API a, egzekite li 2 fwa nan yon ranje sa pral lakòz tout bagay yo ap double. Men, ou pa sòt, ou p ap klike de fwa, epi nou pa bezwen migrasyon.

Tout travay administrasyon yo ta dwe fèt nan menm anviwònman ak tout kòd, nan nivo lage. Sa vle di, si nou bezwen chanje estrikti baz done a, Lè sa a, nou pa pral fè li manyèlman pa chanje non yo nan kolòn ak ajoute nouvo nan kèk zouti jesyon baz done vizyèl. Pou bagay sa yo, nou kreye scripts separe - migrasyon, ki egzekite tout kote ak nan tout anviwònman nan menm fason an ak yon rezilta komen ak konprann. Pou tout lòt travay, tankou ranpli pwojè a ak done, yo ta dwe itilize metodoloji menm jan an.

Egzanp aplikasyon nan PHP, Laravel, Laradock, Docker-Compose

P.S Tout egzanp yo te fè sou MacOS. Pifò nan yo tou apwopriye pou Linux. Itilizatè Windows yo, padone m ', men mwen pa te travay ak Windows pou yon tan long.

Ann imajine yon sitiyasyon kote nou pa gen okenn vèsyon PHP enstale sou PC nou an e pa gen anyen ditou.
Enstale dènye vèsyon docker ak docker-compose. (Ou ka jwenn sa sou entènèt la)

docker -v && 
docker-compose -v

Devlopman aplikasyon ak deplwaman Blue-Green, ki baze sou metodoloji The Twelve-Factor App ak egzanp nan php ak docker.

1. Nou mete Laradock

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

Devlopman aplikasyon ak deplwaman Blue-Green, ki baze sou metodoloji The Twelve-Factor App ak egzanp nan php ak docker.

Konsènan Laradock, mwen pral di ke li se yon bagay trè fre, ki gen yon anpil nan resipyan ak bagay oksilyè. Men, mwen pa ta rekòmande pou itilize Laradock kòm sa yo san yo pa modifikasyon nan pwodiksyon paske nan redondance li yo. Li pi bon yo kreye kontenè pwòp ou a ki baze sou egzanp nan Laradock, sa a pral pi plis optimize, paske pèsonn pa bezwen tout bagay ki la an menm tan an.

2. Konfigure Laradock pou kouri aplikasyon nou an.

cd laradock && 
cp env-example .env

Devlopman aplikasyon ak deplwaman Blue-Green, ki baze sou metodoloji The Twelve-Factor App ak egzanp nan php ak docker.

2.1. Louvri anyè habr (katab paran kote laradock klone) nan kèk editè. (Nan ka PHPStorm mwen an)

Nan etap sa a nou sèlman bay pwojè a yon non.

Devlopman aplikasyon ak deplwaman Blue-Green, ki baze sou metodoloji The Twelve-Factor App ak egzanp nan php ak docker.

2.2. Lanse imaj espas travay la. (Nan ka w, imaj yo pral pran kèk tan pou konstwi)
Espas travay se yon imaj ki prepare espesyalman pou travay ak kad la sou non pwomotè a.

Nou ale andedan veso a lè l sèvi avèk

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

Devlopman aplikasyon ak deplwaman Blue-Green, ki baze sou metodoloji The Twelve-Factor App ak egzanp nan php ak docker.

2.3. Enstale Laravel

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

Devlopman aplikasyon ak deplwaman Blue-Green, ki baze sou metodoloji The Twelve-Factor App ak egzanp nan php ak docker.

2.4. Apre enstalasyon, nou tcheke si anyè a ak pwojè a te kreye epi touye konpoze.

ls
exit
docker-compose down

Devlopman aplikasyon ak deplwaman Blue-Green, ki baze sou metodoloji The Twelve-Factor App ak egzanp nan php ak docker.

2.5. Ann tounen nan PHPStorm epi mete chemen ki kòrèk la nan aplikasyon laravel nou an nan dosye .env la.

Devlopman aplikasyon ak deplwaman Blue-Green, ki baze sou metodoloji The Twelve-Factor App ak egzanp nan php ak docker.

3. Ajoute tout kòd la nan Git.

Pou fè sa, nou pral kreye yon depo sou Github (oswa nenpòt lòt kote). Ann ale nan anyè habr nan tèminal la epi egzekite kòd sa 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

Ann tcheke si tout bagay nan lòd.

Devlopman aplikasyon ak deplwaman Blue-Green, ki baze sou metodoloji The Twelve-Factor App ak egzanp nan php ak docker.

Pou konvenyans, mwen rekòmande pou itilize kèk koòdone vizyèl pou Git, nan ka mwen an li la GitKraken. (Isit la se yon lyen referans)

4. Ann lanse!

Anvan w kòmanse, asire w ke pa gen anyen ki pandye sou pò 80 ak 443.

docker-compose up -d nginx php-fpm

Devlopman aplikasyon ak deplwaman Blue-Green, ki baze sou metodoloji The Twelve-Factor App ak egzanp nan php ak docker.

Kidonk, pwojè nou an konsiste de 3 sèvis separe:

  • nginx - sèvè entènèt
  • php-fpm - php pou resevwa demann ki soti nan yon sèvè entènèt
  • espas travay - php pou devlopè

Nan moman sa a, nou reyalize ke nou te kreye yon aplikasyon ki satisfè 4 pwen sou 12, sètadi:

1. Kodbaz — tout kòd la nan yon sèl depo (ti nòt: li ta ka kòrèk pou ajoute docker andedan pwojè laravel la, men sa a pa enpòtan).

2. Depandans - Tout depandans nou yo ekri klèman nan aplikasyon/composer.json ak nan chak Dockerfile nan chak veso.

3. Sèvis fè bak — Chak nan sèvis yo (php-fom, nignx, espas travay) ap viv pwòp lavi li epi li konekte soti deyò epi lè w ap travay ak yon sèvis, lòt la pa pral afekte.

4. Pwosesis yo — chak sèvis se yon pwosesis. Chak nan sèvis yo pa kenbe eta entèn yo.

5. Port obligatwa

docker ps

Devlopman aplikasyon ak deplwaman Blue-Green, ki baze sou metodoloji The Twelve-Factor App ak egzanp nan php ak docker.

Kòm nou ka wè, chak sèvis kouri sou pwòp pò pa yo epi yo aksesib a tout lòt sèvis yo.

6. Concurrency

Docker pèmèt nou anjandre plizyè pwosesis nan menm sèvis yo ak balans otomatik chaj ant yo.

Ann sispann veso yo epi kouri yo nan drapo a --echèl

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

Devlopman aplikasyon ak deplwaman Blue-Green, ki baze sou metodoloji The Twelve-Factor App ak egzanp nan php ak docker.

Kòm nou ka wè, yo te kreye kopi veso php-fpm. Nou pa bezwen chanje anyen nan travay ak veso sa a. Nou menm tou nou kontinye jwenn aksè nan pò 9000, ak Docker kontwole chaj ki genyen ant kontenè pou nou.

7. Disposability - Chak veso ka touye san yo pa fè lòt mal. Sispann oswa rekòmanse veso a pa pral afekte operasyon aplikasyon an pandan lansman ki vin apre yo. Chak veso kapab tou leve nenpòt ki lè.

8. Devlopman aplikasyon/parite operasyon - tout anviwònman nou yo se menm bagay la. Lè w kouri sistèm lan sou yon sèvè nan pwodiksyon, ou pa pral oblije chanje anyen nan kòmandman ou yo. Tout bagay pral baze sou Docker nan menm fason an.

9. Logging — tout mòso bwa ki nan resipyan sa yo ale nan kouran epi yo vizib nan konsole Docker la. (nan ka sa a, an reyalite, ak lòt resipyan endijèn, sa a ka pa ka a si ou pa pran swen li)

 docker-compose logs -f

Devlopman aplikasyon ak deplwaman Blue-Green, ki baze sou metodoloji The Twelve-Factor App ak egzanp nan php ak docker.

Men, gen yon trape nan ke valè yo Default nan PHP ak Nginx ekri tou mòso bwa nan yon dosye. Pou satisfè 12 faktè yo, li nesesè dekonekte ekri mòso bwa nan yon dosye nan konfigirasyon yo nan chak veso separeman.

Docker tou bay kapasite pou voye mòso bwa pa sèlman nan stdout, men tou nan bagay sa yo tankou graylog, ke mwen mansyone pi wo a. Ak andedan graylog, nou ka opere mòso bwa yo jan nou tanpri epi aplikasyon nou an pa pral remake sa a nan okenn fason.

10. Travay administrasyon yo — tout travay administrasyon yo rezoud pa laravel gras ak zouti atizan an egzakteman jan créateur yo nan aplikasyon an faktè 12 ta renmen.

Kòm yon egzanp, mwen pral montre ki jan kèk kòmandman yo egzekite.
Nou antre nan veso a.

 
docker-compose exec workspace bash
php artisan list

Devlopman aplikasyon ak deplwaman Blue-Green, ki baze sou metodoloji The Twelve-Factor App ak egzanp nan php ak docker.

Koulye a, nou ka itilize nenpòt kòmand. (Tanpri sonje ke nou pa t 'konfigirasyon baz done a ak kachèt, kidonk mwatye nan kòmandman yo pa pral egzekite kòrèkteman, paske yo fèt pou travay ak kachèt la ak baz done).

Devlopman aplikasyon ak deplwaman Blue-Green, ki baze sou metodoloji The Twelve-Factor App ak egzanp nan php ak docker.

11. Konfigirasyon ak 12. Bati, lage, kouri

Mwen te vle dedye pati sa a nan Deplwaman Blue-Green, men li te tounen twò vaste pou atik sa a. Mwen pral ekri yon atik separe sou sa a.

Nan yon bref, konsèp la baze sou sistèm CI/CD tankou Jenkins и Gitlab CI. Nan tou de, ou ka mete varyab anviwònman ki asosye ak yon anviwònman espesifik. An konsekans, nan sitiyasyon sa a, pwen c pral rive vre Konfigirasyon.

Ak pwen an sou Bati, lage, kouri se rezoud pa bati-an fonksyon ak non an Tiyo.

Tiyo pèmèt ou divize pwosesis deplwaman an nan plizyè etap, mete aksan sou etap yo nan asanble, lage ak ekzekisyon. Epitou nan Pipeline, ou ka kreye sovgad, ak tout bon anyen. Sa a se yon zouti ki gen potansyèl illimité.

Kòd aplikasyon an se nan Github.
Pa bliye inisyalize soumodil la lè w ap klonaj depo sa a.

P.S.: Tout apwòch sa yo ka itilize ak nenpòt lòt sèvis piblik ak lang pwogramasyon. Bagay pwensipal lan se ke sans lan pa diferan.

Sous: www.habr.com

Add nouvo kòmantè