Pag-uswag sa aplikasyon ug pag-deploy sa Blue-Green base sa The Twelve-Factor App methodology nga adunay mga pananglitan sa php ug docker

Pag-uswag sa aplikasyon ug pag-deploy sa Blue-Green base sa The Twelve-Factor App methodology nga adunay mga pananglitan sa php ug docker

Magsugod ta sa gamay nga teorya. Unsay nahitabo Ang Napulog Duha ka Factor App?

Sa yano nga mga pulong, kini nga dokumento gidisenyo aron pasimplehon ang pag-uswag sa mga aplikasyon sa SaaS, makatabang pinaagi sa paghimo sa mga developer ug mga inhenyero sa DevOps nga nahibal-an ang mga problema ug mga gawi nga kanunay nga masugatan sa pagpauswag sa mga modernong aplikasyon.

Ang dokumento gimugna sa mga developers sa Heroku plataporma.

Ang Twelve-Factor App methodology mahimong magamit sa mga aplikasyon nga gisulat sa bisan unsang programming language ug gamit ang bisan unsang kombinasyon sa third-party backing services (mga database, message queues, caches, ug uban pa).

Sa mubo bahin sa mga hinungdan sa ilang kaugalingon diin gibase kini nga pamaagi:

  1. Codebase – Usa ka source-tracked codebase – daghang deployment
  2. Mga pagsalig - Dayag nga ipahayag ug ihimulag ang mga dependency
  3. Pagsalig - I-save ang configuration sa runtime
  4. Mga Serbisyo sa Third Party (Mga Serbisyo sa Pagsuporta) - Pagtagad sa mga serbisyo sa pagsuporta ingon nga magamit nga mga kapanguhaan
  5. Pagtukod, pagbuhi, pagdagan - Hugot nga pagbulag sa mga yugto sa pagtukod ug pagdagan
  6. Ang mga proseso - Pagdalagan ang aplikasyon ingon usa o daghang mga proseso nga wala’y estado
  7. Pagbugkos sa pantalan - Mga serbisyo sa pag-eksport pinaagi sa pagbugkos sa pantalan
  8. Pagduhaduha - I-scale ang imong app sa mga proseso
  9. Disposability - I-maximize ang kasaligan sa paspas nga pagsugod ug madanihon nga pagsira
  10. Pagpalambo sa Aplikasyon/Pagkaparehas sa Operasyon - Ipadayon ang pag-uswag, dula, ug mga palibot sa produksiyon nga parehas kutob sa mahimo
  11. Pag-log - Tagda ang log ingon usa ka sapa sa mga panghitabo
  12. Mga buluhaton sa administrasyon - Pagbuhat sa mga buluhaton sa pagdumala / pagdumala nga adunay usa ka higayon nga mga proseso

Para sa dugang nga impormasyon sa 12 ka hinungdan, tan-awa ang mosunod nga mga kapanguhaan:

Unsa ang Blue-Green deployment?

Ang Blue-Green deployment usa ka paagi sa paghatud sa usa ka aplikasyon sa produksyon sa paagi nga ang katapusan nga kliyente dili makakita sa bisan unsang mga pagbag-o sa iyang bahin. Sa laing pagkasulti, ang pag-deploy sa usa ka aplikasyon nga adunay zero downtime.

Ang klasiko nga laraw sa BG Deploy sama sa imahe sa ubos.

Pag-uswag sa aplikasyon ug pag-deploy sa Blue-Green base sa The Twelve-Factor App methodology nga adunay mga pananglitan sa php ug docker

  • Sa pagsugod, adunay 2 ka pisikal nga server nga adunay parehas nga code, aplikasyon, proyekto, ug adunay usa ka router (balancer).
  • Ang router sa sinugdan nagdumala sa tanan nga mga hangyo sa usa sa mga server (berde).
  • Sa higayon nga kinahanglan nimo nga maghimo usa ka pagpagawas pag-usab, ang tibuuk nga proyekto gi-update sa lain nga server (asul), nga wala karon nagproseso sa bisan unsang mga hangyo.
  • Pagkahuman sa code sa asul bug-os nga na-update ang server, ang router gihatagan usa ka mando nga magbalhin gikan berde sa asul server.
  • Karon ang tanan nga mga kliyente nakakita sa resulta sa code nga adunay asul server.
  • Sulod sa pipila ka panahon, berde ang server nagsilbi nga backup kung adunay dili malampuson nga pag-deploy sa asul server ug sa kaso sa kapakyasan ug mga bug, ang router switch sa user dagan balik sa berde server nga adunay daan nga stable nga bersyon, ug ang bag-ong code gipadala alang sa rebisyon ug pagsulay.
  • Ug sa katapusan sa proseso, kini gi-update sa samang paagi berde server. Ug pagkahuman sa pag-update niini, gibalhin sa router ang dagan sa hangyo balik berde server.

Tanan kini maayo kaayo ug sa una nga pagtan-aw kinahanglan nga wala’y mga problema niini.
Apan tungod kay nagpuyo kita sa modernong kalibutan, ang kapilian nga adunay pisikal nga pagbalhin, ingon sa gipakita sa klasikal nga laraw, dili angay kanato. Irekord ang impormasyon sa pagkakaron, mobalik kami niini sa ulahi.

Daotan ug maayong tambag

Disclaimer: Ang mga pananglitan sa ubos nagpakita sa mga utilities / metodologies nga akong gigamit, mahimo nimong gamiton ang bisan unsang mga alternatibo nga adunay susama nga mga function.

Kadaghanan sa mga panig-ingnan sa usa ka paagi intersect sa web development (unsa ka katingala), uban sa PHP ug Docker.

Sa mga parapo sa ubos adunay usa ka yano nga praktikal nga paghulagway sa paggamit sa mga hinungdan sa pipila nga mga pananglitan, kung gusto nimo makakuha dugang nga teorya sa kini nga hilisgutan, tan-awa ang mga link sa ibabaw sa orihinal nga gigikanan.

1. Codebase

Gamita ang FTP ug FileZilla aron mag-upload og mga file ngadto sa mga server matag usa, ayaw pagtago ug code bisan asa gawas sa production server.

Ang usa ka proyekto kinahanglan kanunay adunay usa ka base sa code, nga mao, ang tanan nga code gikan sa usa Git tipiganan. Ang mga server (production, staging, test1, test2 ...) naggamit og code gikan sa mga sanga sa usa ka shared repository. Sa ingon, nakab-ot namon ang pagkamakanunayon sa code.

2. Mga pagsalig

Pag-download sa tanan nga mga librarya sa mga folder direkta sa gamut sa proyekto. Paghimo og mga update pinaagi lamang sa pagbalhin sa bag-ong code ngadto sa folder nga adunay kasamtangan nga bersyon sa librarya. Ibutang ang tanang gikinahanglan nga mga utilities direkta sa host server diin laing 20 ka mga serbisyo ang nagdagan.

Ang proyekto kinahanglan kanunay adunay usa ka tin-aw nga masabtan nga lista sa mga dependency (sa mga dependency, gipasabut usab nako ang palibot). Ang tanan nga mga dependency kinahanglan nga tin-aw nga gipasabut ug gilain.
Ingong pananglitan, atong tagdon kompositor ΠΈ Docker.

kompositor - usa ka manager sa pakete nga nagtugot kanimo sa pag-install sa mga librarya sa PHP. Ang kompositor naghatag kanimo og abilidad sa estrikto o dili estrikto nga pagtino sa mga bersyon, ug sa dayag nga paghubit niini. Mahimong adunay 20 ka lainlaing mga proyekto sa usa ka server, ug ang matag usa adunay usa ka pribado nga lista sa mga pakete ug mga librarya nga independente sa lain.

Docker - usa ka utility nga nagtugot kanimo sa paghubit ug paglain sa palibot diin ang aplikasyon molihok. Tungod niini, sama sa kompositor, apan labi ka maayo, mahibal-an naton kung unsa ang gigamit sa aplikasyon. Pagpili usa ka piho nga bersyon sa PHP, i-install lamang ang mga pakete nga kinahanglan aron molihok ang proyekto, nga wala’y pagdugang bisan unsang dugang. Ug ang labing importante, nga walay pagpanghilabot sa mga pakete ug sa palibot sa host machine ug uban pang mga proyekto. Kana mao, ang tanan nga mga proyekto sa server nga nagdagan pinaagi sa Docker mahimong mogamit sa bisan unsang hugpong sa mga pakete ug hingpit nga lainlaing mga palibot.

3. Pag-configure

Tipigi ang mga configs isip mga constant diha mismo sa code. Pagbulag nga mga kanunay alang sa pagsulay nga server, bulag alang sa produksiyon. Ihigot ang trabaho sa aplikasyon depende sa palibot nga direkta sa negosyo nga lohika sa proyekto gamit ang if else constructs.

Mga pag-configure - kini ang bugtong butang nga kinahanglan magkalainlain sa pag-deploy sa proyekto (deployment). Sa tinuud, ang mga pag-configure kinahanglan nga ipasa sa mga variable sa palibot (env vars).

Kana mao, bisan kung magtipig ka daghang mga file sa pag-configure .config.prod .config.local ug ilisan kini sa ngalan sa panahon sa pag-deploy sa .config (ang nag-unang config diin ang aplikasyon nagbasa sa datos) - dili kini ang husto nga pamaagi, tungod kay sa kini nga kaso ang kasayuran gikan sa mga pag-configure mahimong magamit sa publiko sa tanan nga mga developer sa aplikasyon ug ang datos gikan sa server sa produksiyon makompromiso. Ang tanan nga mga pag-configure kinahanglan nga direkta nga gitipigan sa sistema sa pag-deploy (CI / CD) ug gihimo alang sa lainlaing mga palibot nga adunay lainlaing mga kantidad nga gikinahanglan alang sa usa ka partikular nga palibot sa panahon sa pag-deploy.

4. Mga serbisyo sa ikatulo nga partido (Backing Services)

Ihigot pag-ayo ang palibot, gamita ang lainlaing mga koneksyon alang sa parehas nga serbisyo sa pipila nga mga palibot.

Sa tinuud, kini nga butang kusog nga nag-intersect sa butang bahin sa mga pag-configure, tungod kay kung wala ang presensya niini nga butang, ang normal nga datos sa pag-configure dili mahimo ug, sa kinatibuk-an, ang posibilidad sa pag-configure mawala.

Ang tanan nga koneksyon sa mga serbisyo sa gawas sama sa mga server sa pila, mga database, mga serbisyo sa caching kinahanglan parehas alang sa lokal nga palibot ug sa ikatulo nga partido / palibot sa produksiyon. Sa laing pagkasulti, bisan unsang orasa mahimo nakong usbon ang koneksyon string aron ilisan ang mga tawag sa base #1 nga adunay base #2 nga dili usbon ang code sa aplikasyon. O, sa pagtan-aw sa unahan, ingon nga usa ka pananglitan, sa pag-scale sa serbisyo, dili nimo kinahanglan nga ipakita ang koneksyon sa usa ka espesyal nga paagi alang sa usa ka dugang nga cache server.

5. Pagtukod, buhian, dagan

Hupti lamang ang katapusang bersyon sa code sa server, nga walay kahigayonan nga ibalik ang pagpagawas. Dili kinahanglan nga pun-on ang espasyo sa disk. Bisan kinsa nga naghunahuna nga mahimo niyang ibutang ang code sa paghimo nga adunay sayup usa ka dili maayo nga programmer!

Ang tanan nga mga yugto sa pag-deploy kinahanglan nga ibulag sa usag usa.

Pagbaton ug higayon nga makabalik. Paghimo mga pagpagawas nga adunay dali nga pag-access sa daan nga mga kopya sa aplikasyon (natipon na ug andam na alang sa gubat), aron mapasig-uli ang daan nga bersyon kung adunay mga sayup. Sa ato pa, conditionally naay folder pagpagawas ug folder kasamtangan nga, ug human sa malampuson nga pag-deploy ug asembliya, ang folder kasamtangan nga gilangkit sa usa ka simbolo nga sumpay sa bag-ong pagpagawas nga anaa sa sulod pagpagawas nga adunay kondisyon nga ngalan sa numero sa pagpagawas.

Dinhi among nahinumduman ang Blue-Green nga pag-deploy, nga nagtugot kanimo dili lamang sa pagbalhin tali sa code, apan usab sa pagbalhin tali sa tanan nga mga kahinguhaan ug bisan sa mga palibot nga adunay abilidad sa pagpabalik sa tanan.

6. Mga Proseso

Tipigi ang datos sa estado sa aplikasyon direkta sa aplikasyon mismo. Gamita ang mga sesyon sa RAM sa aplikasyon mismo. Gamita kutob sa mahimo nga gipaambit tali sa mga serbisyo sa ikatulo nga partido. Ihigot sa kamatuoran nga ang aplikasyon mahimo lamang nga adunay usa ka proseso ug dili motugot sa scaling.

Mahitungod sa mga sesyon, pagtipig og data lamang sa usa ka cache nga kontrolado sa mga serbisyo sa ikatulo nga partido (memcached, redis), mao nga bisan kung ikaw adunay 20 nga mga proseso sa aplikasyon nga nagdagan, bisan kinsa sa kanila nga nag-access sa cache mahimo’g magpadayon sa pagtrabaho kauban ang kliyente sa parehas nga estado. diin ang user nagtrabaho uban sa aplikasyon sa laing proseso. Uban niini nga pamaagi, kini nahimo nga bisan kung pila ka kopya sa mga serbisyo sa ikatulo nga partido ang imong gigamit, ang tanan molihok sa husto ug wala’y mga problema sa pag-access sa datos.

7. Pagbugkos sa pantalan

Ang web server ra ang kinahanglan mahibal-an kung giunsa ang pagtrabaho sa mga serbisyo sa ikatulo nga partido. Ug mas maayo nga kasagarang ipataas ang mga serbisyo sa ikatulo nga partido sa sulod mismo sa web server. Pananglitan, isip usa ka module sa PHP sa Apache.
Ang tanan nimong mga serbisyo kinahanglan nga ma-access sa usag usa pinaagi sa usa ka tawag sa pipila nga adres ug pantalan (localgost: 5432, localhost: 3000, nginx: 80, php-fpm: 9000), kana mao, gikan sa nginx ma-access nako ang php-fpm ug postgres, ug gikan sa php-fpm ngadto sa postgres ug nginx, ug gikan sa matag serbisyo mismo, maka-access ko sa laing serbisyo. Busa, ang kahimsog sa usa ka serbisyo wala nahigot sa kahimsog sa laing serbisyo.

8. Paralelismo

Pagtrabaho sa usa ka proseso, ug unya kalit nga daghang mga proseso ang dili magkasinabot sa usag usa!

Biyai ang kapilian sa pag-scale. Ang Docker swarm maayo alang niini.
Ang Docker Swarm usa ka himan alang sa paghimo ug pagdumala sa mga kumpol sa mga sudlanan tali sa lainlaing mga makina ug usa ka hugpong sa mga sudlanan sa parehas nga makina.

Gamit ang panon, matino nako kung pila ka mga kahinguhaan ang akong igahin alang sa matag proseso ug pila ka mga proseso sa parehas nga serbisyo ang akong pagdagan, ug ang internal nga balanse, nga nakadawat data sa usa ka gihatag nga pantalan, awtomatiko nga i-proxy kini sa mga proseso. Sa ingon, sa pagtan-aw nga ang load sa server miuswag, ako makadugang sa dugang nga mga proseso, sa ingon pagkunhod sa load sa pipila ka mga proseso.

9. Disposability

Ayaw gamita ang mga pila aron magtrabaho sa mga proseso ug datos. Ang pagpatay sa usa ka proseso kinahanglan makaapekto sa operasyon sa tibuok nga aplikasyon. Kung ang usa ka serbisyo mawala, ang tanan madaot.

Ang matag proseso ug serbisyo mahimong i-off sa bisan unsang oras ug dili kini makaapekto sa ubang mga serbisyo (siyempre, dili kini bahin sa kamatuoran nga ang serbisyo dili ma-access sa lain nga serbisyo, apan ang lain nga serbisyo dili mapatay pagkahuman niini) . Ang tanan nga mga proseso kinahanglan nga hinayhinay nga tapuson, aron kung kini matapos, ang datos dili maapektuhan ug ang sistema molihok sa husto sa sunod nga higayon nga kini ma-on. Kana mao, bisan kung adunay usa ka abort, ang datos kinahanglan dili maapektuhan (ang mekanismo sa transaksyon angay dinhi, ang mga pangutana sa database nagtrabaho lamang sa mga grupo, ug kung labing menos usa ka pangutana gikan sa grupo ang napakyas o gipatuman nga adunay sayup. , unya walay laing pangutana gikan sa grupo nga sa kadugayan gipatuman sa tinuod).

10. Pagpalambo sa Aplikasyon/Pagkaparehas sa Operasyon

Ang produksyon, pagpahigayon ug lokal nga bersyon sa aplikasyon kinahanglang lahi. Sa produksiyon, aduna kitay Yii Lite nga balangkas, ug sa lokal nga Yii, aron mas paspas kini nga molihok sa produksiyon!

Sa tinuud, ang tanan nga pag-deploy ug pagtrabaho kauban ang code kinahanglan naa sa halos parehas nga palibot (wala kami maghisgot bahin sa pisikal nga hardware). Usab, ang bisan kinsa nga empleyado sa pag-uswag kinahanglan nga makahimo sa pag-deploy sa code sa produksiyon kung gikinahanglan, ug dili sa pipila ka espesyal nga gibansay nga departamento sa devops, nga mahimo ra nga mapataas ang aplikasyon sa produksiyon tungod sa espesyal nga kusog.

Gitabangan usab kami ni Docker niini. Ubos sa tanan nga nangaging mga punto, ang paggamit sa docker magdala sa proseso sa pag-deploy sa palibot sa produksiyon ug sa lokal nga makina sa pagsulod sa usa o duha nga mga mando.

11. Pag-log (Logs)

Nagsulat kami og mga log sa mga file ug database! Dili namo limpyohan ang mga file ug database gikan sa mga log. Magpalit na lang ta ug hard drive para sa 9000 Peta bytes and norms.

Ang tanan nga mga troso kinahanglan isipon nga usa ka sapa sa mga panghitabo. Ang aplikasyon mismo dili kinahanglan mag-atubang sa pagproseso sa mga troso. Ang mga log kinahanglan nga i-isyu bisan sa stdout o ipadala sa usa ka protocol sama sa udp aron ang aplikasyon dili makamugna og bisan unsang mga problema sa mga log. Ang Graylog maayo alang niini. Ang pagdawat sa Graylog sa tanan nga mga troso pinaagi sa udp (gamit kini nga protocol, wala kinahanglana nga maghulat alang sa usa ka tubag bahin sa malampuson nga pagdawat sa pakete) dili makabalda sa aplikasyon sa bisan unsang paagi ug naglihok lamang sa pag-istruktura ug pagproseso sa mga troso. Ang lohika sa aplikasyon dili mausab aron magamit kini nga mga pamaagi.

12. Mga buluhaton sa pagdumala

Aron ma-update ang datos, database, ug uban pa, gamita ang usa ka gilain nga gibuhat nga endpoint sa api, ang pagpatuman nga 2 ka beses sa usa ka laray magdala sa kamatuoran nga ang tanan mahimong madoble alang kanimo. Apan dili ka mga buang, dili ka mag-klik sa 2 ka beses, ug wala kami magkinahanglan mga paglalin.

Ang tanan nga mga buluhaton sa administrasyon kinahanglan nga himuon sa parehas nga palibot sama sa tanan nga code, sa lebel sa pagpagawas. Kana mao, kung kinahanglan naton usbon ang istruktura sa database, nan dili naton kini buhaton nga mano-mano pinaagi sa pagbag-o sa mga ngalan sa mga kolum ug pagdugang mga bag-o pinaagi sa usa ka matang sa visual database management tools. Alang sa ingon nga mga butang, naghimo kami nga lahi nga mga script - mga paglalin nga gihimo bisan diin ug sa tanan nga mga palibot nga adunay parehas nga kasagaran ug masabtan nga sangputanan. Alang sa tanan nga uban pang mga buluhaton, sama sa pagpuno sa usa ka proyekto nga adunay datos, ang parehas nga mga pamaagi kinahanglan nga magamit.

Pananglitan sa pagpatuman sa PHP, Laravel, Laradock, Docker-Compose

PS Ang tanan nga mga pananglitan gihimo sa MacOS. Kadaghanan magtrabaho usab alang sa Linux. Pasensya, mga tiggamit sa Windows, apan dugay na kong wala magtrabaho uban sa Windows.

Hunahunaa ang usa ka sitwasyon nga wala kami bisan unsang bersyon sa PHP nga na-install sa among PC ug wala gyud.
I-install ang pinakabag-o nga bersyon sa docker ug docker-compose. (kini makita online)

docker -v && 
docker-compose -v

Pag-uswag sa aplikasyon ug pag-deploy sa Blue-Green base sa The Twelve-Factor App methodology nga adunay mga pananglitan sa php ug docker

1. Among gibutang Laradock

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

Pag-uswag sa aplikasyon ug pag-deploy sa Blue-Green base sa The Twelve-Factor App methodology nga adunay mga pananglitan sa php ug docker

Mahitungod sa Laradock, isulti ko nga kini usa ka cool nga butang, diin daghang mga sudlanan ug mga auxiliary nga mga butang ang nakolekta. Apan ang paggamit sa Laradock sa ingon nga wala’y mga pagbag-o sa produksiyon - Dili ko kini irekomenda tungod sa kadaghan niini. Mas maayo ang paghimo sa imong mga sudlanan base sa mga pananglitan sa Laradock, mao nga adunay daghang pag-optimize, tungod kay wala’y usa nga nanginahanglan sa tanan nga naa sa parehas nga oras.

2. Pag-configure sa Laradock aron magtrabaho ang among aplikasyon.

cd laradock && 
cp env-example .env

Pag-uswag sa aplikasyon ug pag-deploy sa Blue-Green base sa The Twelve-Factor App methodology nga adunay mga pananglitan sa php ug docker

2.1. Ablihi ang habr directory (ang parent folder diin ang laradock gi-clone) sa bisan unsang editor. (Sa akong kaso sa PHPStorm)

Niini nga yugto, among gibutang lamang ang ngalan sa proyekto.

Pag-uswag sa aplikasyon ug pag-deploy sa Blue-Green base sa The Twelve-Factor App methodology nga adunay mga pananglitan sa php ug docker

2.2. Among gilusad ang hulagway sa workspace. (Sa imong kaso, ang mga imahe magtukod sulod sa pipila ka panahon)
Ang workspace usa ka espesyal nga giandam nga imahe alang sa pagtrabaho kauban ang balangkas alang sa developer.

Adto sa sulod sa sudlanan nga adunay

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

Pag-uswag sa aplikasyon ug pag-deploy sa Blue-Green base sa The Twelve-Factor App methodology nga adunay mga pananglitan sa php ug docker

2.3. Pag-instalar sa Laravel

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

Pag-uswag sa aplikasyon ug pag-deploy sa Blue-Green base sa The Twelve-Factor App methodology nga adunay mga pananglitan sa php ug docker

2.4. Pagkahuman sa pag-instalar, among susihon kung ang direktoryo nga adunay proyekto nahimo na, ug patyon ang pagsulat.

ls
exit
docker-compose down

Pag-uswag sa aplikasyon ug pag-deploy sa Blue-Green base sa The Twelve-Factor App methodology nga adunay mga pananglitan sa php ug docker

2.5. Mobalik mi sa PHPStorm ug itakda ang saktong dalan sa among laravel application sa .env file.

Pag-uswag sa aplikasyon ug pag-deploy sa Blue-Green base sa The Twelve-Factor App methodology nga adunay mga pananglitan sa php ug docker

3. Idugang ang tanang code sa Git.

Aron mahimo kini, maghimo kami usa ka repository sa Github (o bisan asa pa). Adto kita sa direktoryo sa habr sa terminal ug ipatuman ang mosunod nga code.

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

Atong susihon kon ang tanan naa ba.

Pag-uswag sa aplikasyon ug pag-deploy sa Blue-Green base sa The Twelve-Factor App methodology nga adunay mga pananglitan sa php ug docker

Alang sa kasayon, akong girekomendar ang paggamit sa usa ka matang sa visual interface alang sa Git, sa akong kaso mao kini GitKraken. (referral link dinhi)

4. Ilusad!

Sa dili pa magsugod, siguroha nga wala kay gibitay sa mga port 80 ug 443.

docker-compose up -d nginx php-fpm

Pag-uswag sa aplikasyon ug pag-deploy sa Blue-Green base sa The Twelve-Factor App methodology nga adunay mga pananglitan sa php ug docker

Busa, ang among proyekto naglangkob sa 3 ka managlahing serbisyo:

  • nginx - web server
  • php-fpm - php para sa pagdawat sa mga hangyo gikan sa web server
  • workspace - php alang sa developer

Sa pagkakaron, nakab-ot namo nga nakahimo kami og aplikasyon nga katumbas sa 4 puntos sa 12, nga mao:

1. Codebase - ang tanan nga code naa sa usa ka repository (usa ka gamay nga nota: mahimo’g husto ang pagdala sa docker sa sulod sa proyekto sa laravel, apan dili kini hinungdanon).

2. Mga pagsalig - Ang tanan sa among mga dependency klaro nga gisulat sa application/composer.json ug sa matag Dockerfile sa matag sudlanan.

3. Mga Serbisyo sa Third Party (Mga Serbisyo sa Pagsuporta) - Ang matag usa sa mga serbisyo (php-fom, nignx, workspace) nagpuyo sa kaugalingon nga kinabuhi ug konektado gikan sa gawas ug kung nagtrabaho sa usa ka serbisyo, ang lain dili maapektuhan.

4. Ang mga proseso Ang matag serbisyo usa ka proseso. Ang matag serbisyo wala magtipig sa internal nga kahimtang.

5. Pagbugkos sa pantalan

docker ps

Pag-uswag sa aplikasyon ug pag-deploy sa Blue-Green base sa The Twelve-Factor App methodology nga adunay mga pananglitan sa php ug docker

Sama sa atong makita, ang matag serbisyo nagdagan sa kaugalingon nga pantalan ug magamit sa tanan nga ubang mga serbisyo.

6. Pagduhaduha

Gitugotan kami sa Docker nga maghimo daghang mga proseso sa parehas nga mga serbisyo nga adunay awtomatikong pagbalanse sa pagkarga sa taliwala nila.

Hunonga ang mga sudlanan ug sugdi kini gamit ang bandila β€” timbangan

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

Pag-uswag sa aplikasyon ug pag-deploy sa Blue-Green base sa The Twelve-Factor App methodology nga adunay mga pananglitan sa php ug docker

Sama sa atong makita, ang php-fpm nga sudlanan adunay mga kopya. Dili na namo kinahanglan nga usbon ang bisan unsa sa pagtrabaho niini nga sudlanan. Nagpadayon usab kami sa pag-access niini sa port 9000, ug ang Docker nag-regulate sa load tali sa mga sudlanan alang kanamo.

7. Disposability - ang matag sudlanan mahimong patyon nga dili makadaot sa lain. Ang paghunong o pag-restart sa sudlanan dili makaapekto sa operasyon sa aplikasyon sa sunod nga paglansad. Ang matag sudlanan mahimo usab nga maalsa bisan unsang orasa.

8. Pagpalambo sa Aplikasyon/Pagkaparehas sa Operasyon Ang tanan natong palibot managsama. Pinaagi sa pagpadagan sa sistema sa server sa produksiyon, dili nimo kinahanglan nga usbon ang bisan unsang butang sa imong mga mando. Ang tanan ibase sa Docker sa parehas nga paagi.

9. Pag-log - ang tanan nga mga log sa kini nga mga sudlanan moadto sa sapa ug makita sa Docker console. (sa kini nga kaso, sa tinuud, sa ubang mga sulud nga hinimo sa balay, mahimo’g dili kini mahitabo kung dili nimo kini atimanon)

 docker-compose logs -f

Pag-uswag sa aplikasyon ug pag-deploy sa Blue-Green base sa The Twelve-Factor App methodology nga adunay mga pananglitan sa php ug docker

Apan, adunay usa ka catch nga ang Default nga mga kantidad sa PHP ug Nginx usab nagsulat og mga troso sa usa ka file. Aron makab-ot ang 12 ka mga hinungdan, kinahanglan nimo disable pagsulat og mga log sa usa ka file sa mga configuration sa matag sudlanan nga gilain.

Naghatag usab ang Docker og abilidad sa pagpadala og mga troso dili lang sa stdout, apan usab sa mga butang sama sa graylog, nga akong gihisgutan sa ibabaw. Ug sa sulod sa graylog, mahimo kaming mag-operate gamit ang mga troso kung gusto namon ug ang among aplikasyon dili makamatikod niini sa bisan unsang paagi.

10. Mga buluhaton sa administrasyon - Ang tanan nga mga buluhaton sa administrasyon nasulbad pinaagi sa laravel salamat sa artisan tool nga eksakto nga gusto sa mga tiglalang sa 12 nga hinungdan nga aplikasyon.

Isip usa ka pananglitan, akong ipakita kung giunsa ang pipila nga mga mando gipatuman.
Mosulod mi sa sudlanan.

 
docker-compose exec workspace bash
php artisan list

Pag-uswag sa aplikasyon ug pag-deploy sa Blue-Green base sa The Twelve-Factor App methodology nga adunay mga pananglitan sa php ug docker

Karon kita makagamit sa bisan unsa nga sugo. (Palihug timan-i nga wala kami nag-set up sa database ug cache, mao nga ang katunga sa mga sugo dili ipatuman sa husto, tungod kay kini gidisenyo sa pagtrabaho uban sa cache ug database).

Pag-uswag sa aplikasyon ug pag-deploy sa Blue-Green base sa The Twelve-Factor App methodology nga adunay mga pananglitan sa php ug docker

11. Mga pag-configure ug 12. Pagtukod, pagbuhi, pagdagan

Gusto nako nga ipahinungod kini nga bahin sa Blue-Green Deployment, apan kini nahimo nga detalyado kaayo alang sa kini nga artikulo. Magsulat ako ug lahi nga artikulo bahin niini.

Sa laktod nga pagkasulti, ang konsepto gibase sa mga sistema sa CI / CD sama sa Jenkins ΠΈ Gitlab CI. Sa duha, mahimo nimong itakda ang mga variable sa palibot nga adunay kalabotan sa usa ka piho nga palibot. Sumala niini, niini nga senaryo, butang c Mga pag-configure.

Ug ang punto mahitungod sa Pagtukod, pagbuhi, pagdagan masulbad pinaagi sa built-in nga mga gimbuhaton sa duha ka mga utilities nga gitawag Pipeline.

Pipeline nagtugot kanimo sa pagbahin sa proseso sa pag-deploy sa daghang mga yugto, nga nagpasiugda sa mga yugto sa asembliya, pagpagawas ug pagpatuman. Usab sa Pipeline, makahimo ka og mga backup, ug bisan unsa. Kini nga himan adunay walay kinutuban nga potensyal.

Ang code sa aplikasyon anaa Github.
Ayaw kalimti ang pagsugod sa submodule kung gi-clone kini nga repository.

PS: Ang tanan niini nga mga pamaagi mahimong magamit sa bisan unsang uban nga mga utilities ug programming language. Ang nag-unang butang mao nga ang esensya wala magkalainlain.

Source: www.habr.com

Idugang sa usa ka comment