Ukuthuthukiswa kohlelo lokusebenza kanye nokuthunyelwa kweBlue-Green, ngokusekelwe ku-The Twelve-Factor App methodology enezibonelo ku-php ne-docker

Ukuthuthukiswa kohlelo lokusebenza kanye nokuthunyelwa kweBlue-Green, ngokusekelwe ku-The Twelve-Factor App methodology enezibonelo ku-php ne-docker

Okokuqala, ithiyori encane. Kwenzenjani I-Factor Eyishumi nambili App?

Ngamagama alula, lo mbhalo uklanyelwe ukwenza lula ukuthuthukiswa kwezinhlelo zokusebenza ze-SaaS, usize ngokwazisa onjiniyela nonjiniyela be-DevOps ngezinkinga nezinqubo okuvame ukuhlangana nazo ekuthuthukisweni kwezinhlelo zokusebenza zesimanje.

Idokhumenti idalwe abathuthukisi benkundla ye-Heroku.

I-Twelve-Factor App ingasetshenziswa ezinhlelweni ezibhalwe nganoma yiluphi ulimi lokuhlela futhi kusetshenziswa noma iyiphi inhlanganisela yezinsizakalo ezisekelayo (izizindalwazi, olayini bemiyalezo, izinqolobane, njll.).

Kafushane mayelana nezici lapho le ndlela yokusebenza isekelwe khona:

  1. I-Codebase - I-codebase eyodwa elandelwa ekulawuleni inguqulo - ukuthunyelwa okuningi
  2. Ukuncika - Memezela ngokucacile futhi uhlukanise ukuncika
  3. Ukucushwa - Gcina ukucushwa ngesikhathi sokusebenza
  4. Izinsizakalo Zokusekela - Cabangela izinsiza zokusekela njengezinsiza ze-plug-in
  5. Yakha, khulula, gijima - Hlukanisa ngokuqinile izigaba zokuhlanganisa neyokwenza
  6. Izinqubo - Sebenzisa uhlelo lokusebenza njengenqubo eyodwa noma ngaphezulu engenasisekelo
  7. Ukubopha imbobo - Izinsizakalo zokuthumela ngaphandle ngokubopha ichweba
  8. Ukufana - Kala uhlelo lwakho lokusebenza usebenzisa izinqubo
  9. Ukulahlwa - Khulisa ukuthembeka ngokuqalisa okusheshayo nokuvala shaqa okuhlanzekile
  10. Ukuthuthukiswa kohlelo lokusebenza/ukulinganisa kokusebenza - Gcina intuthuko yakho, isiteji, nezindawo zokukhiqiza zifana ngangokunokwenzeka
  11. Ukugawula - Buka ilogi njengochungechunge lwemicimbi
  12. Imisebenzi yokuphatha - Yenza imisebenzi yokuphatha/yokuphatha usebenzisa izinqubo ze-ad hoc

Ungathola ulwazi olwengeziwe mayelana nezinto eziyi-12 kulezi zinsiza ezilandelayo:

Kuyini ukuthunyelwa kweBlue-Green?

Ukuthunyelwa kweBlue-Green kuyindlela yokuletha isicelo ku production ngendlela yokuthi iklayenti lokugcina lingaboni izinguquko engxenyeni yalo. Ngamanye amazwi, ukusebenzisa uhlelo lokusebenza ngoziro isikhathi sokuphumula.

Uhlelo lwakudala lwe-BG Deploy lubukeka njengalolo oluboniswe esithombeni esingezansi.

Ukuthuthukiswa kohlelo lokusebenza kanye nokuthunyelwa kweBlue-Green, ngokusekelwe ku-The Twelve-Factor App methodology enezibonelo ku-php ne-docker

  • Ekuqaleni kukhona amaseva aphathekayo angu-2 anekhodi efanayo ngokuphelele, uhlelo lokusebenza, iphrojekthi, futhi kukhona umzila (i-balancer).
  • I-router iqale iqondise zonke izicelo kwenye yamaseva (oluhlaza).
  • Okwamanje lapho udinga ukukhulula futhi, yonke iphrojekthi ibuyekezwa kwenye iseva (blue), okwamanje engacubunguli noma yiziphi izicelo.
  • Ngemva kokuba ikhodi ivuliwe eluhlaza okwesibhakabhaka iseva ibuyekezwa ngokuphelele, i-router inikezwa umyalo wokushintsha kusuka eluhlaza on blue iseva.
  • Manje wonke amaklayenti abona umphumela wekhodi esebenza ngayo oluhlaza okwesibhakabhaka iseva.
  • Isikhathi esithile, oluhlaza iseva isebenza njengekhophi eyisipele uma kwenzeka ukuthunyelwa kuhlulekile blue iseva futhi uma kwenzeka ukwehluleka kanye neziphazamisi, i-router ishintshela ukugeleza komsebenzisi emuva oluhlaza iseva enenguqulo endala ezinzile, futhi ikhodi entsha ithunyelwa ukuze ibuyekezwe futhi ihlolwe.
  • Futhi ekupheleni kwenqubo, ibuyekezwa ngendlela efanayo oluhlaza iseva. Futhi ngemva kokuyibuyekeza, i-router ishintshela ukugeleza kwesicelo emuva oluhlaza iseva.

Konke kubonakala kukuhle kakhulu futhi ekuboneni kokuqala akufanele kube nezinkinga ngakho.
Kodwa njengoba siphila ezweni lanamuhla, inketho ngokushintsha ngokomzimba njengoba kukhonjisiwe ohlelweni lwe-classical ayihambisani nathi. Rekhoda ulwazi okwamanje, sizobuyela kulo ngokuhamba kwesikhathi.

Iseluleko esibi nesihle

Disclaimer: Izibonelo ezingezansi zibonisa izinsiza/izindlela engizisebenzisayo, ungasebenzisa ngokuphelele noma yiziphi ezinye izindlela ezinemisebenzi efanayo.

Iningi lezibonelo zizophambana ngandlela thize nokuthuthukiswa kwewebhu (lokhu kuyamangaza), nge-PHP ne-Docker.

Izigaba ezingezansi zinikeza incazelo elula esebenzayo yokusetshenziswa kwezinto kusetshenziswa izibonelo ezithile; uma ufuna ukuthola ithiyori eyengeziwe ngalesi sihloko, landela izixhumanisi ezingenhla eziya emthonjeni wangempela.

1. Isisekelo sekhodi

Sebenzisa i-FTP ne-FileZilla ukuze ulayishe amafayela kumaseva ngesikhathi esisodwa, ungagcini ikhodi noma yikuphi ngaphandle kweseva yokukhiqiza.

Iphrojekthi kufanele ihlale inesisekelo sekhodi esisodwa, okungukuthi, yonke ikhodi iphuma kweyodwa I-Git inqolobane. Amaseva (ukukhiqiza, isiteji, i-test1, test2...) asebenzisa ikhodi evela emagatsheni enqolobane eyodwa evamile. Ngale ndlela sifinyelela ukuvumelana kwekhodi.

2. Ukuncika

Landa wonke amalabhulali kumafolda ngqo kumsuka wephrojekthi. Yenza izibuyekezo ngokumane udlulisele ikhodi entsha kufolda enenguqulo yamanje yelabhulali. Faka zonke izinsiza ezidingekayo ngqo kuseva yomsingathi lapho ezinye izinsiza ezingama-20 zisebenza khona.

Iphrojekthi kufanele ngaso sonke isikhathi ibe nohlu oluqondakalayo lokuncika (ngokuncika ngiphinde ngisho nendawo ezungezile). Konke ukuncika kufanele kuchazwe ngokucacile futhi kuhlukaniswe.
Ake sithathe njengesibonelo Umqambi ΠΈ Docker.

Umqambi - Umphathi wephakheji okuvumela ukuthi ufake imitapo yolwazi ku-PHP. Umqambi ikuvumela ukuthi ucacise izinguqulo ngokuqinile noma ngokukhululekile, futhi uzichaze ngokucacile. Kungaba namaphrojekthi ahlukene angama-20 kuseva futhi ngayinye izoba nohlu lomuntu siqu lwamaphakheji nemitapo yolwazi engazimele kwenye.

Docker - insiza ekuvumela ukuthi uchaze futhi uhlukanise imvelo lapho uhlelo lokusebenza luzosebenza khona. Ngakho-ke, njengomqambi, kodwa ngokucophelela, singakwazi ukunquma ukuthi uhlelo lokusebenza lusebenza ngani. Khetha inguqulo ethile ye-PHP, faka kuphela amaphakheji adingekayo ukuze iphrojekthi isebenze, ngaphandle kokwengeza okunye. Futhi okubaluleke kakhulu, ngaphandle kokuphazamisa amaphakheji kanye nemvelo yomshini wokusingatha namanye amaphrojekthi. Okusho ukuthi, wonke amaphrojekthi kuseva asebenzisa i-Docker angasebenzisa ngokuphelele noma iyiphi isethi yamaphakheji nendawo ehluke ngokuphelele.

3. Ukumisa

Gcina ukulungiselelwa njengokufana ngqo kukhodi. Izilinganiso ezihlukene zeseva yokuhlola, zihlukaniselwe ukukhiqizwa. Bopha ukusebenza kohlelo lokusebenza ngokuya ngendawo ezungezile ngqo kumqondo webhizinisi wephrojekthi usebenzisa uma enye yakha.

Ukucushwa - yilena kuphela indlela ukuthunyelwa kwephrojekthi okufanele kuhluke ngayo. Ngokufanelekile, ukucupha kufanele kudluliswe ngokuguquguquka kwemvelo (env vars).

Okusho ukuthi, ngisho noma ugcina amafayela amaningana okucushwa .config.prod .config.local futhi uwaqambe kabusha ngesikhathi sokuthunyelwa ku-.config (ukulungiselelwa okuyinhloko lapho uhlelo lokusebenza lufunda idatha) - lokhu ngeke kube indlela efanele, ngoba kulokhu ulwazi olusuka ekucushweni luzotholakala esidlangalaleni kubo bonke abathuthukisi bohlelo lokusebenza futhi idatha evela kuseva yokukhiqiza izofakwa engcupheni. Konke ukulungiselelwa kufanele kugcinwe ngokuqondile ohlelweni lokuthunyelwa (CI/CD) futhi kwenziwe ezindaweni ezihlukene ezinamavelu ahlukene adingekayo endaweni ethile ngesikhathi sokuthunyelwa.

4. Izinkonzo Zeqembu Lesithathu

Zibophezele ngokuqinile endaweni, sebenzisa ukuxhumana okuhlukile kwezinsizakalo ezifanayo ezindaweni ezithile.

Eqinisweni, leli phuzu lidlulela ngokuqinile nephuzu mayelana nokucushwa, njengoba ngaphandle kwaleli phuzu, idatha yokumisa evamile ayikwazi ukwenziwa futhi, ngokuvamile, ikhono lokumisa lizokwehla libe yize.

Konke ukuxhumeka ezinsizeni zangaphandle, njengamaseva olayini, isizindalwazi, izinsiza zokulondoloza isikhashana, kufanele kufane kukho kokubili imvelo yasendaweni kanye nemvelo yomuntu wesithathu/yokukhiqiza. Ngamanye amazwi, nganoma yisiphi isikhathi, ngokushintsha intambo yokuxhuma, ngingashintsha izingcingo ngizibeke ku-#1 ngesisekelo esingu-#2 ngaphandle kokushintsha ikhodi yesicelo. Noma, ubheka phambili, njengesibonelo, lapho ukala insizakalo, ngeke kudingeke ukuthi ucacise uxhumano nganoma iyiphi indlela ekhethekile yeseva eyengeziwe yenqolobane.

5. Yakha, khulula, khipha

Yiba nenguqulo yokugcina kuphela yekhodi kuseva, engenalo ithuba lokuhlehlisa ukukhishwa. Asikho isidingo sokugcwalisa isikhala sediski. Noma ubani ocabanga ukuthi angakhipha ikhodi ekukhiqizeni ngephutha ungumhleli omubi!

Zonke izigaba zokusatshalaliswa kufanele zihlukaniswe.

Yiba nethuba lokubuyela emuva. Yenza ukukhishwa ngamakhophi amadala ohlelo lokusebenza (esivele ihlangene futhi isilungele ukulwa) elondolozwe ekufinyeleleni okusheshayo, ukuze uma kwenzeka iphutha ungakwazi ukubuyisela inguqulo endala. Okusho ukuthi, ngokwemibandela kukhona ifolda ukukhishwa kanye nefolda zamanje, futhi ngemva kokuthunyelwa ngempumelelo nokuhlanganisa ifolda zamanje kuxhunywe isixhumanisi esingokomfanekiso ekukhishweni okusha okungaphakathi ukukhishwa negama elivamile lenombolo yokukhishwa.

Yilapho sikhumbula ukuthunyelwa kwe-Blue-Green, okukuvumela ukuthi ungagcini nje ngokushintsha phakathi kwekhodi, kodwa futhi ukushintsha phakathi kwazo zonke izinsiza ngisho nezindawo ezinekhono lokuhlehlisa yonke into.

6. Izinqubo

Gcina idatha yesimo sohlelo lokusebenza ngqo ngaphakathi kohlelo lokusebenza ngokwalo. Sebenzisa izikhathi ku-RAM yohlelo lokusebenza ngokwalo. Sebenzisa ukwabelana okuningi phakathi kwezinsizakalo zezinkampani zangaphandle ngangokunokwenzeka. Thembela eqinisweni lokuthi uhlelo lokusebenza lungaba nenqubo eyodwa kuphela futhi aluvumeli ukukala.

Mayelana namaseshini, gcina idatha kuphela kunqolobane elawulwa yizinsizakalo zezinkampani zangaphandle (i-memcached, i-redis), ngakho-ke noma unezinqubo zesicelo ezingu-20 ezisebenzayo, noma iyiphi yazo, ngemva kokufinyelela inqolobane, izokwazi ukuqhubeka nokusebenza neklayenti ku-cache. isimo esifanayo lapho umsebenzisi ayesebenza khona nohlelo lokusebenza kwenye inqubo. Ngale ndlela, kuvela ukuthi kungakhathaliseki ukuthi mangaki amakhophi ezinsizakalo zezinkampani zangaphandle ozisebenzisayo, konke kuzosebenza ngokujwayelekile futhi ngaphandle kwezinkinga ngokufinyelela idatha.

7. Ukubopha imbobo

Iseva yewebhu kuphela okufanele yazi ukuthi isebenza kanjani nezinsizakalo zezinkampani zangaphandle. Noma okungcono, faka amasevisi ezinkampani zangaphandle ngqo ngaphakathi kweseva yewebhu. Isibonelo, njengemojula ye-PHP ku-Apache.
Zonke izinsiza zakho kufanele zifinyeleleke komunye nomunye ngokufinyelela ekhelini elithile kanye nembobo (localgost:5432, localhost:3000, nginx:80, php-fpm:9000), okungukuthi, kusukela ku-nginx ngingakwazi ukufinyelela kokubili i-php- fpm kanye nokuya postgres, futhi ukusuka ku-php-fpm kuya ku-postgres kanye ne-nginx futhi empeleni kusuka kusevisi ngayinye ngingakwazi ukufinyelela enye insiza. Ngale ndlela, ukusebenza kwesevisi akuboshelwe ekusebenzeni kwenye isevisi.

8. Ukufana

Sebenza ngenqubo eyodwa, ngaphandle kwalokho izinqubo eziningana ngeke zikwazi ukuhambisana nomunye nomunye!

Shiya indawo yokukala. I-Docker swarm inhle kulokhu.
I-Docker Swarm iyithuluzi lokudala nokuphatha amaqoqo eziqukathi zombili phakathi kwemishini ehlukene nenqwaba yeziqukathi emshinini ofanayo.

Ngisebenzisa i-swarm, ngingakwazi ukunquma ukuthi zingaki izinsiza engizozabela inqubo ngayinye nokuthi zingaki izinqubo zesevisi efanayo engizoyethula, futhi isilinganisi sangaphakathi, esithola idatha kumbobo esinikeziwe, sizoyibamba ngokuzenzakalelayo ezinqubweni. Ngakho-ke, ngokubona ukuthi umthwalo kuseva uye wanda, ngingakwazi ukwengeza izinqubo eziningi, ngaleyo ndlela nginciphise umthwalo ezinkambisweni ezithile.

9. Ukulahlwa

Ungayisebenzisi imigqa ukuze usebenze ngezinqubo nedatha. Ukubulala inqubo eyodwa kufanele kuthinte sonke isicelo. Uma inkonzo eyodwa yehla, yonke into iyehla.

Inqubo ngayinye nesevisi ingavalwa nganoma isiphi isikhathi futhi lokhu akufanele kuthinte ezinye izinsizakalo (Yebo, lokhu akusho ukuthi isevisi ngeke itholakale kwenye isevisi, kodwa ukuthi enye isevisi ngeke icime ngemva kwalena). Zonke izinqubo kumele zinqanyulwe kahle, ukuze kuthi lapho zinqanyulwa, kungabikho datha ezolinyazwa futhi isistimu izosebenza kahle ngokuzayo uma uyivula. Okusho ukuthi, noma kwenzeka ukunqanyulwa okuphuthumayo, idatha akufanele yonakaliswe (indlela yokuthengiselana ifanelekile lapha, imibuzo ku-database isebenza ngamaqembu kuphela, futhi uma okungenani umbuzo owodwa ovela eqenjini uhluleka noma wenziwa nge- iphutha, awukho omunye umbuzo ovela eqenjini ogcina uhluleka empeleni).

10. Ukuthuthukiswa kwesicelo/ukulinganisa kokusebenza

Ukukhiqizwa, isiteji kanye nenguqulo yendawo yohlelo lokusebenza kumele ihluke. Ekukhiqizeni sisebenzisa uhlaka lwe-Yii Lite, kanye ne-Yii endaweni, ukuze lusebenze ngokushesha ekukhiqizeni!

Eqinisweni, konke ukuthunyelwa nokusebenza ngekhodi kufanele kube cishe endaweni efanayo (asikhulumi ngehadiwe ebonakalayo). Futhi, noma yisiphi isisebenzi sezokuthuthukiswa kufanele sikwazi ukuphakela ikhodi ekukhiqizweni uma kunesidingo, hhayi umnyango othile we-devops oqeqeshwe ngokukhethekile, kuphela ngenxa yamandla akhethekile ongaphakamisa uhlelo lokusebenza ekukhiqizeni.

I-Docker futhi iyasisiza ngalokhu. Uma wonke amaphuzu adlule ebonwa, ukusebenzisa i-docker kuzoletha inqubo yokuthumela imvelo ekukhiqizeni nasemshinini wendawo ukuze kufakwe umyalo owodwa noma emibili.

11. Izigodo

Sibhala izingodo kumafayela nezingosi zolwazi! Asiwahlanzi amafayela nezingosi zolwazi ezingodweni. Ake sithenge i-hard drive enamabhayithi e-Peta angu-9000 futhi lokho kulungile.

Wonke amalogi kufanele abhekwe njengochungechunge lwemicimbi. Uhlelo lokusebenza ngokwalo akufanele lubandakanyeke ekucubunguleni amalogi. Amalogi kufanele akhishelwe ku-stdout noma athunyelwe ngephrothokholi efana ne-udp, ukuze ukusebenza ngamalogi kungadali izinkinga zohlelo lokusebenza. I-graylog ilungele lokhu. I-Greylog ethola wonke amalogi nge-udp (le protocol ayidingi ukulinda impendulo mayelana nokwamukelwa ngempumelelo kwephakethe) ayiphazamisi uhlelo lokusebenza nganoma iyiphi indlela futhi ibhekana kuphela nokuhlela nokucubungula izingodo. I-logic yohlelo lokusebenza ayishintshi ukuze isebenze nezindlela ezinjalo.

12. Imisebenzi yokuphatha

Ukuze ubuyekeze idatha, imininingo egciniwe, njll., sebenzisa iphoyinti lokugcina elidalwe ngokuhlukile ku-API, ukulisebenzisa izikhathi ezi-2 zilandelana kuzoholela ekutheni yonke into iphindwe. Kodwa awusona isilima, ngeke uchofoze kabili, futhi asikudingi ukufuduka.

Yonke imisebenzi yokuphatha kufanele yenziwe endaweni efanayo nayo yonke ikhodi, ezingeni lokukhishwa. Okusho ukuthi, uma sidinga ukushintsha ukwakheka kwesizindalwazi, ngeke sikwenze mathupha ngokushintsha amagama amakholomu futhi sengeze amasha ngokusebenzisa amathuluzi okuphatha edathabheyisi ebonakalayo. Kuzinto ezinjalo, sakha imibhalo ehlukene - ukufuduka, okwenziwa yonke indawo nakuzo zonke izindawo ngendlela efanayo nomphumela ovamile noqondakalayo. Kuyo yonke eminye imisebenzi, njengokugcwalisa iphrojekthi ngedatha, izindlela ezifanayo kufanele zisetshenziswe.

Ukuqaliswa kwesibonelo ku-PHP, i-Laravel, i-Laradock, i-Docker-Compose

PS Zonke izibonelo zenziwe ku-MacOS. Iningi lazo libuye lilungele i-Linux. Abasebenzisi beWindows, ngixolele, kodwa angizange ngisebenze neWindows isikhathi eside.

Ake sicabange ngesimo lapho singenayo inguqulo ye-PHP efakwe kwi-PC yethu futhi lutho nhlobo.
Faka izinguqulo zakamuva ze-docker kanye ne-docker-compose. (lokhu kungatholakala ku-inthanethi)

docker -v && 
docker-compose -v

Ukuthuthukiswa kohlelo lokusebenza kanye nokuthunyelwa kweBlue-Green, ngokusekelwe ku-The Twelve-Factor App methodology enezibonelo ku-php ne-docker

1. Beka Laradock

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

Ukuthuthukiswa kohlelo lokusebenza kanye nokuthunyelwa kweBlue-Green, ngokusekelwe ku-The Twelve-Factor App methodology enezibonelo ku-php ne-docker

Mayelana noLaradock, ngizosho ukuthi kuyinto epholile kakhulu, equkethe iziqukathi eziningi nezinto ezisizayo. Kodwa ngeke ngincome ukusebenzisa i-Laradock kanjalo ngaphandle kokuguqulwa ekukhiqizeni ngenxa yokuphindaphinda kwayo. Kungcono ukwenza iziqukathi zakho ngokusekelwe ezibonelweni zaseLaradock, lokhu kuzothuthukiswa kakhulu, ngoba akekho odinga yonke into ekhona ngasikhathi sinye.

2. Lungiselela i-Laradock ukuze iqalise uhlelo lwethu lokusebenza.

cd laradock && 
cp env-example .env

Ukuthuthukiswa kohlelo lokusebenza kanye nokuthunyelwa kweBlue-Green, ngokusekelwe ku-The Twelve-Factor App methodology enezibonelo ku-php ne-docker

2.1. Vula uhla lwemibhalo lwe-habr (ifolda engumzali lapho i-laradock yenziwe khona) kwesinye isihleli. (Endabeni yami ye-PHPStorm)

Kulesi sigaba sinikeza iphrojekthi igama kuphela.

Ukuthuthukiswa kohlelo lokusebenza kanye nokuthunyelwa kweBlue-Green, ngokusekelwe ku-The Twelve-Factor App methodology enezibonelo ku-php ne-docker

2.2. Yethula isithombe sendawo yokusebenza. (Endabeni yakho, izithombe zizothatha isikhathi ukwakha)
Indawo yokusebenzela iyisithombe esilungiselelwe ngokukhethekile ukusebenza ngohlaka egameni lonjiniyela.

Singena ngaphakathi kwesitsha sisebenzisa

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

Ukuthuthukiswa kohlelo lokusebenza kanye nokuthunyelwa kweBlue-Green, ngokusekelwe ku-The Twelve-Factor App methodology enezibonelo ku-php ne-docker

2.3. Ifaka i-Laravel

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

Ukuthuthukiswa kohlelo lokusebenza kanye nokuthunyelwa kweBlue-Green, ngokusekelwe ku-The Twelve-Factor App methodology enezibonelo ku-php ne-docker

2.4. Ngemva kokufaka, sihlola ukuthi ingabe uhla lwemibhalo olunephrojekthi lwakhiwe futhi bulala ukubhala.

ls
exit
docker-compose down

Ukuthuthukiswa kohlelo lokusebenza kanye nokuthunyelwa kweBlue-Green, ngokusekelwe ku-The Twelve-Factor App methodology enezibonelo ku-php ne-docker

2.5. Ake sibuyele ku-PHPStorm futhi simise indlela efanele yohlelo lwethu lokusebenza lwe-laravel kufayela le-.env.

Ukuthuthukiswa kohlelo lokusebenza kanye nokuthunyelwa kweBlue-Green, ngokusekelwe ku-The Twelve-Factor App methodology enezibonelo ku-php ne-docker

3. Engeza yonke ikhodi ku-Git.

Ukwenza lokhu, sizodala indawo yokugcina ku-Github (noma kwenye indawo). Ake siye kumkhombandlela we-habr kutheminali futhi sikhiphe ikhodi 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

Ake sihlole ukuthi konke kuhamba ngohlelo yini.

Ukuthuthukiswa kohlelo lokusebenza kanye nokuthunyelwa kweBlue-Green, ngokusekelwe ku-The Twelve-Factor App methodology enezibonelo ku-php ne-docker

Ukuze kube lula, ngincoma ukusebenzisa isikhombimsebenzisi esibonakalayo se-Git, kimina GitKraken. (nasi isixhumanisi sokudlulisela)

4. Masiqalise!

Ngaphambi kokuqala, qiniseka ukuthi akukho lutho olulenga kumachweba angu-80 no-443.

docker-compose up -d nginx php-fpm

Ukuthuthukiswa kohlelo lokusebenza kanye nokuthunyelwa kweBlue-Green, ngokusekelwe ku-The Twelve-Factor App methodology enezibonelo ku-php ne-docker

Ngakho-ke, iphrojekthi yethu iqukethe izinsizakalo ezi-3 ezihlukene:

  • nginx - iseva yewebhu
  • php-fpm - php yokuthola izicelo ezivela kuseva yewebhu
  • indawo yokusebenza - php yabathuthukisi

Okwamanje, sithole ukuthi sidale uhlelo lokusebenza oluhlangabezana namaphuzu angu-4 kwangu-12, okungukuthi:

1. I-Codebase - yonke ikhodi isendaweni eyodwa (inothi elincane: kungase kube okulungile ukwengeza i-docker ngaphakathi kwephrojekthi ye-laravel, kodwa lokhu akubalulekile).

2. Ukuncika - Konke ukuncika kwethu kubhalwe ngokucacile ku-application/composer.json naku-Dockerfile ngayinye yesiqukathi ngasinye.

3. Izinsizakalo Zokusekela - Isevisi ngayinye (i-php-fom, i-nignx, indawo yokusebenza) iphila impilo yayo futhi ixhunywe ngaphandle futhi lapho isebenza ngesevisi eyodwa, enye ngeke ithinteke.

4. Izinqubo - isevisi ngayinye iyinqubo eyodwa. Isevisi ngayinye ayigcini isimo sangaphakathi.

5. Ukubopha imbobo

docker ps

Ukuthuthukiswa kohlelo lokusebenza kanye nokuthunyelwa kweBlue-Green, ngokusekelwe ku-The Twelve-Factor App methodology enezibonelo ku-php ne-docker

Njengoba sibona, isevisi ngayinye isebenza echwebeni layo futhi ifinyeleleka kuzo zonke ezinye izinsizakalo.

6. Ukufana

I-Docker isivumela ukuthi sikhiqize izinqubo eziningi zezinsizakalo ezifanayo ngokulinganisa kokulayisha okuzenzakalelayo phakathi kwazo.

Ake simise izitsha futhi sigijime phakathi kwefulegi --isikali

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

Ukuthuthukiswa kohlelo lokusebenza kanye nokuthunyelwa kweBlue-Green, ngokusekelwe ku-The Twelve-Factor App methodology enezibonelo ku-php ne-docker

Njengoba sibona, amakhophi adaliwe esitsheni se-php-fpm. Asidingi ukushintsha noma yini ekusebenzeni nalesi sitsha. Siyaqhubeka nokuyithola ku-port 9000, futhi i-Docker ilawula umthwalo phakathi kwama-container kithi.

7. Ukulahlwa - isitsha ngasinye singabulawa ngaphandle kokulimaza esinye. Ukumisa noma ukuqalisa kabusha isiqukathi ngeke kuthinte ukusebenza kohlelo lokusebenza ngesikhathi sokwethulwa okulandelayo. Isitsha ngasinye singaphakanyiswa noma nini.

8. Ukuthuthukiswa kohlelo lokusebenza/ukulinganisa kokusebenza - zonke izindawo esihlala kuzo ziyafana. Ngokusebenzisa isistimu kuseva ekukhiqizeni, ngeke kudingeke ukuthi uguqule noma yini emiyalweni yakho. Konke kuzosuselwa ku-Docker ngendlela efanayo.

9. Ukugawula - wonke amalogi akulezi zitsha ayasakazwa futhi ayabonakala kukhonsoli ye-Docker. (kulokhu, eqinisweni, nezinye iziqukathi zasekhaya, lokhu kungase kungabi njalo uma ungazinakekeli)

 docker-compose logs -f

Ukuthuthukiswa kohlelo lokusebenza kanye nokuthunyelwa kweBlue-Green, ngokusekelwe ku-The Twelve-Factor App methodology enezibonelo ku-php ne-docker

Kepha kukhona okubambekayo kokuthi amanani Okuzenzakalelayo ku-PHP ne-Nginx nawo abhala izingodo efayeleni. Ukuhlangabezana nezinto eziyi-12, kuyadingeka nqamula ukubhala amalogi efayeleni ekucushweni kwesiqukathi ngasinye ngokwehlukana.

I-Docker iphinde inikeze amandla okuthumela izingodo hhayi nje ku-stdout, kodwa futhi ezintweni ezifana ne-graylog, engiyishilo ngenhla. Futhi ngaphakathi kwe-graylog, singasebenzisa izingodo ngokuthanda kwethu futhi uhlelo lwethu lokusebenza ngeke likuqaphele lokhu nganoma iyiphi indlela.

10. Imisebenzi yokuphatha - yonke imisebenzi yokuphatha ixazululwa nge-laravel sibonga ithuluzi lengcweti njengoba nje abadali bohlelo lokusebenza lwezinto eziyi-12 bengathanda.

Njengesibonelo, ngizobonisa ukuthi eminye imiyalo yenziwa kanjani.
Singene esitsheni.

 
docker-compose exec workspace bash
php artisan list

Ukuthuthukiswa kohlelo lokusebenza kanye nokuthunyelwa kweBlue-Green, ngokusekelwe ku-The Twelve-Factor App methodology enezibonelo ku-php ne-docker

Manje singasebenzisa noma yimuphi umyalo. (sicela uqaphele ukuthi asizange silungiselele i-database kanye ne-cache, ngakho-ke ingxenye yemiyalo ngeke isetshenziswe ngendlela efanele, ngoba iklanyelwe ukusebenza ne-cache kanye nedathabheyisi).

Ukuthuthukiswa kohlelo lokusebenza kanye nokuthunyelwa kweBlue-Green, ngokusekelwe ku-The Twelve-Factor App methodology enezibonelo ku-php ne-docker

11. Ukucushwa futhi 12. Yakha, khulula, gijima

Bengifuna ukunikezela le ngxenye ku-Blue-Green Deployment, kodwa kuvele ukuthi inkulu kakhulu kulesi sihloko. Ngizobhala indatshana ehlukene ngalokhu.

Kafushane nje, lo mqondo usekelwe ezinhlelweni ze-CI/CD ezifana Jenkins ΠΈ I-Gitlab CI. Kukho kokubili, ungasetha okuguquguqukayo kwemvelo okuhlotshaniswa nendawo ethile. Ngokunjalo, kulesi simo, iphuzu c lizogcwaliseka Ukucushwa.

Futhi iphuzu mayelana Yakha, khulula, gijima ixazululwa ngemisebenzi eyakhelwe ngaphakathi enegama Iphayiphi.

Iphayiphi ikuvumela ukuthi uhlukanise inqubo yokuthunyelwa ngezigaba eziningi, ugqamisa izigaba zokuhlanganisa, ukukhululwa kanye nokubulawa. Futhi kuPipeline, ungakha izipele, futhi ngempela noma yini. Leli ithuluzi elinamandla angenamkhawulo.

Ikhodi yesicelo iku I-Github.
Ungakhohlwa ukuqalisa i-submodule lapho uhlanganisa le nkomba.

I-PS: Zonke lezi zindlela zingasetshenziswa nanoma yiziphi ezinye izinsiza nezilimi zokuhlela. Into eyinhloko ukuthi i-essence ayihlukani.

Source: www.habr.com

Engeza amazwana