Uphuhliso lwesicelo kunye nokusasazwa kweBlue-Green, esekwe kwindlela ye-App eneshumi elinesibini elinemizekelo kwiphp kunye nedocker.

Uphuhliso lwesicelo kunye nokusasazwa kweBlue-Green, esekwe kwindlela ye-App eneshumi elinesibini elinemizekelo kwiphp kunye nedocker.

Okokuqala, ithiyori encinane. Kwenzeke ntoni I-App yeeFactor ezilishumi elinambini?

Ngamagama alula, olu xwebhu lwenzelwe ukwenza lula uphuhliso lwezicelo ze-SaaS, ngokunceda ngokwazisa abaphuhlisi kunye neenjineli ze-DevOps malunga neengxaki kunye nezenzo ezihlala zidibana nazo ekuphuhlisweni kwezicelo zanamhlanje.

Uxwebhu lwenziwe ngabaphuhlisi beqonga le-Heroku.

I-App ye-Twelve-Factor App ingasetyenziswa kwizicelo ezibhaliweyo kulo naluphi na ulwimi lwenkqubo kunye nokusebenzisa nayiphi na indibaniselwano yeenkonzo zokuxhasa (i-databases, imigca yemiyalezo, i-cache, njl.).

Ngokufutshane malunga nemiba esekelwe kuyo le ndlela yokusebenza:

  1. Codebase -I-codebase enye elandelwayo kulawulo loguqulelo - ukuthunyelwa okuninzi
  2. Ukuxhomekeka -Ukubhengeza ngokucacileyo kwaye uhlukanise ukuxhomekeka
  3. Isimo -Gcina ubumbeko ngexesha lokuqhuba
  4. Iinkonzo zokuxhasa -Qwalasela iinkonzo ezixhasayo njengezixhobo zeplagi
  5. Yakha, khulula, baleka – Yahlula ngokuthe ngqo indibano kunye nezigaba zokwenza
  6. Iinkqubo -Sebenzisa usetyenziso njengenkqubo enye okanye ezininzi ezingenammiselo
  7. Ukubophelela kwezibuko – Iinkonzo zokuthumela ngaphandle ngokubophelela kwizibuko
  8. Ukufana -Linganisa usetyenziso lwakho usebenzisa iinkqubo
  9. Ukulahla -Yandisa ukuthembeka ngokuqalisa ngokukhawuleza kunye nokuvalwa okucocekileyo
  10. Uphuhliso lwesicelo/ukulingana kokusebenza -Gcina uphuhliso lwakho, iqonga, kunye neemeko zemveliso zifana kangangoko kunokwenzeka
  11. Ukugawulwa kwemithi -Jonga ilog njengoluhlu lweziganeko
  12. Imisebenzi yolawulo – Yenza imisebenzi yolawulo/yolawulo usebenzisa iinkqubo zethutyana

Unokufumana ulwazi oluninzi malunga nezinto ezili-12 kwezi zixhobo zilandelayo:

Yintoni ukusasazwa kweBlue-Green?

Ukusasazwa kweBlue-Green yindlela yokuhambisa isicelo kwi Mveliso ngendlela yokuba umxhasi wokugqibela angaboni naluphi na utshintsho kwicala lakhe. Ngamanye amazwi, ukusasaza usetyenziso ngoziro ixesha lokuphumla.

I-classic ye-BG Deploy scheme ikhangeleka njengaleyo iboniswe kumfanekiso ongezantsi.

Uphuhliso lwesicelo kunye nokusasazwa kweBlue-Green, esekwe kwindlela ye-App eneshumi elinesibini elinemizekelo kwiphp kunye nedocker.

  • Ekuqaleni kukho iiseva ezi-2 zomzimba ezinekhowudi efanayo ngokupheleleyo, isicelo, iprojekthi, kwaye kukho i-router (balancer).
  • I-router kuqala yalathisa zonke izicelo kwenye yeeseva (oluhlaza).
  • Ngomzuzu xa ufuna ukukhulula kwakhona, yonke iprojekthi ihlaziywa kwenye iseva (luhlaza), engaqhubekiyo ngoku naziphi na izicelo.
  • Emva kokuba ikhowudi ivuliwe luhlaza umncedisi uhlaziywa ngokupheleleyo, i-router inikwe umyalelo wokutshintsha ukusuka luhlaza phezu luhlaza umncedisi.
  • Ngoku bonke abathengi babona isiphumo sekhowudi esebenzayo luhlaza umncedisi.
  • Ngexesha elithile, oluhlaza umncedisi usebenza njenge kopi yogcino kwimeko yobeko olungaphumelelanga luhlaza umncedisi kwaye kwimeko yokusilela kunye neebhugi, i-router itshintsha ukuhamba komsebenzisi emva oluhlaza umncedisi ngoguqulelo oludala oluzinzileyo, kwaye ikhowudi entsha ithunyelwa kuhlaziyo novavanyo.
  • Kwaye ekupheleni kwenkqubo, ihlaziywa ngendlela efanayo oluhlaza umncedisi. Kwaye emva kokuyihlaziya, i-router itshintshela ukuhamba kwesicelo oluhlaza umncedisi.

Konke kubonakala kukuhle kakhulu kwaye ekuboneni kokuqala akufanele kubekho iingxaki kuyo.
Kodwa ekubeni siphila kwihlabathi lanamhlanje, ukhetho ngokutshintshwa komzimba njengoko kubonisiwe kwisikimu seklasikhi asihambelani nathi. Rekhoda ulwazi okwangoku, siya kubuyela kuyo kamva.

Iingcebiso ezimbi nezilungileyo

isikhanyeli: Le mizekelo ingezantsi ibonisa izinto eziluncedo/iindlela endizisebenzisayo, ungasebenzisa ngokupheleleyo naziphi na iindlela ezizezinye ezinemisebenzi efanayo.

Uninzi lwemizekelo iya kuthi ngenye indlela okanye enye idibane nophuhliso lwewebhu (oku kuyamangalisa), kunye ne-PHP kunye neDocker.

Imihlathi engezantsi inika inkcazo elula yokusetyenziswa kwezinto kusetyenziswa imizekelo ethile; ukuba ufuna ukufumana ithiyori ethe kratya ngesi sihloko, landela amakhonkco angasentla kumthombo wokuqala.

1. Isiseko sekhowudi

Sebenzisa i-FTP kunye neFayileZilla ukulayisha iifayile kwiiseva enye ngexesha, musa ukugcina ikhowudi naphi na ngaphandle komncedisi wokuvelisa.

Iprojekthi kufuneka ihlale inesiseko sekhowudi enye, oko kukuthi, yonke ikhowudi ivela kwenye Git indawo yokugcina. Iiseva (imveliso, isiteji, uvavanyo1, uvavanyo2...) sebenzisa ikhowudi esuka kumasebe ovimba omnye oqhelekileyo. Ngale ndlela sifezekisa ukuhambelana kwekhowudi.

2. Ukuxhomekeka

Khuphela onke amathala eencwadi kwiifolda ngqo kwingcambu yeprojekthi. Yenza uhlaziyo ngokulula ngokugqithisela ikhowudi entsha kwisiqulathi seefayili ngoguqulelo lwangoku lwethala leencwadi. Faka zonke izinto eziyimfuneko ngqo kwi-host server apho iinkonzo ze-20 ezingaphezulu zisebenza.

Iprojekthi kufuneka ihlale inoluhlu oluqondakalayo lokuxhomekeka (ngokuxhomekeka ndikwathetha okusingqongileyo). Zonke izinto ezixhomekeke kuzo kufuneka zichazwe ngokucacileyo kwaye zodwa.
Makhe sithathe umzekelo Umqambi ΠΈ Docker.

Umqambi - Umphathi wephakheji ekuvumela ukuba ufake iilayibrari kwi-PHP. Umqambi ikuvumela ukuba uchaze iinguqulelo ngokungqongqo okanye ngokukhululekileyo, kwaye uzichaze ngokucacileyo. Kunokubakho iiprojekthi ezingama-20 ezahlukeneyo kumncedisi kwaye nganye iya kuba noluhlu lobuqu lweepakethe kunye namathala eencwadi azimeleyo kwenye.

Docker -isixhobo esikuvumela ukuba uchaze kwaye uhlukanise indawo engqongileyo apho isicelo siza kuqhuba. Ngokufanelekileyo, kanye njengomqambi, kodwa ngokucokisekileyo, sinokubona ukuba isicelo sisebenza ngantoni. Khetha uhlobo oluthile lwe-PHP, faka kuphela iipakethi eziyimfuneko ukuze iprojekthi isebenze, ngaphandle kokongeza nantoni na eyongezelelweyo. Kwaye okona kubaluleke kakhulu, ngaphandle kokuphazamisa iipakethe kunye nokusingqongileyo komatshini wokusingatha kunye nezinye iiprojekthi. Oko kukuthi, zonke iiprojekthi kwiseva esebenza ngeDocker zinokusebenzisa ngokupheleleyo nayiphi na isethi yeepakethi kunye nendawo eyahlukileyo ngokupheleleyo.

3. Uqwalaselo

Gcina ulungelelwaniso njengezinto ezizinzileyo ngqo kwikhowudi. Ukwahlula okuguquguqukayo kumncedisi wovavanyo, ohlukeneyo kwimveliso. Bopha ukusebenza kwesicelo ngokuxhomekeke kwimekobume ngokuthe ngqo kwingqiqo yoshishino yeprojekthi usebenzisa ukuba enye iyakha.

Ulungelelwaniso - le kuphela kwendlela ekumele ukuba ukusasazwa kweprojekthi kwahluke. Ngokufanelekileyo, ulungelelwaniso kufuneka lugqithwe kwizinto eziguquguqukayo zemo engqongileyo (env vars).

Oko kukuthi, nokuba ugcina iifayile zoqwalaselo ezininzi .config.prod .config.local kwaye uzinike igama kwakhona ngexesha lokusasazwa ukuya .config (uqwalaselo oluphambili apho isicelo sifunda idatha) - oku akuyi kuba yindlela efanelekileyo, kuba kulo mzekelo ulwazi oluvela kuqwalaselo luya kufumaneka esidlangalaleni kubo bonke abaphuhlisi besicelo kunye nedatha evela kumncedisi wemveliso iya kuphazamiseka. Lonke ulungelelwaniso kufuneka lugcinwe ngokuthe ngqo kwinkqubo yokuthunyelwa (CI / CD) kwaye iveliswe kwiindawo ezahlukeneyo ezinamaxabiso ahlukeneyo ayimfuneko kwindawo ethile ngexesha lokuthunyelwa.

4. Iinkonzo zeqela lesithathu

Zibophe ngokungqongqo kwimo engqongileyo, sebenzisa imidibaniso eyahlukeneyo kwiinkonzo ezifanayo kwiindawo ezithile.

Enyanisweni, le ngongoma ihambelana kakhulu nenqaku malunga noqwalaselo, ekubeni ngaphandle kweli nqaku, idatha yoqwalaselo oluqhelekileyo ayinakwenziwa kwaye, ngokubanzi, ukukwazi ukuqwalasela kuya kuhla.

Lonke uqhagamshelo kwiinkonzo zangaphandle, ezinje ngoovimba bemigca, i-database, iinkonzo ze-caching, kufuneka zibe yinto enye kuzo zombini indawo yendawo kunye nendawo yesithathu / yemveliso. Ngamanye amagama, nangaliphi na ixesha, ngokutshintsha umtya woqhagamshelo, ndingatshintsha iifowuni kwisiseko #1 ngesiseko #2 ngaphandle kokutshintsha ikhowudi yesicelo. Okanye, ujonge phambili, njengomzekelo, xa ulinganisa inkonzo, awuyi kudinga ukucacisa uxhulumaniso nangayiphi na indlela ekhethekileyo yomncedisi we-cache owongezelelweyo.

5. Yakha, khulula, yenza

Yiba noguqulelo lokugqibela lwekhowudi kumncedisi, kungekho thuba lokubuyisela umva ukhupho. Akukho mfuneko yokuzalisa isithuba sedisk. Nabani na ocinga ukuba banokukhulula ikhowudi kwimveliso ngempazamo ngumdwelisi ombi!

Zonke izigaba zokusasazwa kufuneka zohlulwe omnye komnye.

Yiba nethuba lokubuyela umva. Yenza ukukhutshwa kunye neekopi ezindala zesicelo (esele sihlanganisene kwaye silungele idabi) sigcinwe ngokukhawuleza ukufikelela, ukwenzela ukuba xa kukho iimpazamo unokubuyisela uguqulelo oludala. Oko kukuthi, ngokwemiqathango kukho ifolda kukhutshwa kunye nefolda yangoku, kwaye emva kokusasazwa ngempumelelo kunye nokudibanisa ifolda yangoku idityaniswe likhonkco lokomfuziselo ekukhululweni okutsha okulele ngaphakathi kukhutshwa kunye negama eliqhelekileyo lenombolo yokukhupha.

Kulapho sikhumbula ukuthunyelwa kweBlue-Green, ekuvumela ukuba ungatshintshi kuphela phakathi kwekhowudi, kodwa kunye nokutshintsha phakathi kwazo zonke izibonelelo kunye neendawo ezisingqongileyo ezikwaziyo ukubuyisela umva yonke into.

6. Iinkqubo

Gcina idatha yemeko yesicelo ngokuthe ngqo ngaphakathi kwesicelo ngokwaso. Sebenzisa iiseshoni kwi-RAM yesicelo ngokwaso. Sebenzisa ukwabelana okuninzi phakathi kweenkonzo zomntu wesithathu kangangoko kunokwenzeka. Thembela kwinto yokuba isicelo sinokuba nenkqubo enye kuphela kwaye ungavumeli ukukala.

Ngokumalunga neeseshoni, gcina idatha kuphela kwi-cache elawulwa ziinkonzo zeqela lesithathu (i-memcached, i-redis), ngoko ke nokuba uneenkqubo zesicelo ezingama-20 ezisebenzayo, nayiphi na kuzo, xa ifikelele kwi-cache, iya kukwazi ukuqhubeka nokusebenza kunye nomxhasi kwi-cache. imo efanayo apho umsebenzisi ebesebenza kunye nesicelo kwenye inkqubo. Ngale ndlela, kuvela ukuba kungakhathaliseki ukuba zingaphi iikopi zeenkonzo zomntu wesithathu ozisebenzisayo, yonke into iya kusebenza ngokuqhelekileyo kwaye ngaphandle kweengxaki zokufikelela kwidatha.

7. Ukubophelela kwezibuko

Kuphela ngumncedisi wewebhu omele ukwazi ukusebenza kunye neenkonzo zomntu wesithathu. Okanye kungcono, faka iinkonzo zomntu wesithathu ngqo ngaphakathi kwiseva yewebhu. Umzekelo, njengemodyuli ye-PHP kwi-Apache.
Zonke iinkonzo zakho kufuneka zifikeleleke omnye komnye ngokufikelela kwidilesi ethile kunye nezibuko (localgost:5432, localhost:3000, nginx:80, php-fpm:9000), oko kukuthi, ukusuka nginx ndingafikelela zombini php- fpm kwaye ukuya. postgres, kwaye ukusuka php-fpm ukuya kwi-postgres kunye ne-nginx kwaye eneneni kwinkonzo nganye ndinokufikelela kwenye inkonzo. Ngale ndlela, ukusebenza kwenkonzo akubotshelelwanga ekusebenzeni kwenye inkonzo.

8. Ukufana

Sebenza ngenkqubo enye, ngaphandle koko iinkqubo ezininzi aziyi kukwazi ukusebenzisana!

Shiya indawo yokunyusa. I-Docker swarm ilungile kule nto.
I-Docker Swarm sisixhobo sokwenza kunye nokulawula amaqela eekhonteyina zombini phakathi koomatshini abahlukeneyo kunye neqela lezikhongozeli kumatshini omnye.

Ukusebenzisa i-swarm, ndiyakwazi ukumisela ukuba zingaphi izibonelelo endiza kuzinikezela kwinkqubo nganye kwaye zingaphi iinkqubo zenkonzo efanayo endiya kuziqalisa, kunye ne-balancer yangaphakathi, efumana idatha kwi-port enikiweyo, iya kuba yi-proxy ngokuzenzekelayo kwiinkqubo. Ngaloo ndlela, ukubona ukuba umthwalo kumncedisi unyukile, ndinokongeza iinkqubo ezininzi, ngokunciphisa umthwalo kwiinkqubo ezithile.

9. Ukulahlwa

Musa ukusebenzisa imigca ukuze usebenze ngeenkqubo kunye nedatha. Ukubulala inkqubo enye kufuneka kuchaphazele isicelo sonke. Ukuba inkonzo enye iyehla, yonke into iyehla.

Inkqubo nganye kunye nenkonzo inokuvalwa nangaliphi na ixesha kwaye oku akufanele kuchaphazele ezinye iinkonzo (ewe, oku akuthethi ukuba inkonzo ayiyi kufumaneka kwenye inkonzo, kodwa ukuba enye inkonzo ayiyi kucima emva kwale). Zonke iinkqubo kufuneka zipheliswe ngobubele, ukwenzela ukuba xa ziphelisiwe, akukho datha iya konakaliswa kwaye inkqubo iya kusebenza ngokuchanekileyo kwixesha elizayo xa uyivula. Oko kukuthi, nakwimeko yokupheliswa konxunguphalo, idatha ayifanele yonakaliswe (indlela yokuthengiselana ifanelekile apha, imibuzo kwiziko ledatha isebenza kuphela ngokwamaqela, kwaye ukuba ubuncinci umbuzo omnye osuka kwiqela uyasilela okanye wenziwa impazamo, ngoko ke awukho omnye umbuzo osuka kwiqela ekugqibeleni ongaphumeleliyo enyanisweni).

10. Uphuhliso lwesicelo/ukulingana kokusebenza

Imveliso, iqonga kunye nenguqulelo yendawo yesicelo kufuneka yahluke. Kwimveliso sisebenzisa isakhelo se-Yii Lite, kunye ne-Yii yendawo, ukuze isebenze ngokukhawuleza kwimveliso!

Enyanisweni, zonke ii-deployments kunye nokusebenza ngekhowudi kufuneka zibe kwindawo efanayo (asithethi malunga ne-hardware ebonakalayo). Kwakhona, nawuphi na umqeshwa wophuhliso kufuneka akwazi ukuhambisa ikhowudi kwimveliso ukuba kuyimfuneko, kwaye kungekhona isebe elithile le-devops eliqeqeshwe ngokukodwa, elibulela kuphela amandla akhethekileyo anokuphakamisa isicelo kwimveliso.

UDocker uyasinceda ngale nto. Ukuba onke amanqaku angaphambili ajongiwe, ukusebenzisa i-docker kuya kuzisa inkqubo yokuthumela okusingqongileyo kwimveliso kunye nakumatshini wendawo yokungena umyalelo omnye okanye emibini.

11. Izigodo

Sibhala iilog kwiifayile kunye nogcino-lwazi! Asicoci iifayile kunye nogcino-lwazi olusuka kwizigodo. Masithenge nje i-hard drive ene-9000 Peta bytes kwaye kulungile.

Zonke iilogi kufuneka zithathwe njengoluhlu lweziganeko. Isicelo ngokwaso akufuneki sithathe inxaxheba ekuqhubeni iilogi. Iilogi kufuneka zikhutshwe nokuba ku-stdout okanye zithunyelwe ngeprothokholi enje nge-udp, ukuze ukusebenza ngamalogi akwenzi naziphi na iingxaki zesicelo. igreylog ilungile kule nto. I-Graylog efumana zonke iilogi nge-udp (le protocol ayifuni ukulinda impendulo malunga nokwamkelwa ngempumelelo kwepakethi) ayiphazamisi isicelo nangayiphi na indlela kwaye ijongene kuphela nolwakhiwo kunye nokucubungula iilogi. Ingqiqo yesicelo ayitshintshi ukusebenza kunye neendlela ezinjalo.

12. Imisebenzi yolawulo

Ukuhlaziya idatha, i-database, njl., sebenzisa isiphelo esenziwe ngokwahlukileyo kwi-API, ukwenza amaxesha angama-2 ngokulandelelana kuya kubangela ukuba yonke into iphindwe. Kodwa awusosidenge, awuyi kucofa kabini, kwaye asidingi mfuduko.

Yonke imisebenzi yolawulo kufuneka yenziwe kwindawo efanayo nayo yonke ikhowudi, kwinqanaba lokukhululwa. Oko kukuthi, ukuba kufuneka sitshintshe isakhiwo sesiseko sedatha, ngoko asiyi kuyenza ngesandla ngokutshintsha amagama eekholamu kunye nokongeza amatsha ngokusebenzisa izixhobo zolawulo lwedatha ebonakalayo. Kwizinto ezinjalo, senza izikripthi ezihlukeneyo - ukufuduka, okwenziwa kuyo yonke indawo nakuzo zonke iindawo ngendlela efanayo kunye nesiphumo esiqhelekileyo nesiqondakalayo. Kuyo yonke eminye imisebenzi, njengokuzalisa iprojekthi ngedatha, iindlela ezifanayo kufuneka zisetyenziswe.

Umzekelo wokuphunyezwa kwi-PHP, iLaravel, iLaradock, iDocker-Compose

PS Yonke imizekelo yenziwe kwi-MacOS. Uninzi lwazo lufanelekile kwiLinux. Abasebenzisi beWindows, ndixolele, kodwa khange ndisebenze neWindows ixesha elide.

Makhe sicinge ngemeko apho singenalo naluphi na uhlobo lwe-PHP efakwe kwiPC yethu kwaye akukho nto kwaphela.
Faka iinguqulelo zamva nje ze-docker kunye ne-docker-compose. (oku kunokufumaneka kwi-Intanethi)

docker -v && 
docker-compose -v

Uphuhliso lwesicelo kunye nokusasazwa kweBlue-Green, esekwe kwindlela ye-App eneshumi elinesibini elinemizekelo kwiphp kunye nedocker.

1. Sibeka Laradock

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

Uphuhliso lwesicelo kunye nokusasazwa kweBlue-Green, esekwe kwindlela ye-App eneshumi elinesibini elinemizekelo kwiphp kunye nedocker.

Ngokuphathelele uLaradock, ndiza kuthi yinto epholileyo kakhulu, equlethe izikhongozeli ezininzi kunye nezinto ezincedisayo. Kodwa andizukucebisa ukusebenzisa iLaradock ngolo hlobo ngaphandle kohlengahlengiso kwimveliso ngenxa yokungafuneki kwayo. Kungcono ukwenza izikhongozeli zakho ngokusekwe kwimizekelo yaseLaradock, oku kuya kwenziwa ngcono ngakumbi, kuba akukho mntu ufuna yonke into ekhoyo ngaxeshanye.

2. Qwalasela iLaradock ukuze iqhube isicelo sethu.

cd laradock && 
cp env-example .env

Uphuhliso lwesicelo kunye nokusasazwa kweBlue-Green, esekwe kwindlela ye-App eneshumi elinesibini elinemizekelo kwiphp kunye nedocker.

2.1. Vula uvimba we-habr (ifolda yomzali apho i-laradock yenziwe khona) kumhleli othile. (Kwimeko yam ye-PHPStorm)

Kweli nqanaba sinika iprojekthi kuphela igama.

Uphuhliso lwesicelo kunye nokusasazwa kweBlue-Green, esekwe kwindlela ye-App eneshumi elinesibini elinemizekelo kwiphp kunye nedocker.

2.2. Qalisa umfanekiso wendawo yokusebenza. (Kwimeko yakho, imifanekiso iya kuthatha ixesha ukwakha)
Indawo yokusebenzela ngumfanekiso olungiselelwe ngokukodwa ukusebenza kunye nesakhelo egameni lomphuhlisi.

Singena ngaphakathi kwisikhongozeli sisebenzisa

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

Uphuhliso lwesicelo kunye nokusasazwa kweBlue-Green, esekwe kwindlela ye-App eneshumi elinesibini elinemizekelo kwiphp kunye nedocker.

2.3. Ukufakela iLaravel

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

Uphuhliso lwesicelo kunye nokusasazwa kweBlue-Green, esekwe kwindlela ye-App eneshumi elinesibini elinemizekelo kwiphp kunye nedocker.

2.4. Emva kofakelo, sijonga ukuba ingaba uvimba weefayili oneprojekthi wenziwa kwaye ubulale ukuqamba.

ls
exit
docker-compose down

Uphuhliso lwesicelo kunye nokusasazwa kweBlue-Green, esekwe kwindlela ye-App eneshumi elinesibini elinemizekelo kwiphp kunye nedocker.

2.5. Masibuyele kwi-PHPStorm kwaye sisete indlela echanekileyo kwisicelo sethu se-laravel kwifayile ye-.env.

Uphuhliso lwesicelo kunye nokusasazwa kweBlue-Green, esekwe kwindlela ye-App eneshumi elinesibini elinemizekelo kwiphp kunye nedocker.

3. Yongeza yonke ikhowudi kwi-Git.

Ukwenza oku, siya kudala indawo yokugcina kwiGithub (okanye kwenye indawo). Makhe siye kulawulo lwe-habr kwi-terminal kwaye siphumeze ikhowudi elandelayo.

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

Masijonge ukuba yonke into ilungile na.

Uphuhliso lwesicelo kunye nokusasazwa kweBlue-Green, esekwe kwindlela ye-App eneshumi elinesibini elinemizekelo kwiphp kunye nedocker.

Ukwenza lula, ndincoma ukusebenzisa ujongano olubonakalayo lweGit, kwimeko yam Ilungile. (nali ikhonkco lokuthumela)

4. Masiqalise!

Ngaphambi kokuba uqale, qiniseka ukuba akukho nto ixhonywe kumazibuko angama-80 kunye nama-443.

docker-compose up -d nginx php-fpm

Uphuhliso lwesicelo kunye nokusasazwa kweBlue-Green, esekwe kwindlela ye-App eneshumi elinesibini elinemizekelo kwiphp kunye nedocker.

Ke, iprojekthi yethu ineenkonzo ezi-3 ezahlukeneyo:

  • nginx - iseva yewebhu
  • php-fpm-php yokufumana izicelo kumncedisi wewebhu
  • indawo yokusebenza-php yabaphuhlisi

Okwangoku, siphumelele ukuba senze isicelo esidibana namanqaku ama-4 kwali-12, angala:

1. Codebase - yonke ikhowudi ikwindawo yokugcina (inqaku elincinci: kunokuba kulungile ukongeza i-docker ngaphakathi kweprojekthi ye-laravel, kodwa oku akubalulekanga).

2. Ukuxhomekeka - Zonke izixhomekeke zethu zibhalwe ngokucacileyo kwi-application/composer.json nakwi-Dockerfile nganye yesikhongozeli ngasinye.

3. Iinkonzo zokuxhasa - Nganye yeenkonzo (php-fom, nignx, indawo yokusebenza) ihlala ubomi bayo kwaye ixhunyiwe ngaphandle kwaye xa isebenza ngenkonzo enye, enye ayiyi kuchaphazeleka.

4. Iinkqubo β€” inkonzo nganye yinkqubo enye. Inkonzo nganye ayigcini imo yangaphakathi.

5. Ukubophelela kwezibuko

docker ps

Uphuhliso lwesicelo kunye nokusasazwa kweBlue-Green, esekwe kwindlela ye-App eneshumi elinesibini elinemizekelo kwiphp kunye nedocker.

Njengoko sibona, inkonzo nganye isebenza kwi-port yayo kwaye ifikeleleke kuzo zonke ezinye iinkonzo.

6. Ukufana

I-Docker ivumela ukuba sivelise iinkqubo ezininzi zeenkonzo ezifanayo kunye nokulinganisa umthwalo ozenzekelayo phakathi kwazo.

Masimise izikhongozeli kwaye siziqhube kwiflegi --isikali

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

Uphuhliso lwesicelo kunye nokusasazwa kweBlue-Green, esekwe kwindlela ye-App eneshumi elinesibini elinemizekelo kwiphp kunye nedocker.

Njengoko sibona, iikopi zenziwe kwisikhongozeli sephp-fpm. Akukho mfuneko yokuba sitshintshe nantoni na ekusebenzeni nesi sixhobo. Sikwaqhubeka nokuyifumana kwizibuko le-9000, kwaye iDocker ilawula umthwalo phakathi kwethu.

7. Ukulahla - isitya ngasinye sinokubulawa ngaphandle kokwenzakalisa esinye. Ukumisa okanye ukuqalisa kwakhona isikhongozeli akusayi kuchaphazela ukusebenza kwesicelo ngexesha lophehlelelo olulandelayo. Isikhongozeli ngasinye sinokuphakanyiswa nangaliphi na ixesha.

8. Uphuhliso lwesicelo/ukulingana kokusebenza - yonke indawo esingqongileyo iyafana. Ngokuqhuba inkqubo kwi-server kwimveliso, akuyi kufuneka utshintshe nantoni na kwimiyalelo yakho. Yonke into iya kusekelwa kwiDocker ngendlela efanayo.

9. Ukugawulwa kwemithi -Zonke izigodo ezikwezi zikhongozeli ziyahamba kwaye ziyabonakala kwiDocker console. (kule meko, eneneni, kunye nezinye izitya zasekhaya, oku akunakuba njalo ukuba awuyikhathaleli)

 docker-compose logs -f

Uphuhliso lwesicelo kunye nokusasazwa kweBlue-Green, esekwe kwindlela ye-App eneshumi elinesibini elinemizekelo kwiphp kunye nedocker.

Kodwa kukho ukubamba kwinto yokuba amaxabiso aMiselweyo kwi-PHP kunye ne-Nginx nayo ibhala iilogi kwifayile. Ukuhlangabezana nezinto ezili-12, kuyimfuneko nqamla ukubhala iilog kwifayile kuqwalaselo lwesikhongozeli ngasinye ngokwahlukeneyo.

I-Docker ikwabonelela ngokukwazi ukuthumela iilogi kungekuphela nje kwi-stdout, kodwa nakwizinto ezinje ngegreylog, endiyikhankanyileyo ngasentla. Kwaye ngaphakathi kwe-graylog, sinokusebenzisa iinkuni njengoko sithanda kwaye isicelo sethu asiyi kuqaphela oku nangayiphi na indlela.

10. Imisebenzi yolawulo - yonke imisebenzi yolawulo isonjululwa ngumbulelo welaravel kwisixhobo sobugcisa kanye njengoko abadali besicelo se-12 bengathanda.

Njengomzekelo, ndiza kubonisa indlela eminye imiyalelo eyenziwa ngayo.
Singena kwi container.

 
docker-compose exec workspace bash
php artisan list

Uphuhliso lwesicelo kunye nokusasazwa kweBlue-Green, esekwe kwindlela ye-App eneshumi elinesibini elinemizekelo kwiphp kunye nedocker.

Ngoku sinokusebenzisa nawuphi na umyalelo. (nceda uqaphele ukuba asizange siqwalasele i-database kunye ne-cache, ngoko ke isiqingatha semiyalelo asiyi kuphunyezwa ngokuchanekileyo, kuba yenzelwe ukusebenza kunye ne-cache kunye ne-database).

Uphuhliso lwesicelo kunye nokusasazwa kweBlue-Green, esekwe kwindlela ye-App eneshumi elinesibini elinemizekelo kwiphp kunye nedocker.

11. Ulungelelwaniso kunye ne-12. Yakha, khulula, baleka

Bendifuna ukunikezela le nxalenye kwiBlue-Green Deployment, kodwa kuye kwabonakala kubanzi kakhulu kweli nqaku. Ndiza kubhala inqaku elahlukileyo malunga noku.

Ngamafutshane, ingcamango isekelwe kwiinkqubo zeCI / CD ezifana Jenkins ΠΈ Gitlab CI. Kuzo zombini, unokuseta izinto eziguquguqukayo zokusingqongileyo ezinxulumene nendawo ethile. Ngako oko, kule meko, inqaku c liya kuzaliseka Ulungelelwaniso.

Kwaye inqaku malunga Yakha, khulula, baleka isonjululwa ngemisebenzi eyakhelweyo enegama Iipayipi.

Iipayipi ikuvumela ukuba uhlukanise inkqubo yokuthunyelwa kwizigaba ezininzi, ukugqamisa izigaba zokuhlanganisa, ukukhululwa kunye nokwenziwa. Kwakhona kwiPipeline, unokwenza ii-backups, kwaye ngokwenene nantoni na. Esi sisixhobo esinamandla angenamkhawulo.

Ikhowudi yesicelo ikwi Github.
Ungalibali ukuqalisa imodyuli engaphantsi xa udibanisa lo vimba.

I-PS: Zonke ezi ndlela zinokusetyenziswa kunye nazo naziphi na ezinye izinto eziluncedo kunye neelwimi zeprogram. Into ephambili kukuba i-essence ayifani.

umthombo: www.habr.com

Yongeza izimvo