Haɓaka aikace-aikacen da tura Blue-Green, dangane da Hanyar Sha biyu-Factor App tare da misalai a cikin php da docker

Haɓaka aikace-aikacen da tura Blue-Green, dangane da Hanyar Sha biyu-Factor App tare da misalai a cikin php da docker

Na farko, kadan ka'idar. Me ya faru App ɗin Factor Goma Sha Biyu?

A cikin kalmomi masu sauƙi, an tsara wannan takarda don sauƙaƙe ci gaban aikace-aikacen SaaS, yana taimakawa ta hanyar sanar da masu haɓakawa da injiniyoyi na DevOps game da matsaloli da ayyukan da aka fi fuskanta a cikin ci gaban aikace-aikacen zamani.

Masu haɓaka dandalin Heroku ne suka ƙirƙiri daftarin.

Ana iya amfani da App ɗin Factor Goma Sha Biyu akan aikace-aikacen da aka rubuta cikin kowane yaren shirye-shirye da kuma amfani da kowane haɗin sabis na tallafi (masu bayanai, layin saƙo, caches, da sauransu).

A taƙaice game da abubuwan da wannan hanya ta dogara da su:

  1. Codebase – Codebase guda ɗaya da aka bibiya a cikin sarrafa sigar – turawa da yawa
  2. Dogara – Bayyana a sarari da keɓe abin dogaro
  3. Kanfigareshan – Ajiye sanyi a lokacin aiki
  4. Ayyukan Tallafawa - Yi la'akari da ayyukan tallafi azaman albarkatun toshe
  5. Gina, saki, gudu – Tsaya raba taro da matakan aiwatarwa
  6. A tafiyar matakai – Gudanar da aikace-aikacen azaman matakai ɗaya ko fiye da marasa jiha
  7. Daure tashar jiragen ruwa – Fitar da ayyuka ta hanyar daurin tashar jiragen ruwa
  8. Tabbatarwa - Sikelin aikace-aikacen ku ta amfani da matakai
  9. Rashin iyawa - Haɓaka aminci tare da farawa mai sauri da tsaftataccen rufewa
  10. Ci gaban aikace-aikacen / daidaiton aiki - Ci gaba da ci gaban ku, tsarawa, da wuraren samarwa kamar yadda zai yiwu
  11. Shiga - Duba log ɗin azaman rafi na abubuwan da suka faru
  12. Ayyukan gudanarwa - Yi ayyukan gudanarwa/sarrafa ta amfani da ayyukan ad hoc

Kuna iya samun ƙarin bayani game da abubuwa 12 daga albarkatu masu zuwa:

Menene turawar Blue-Green?

Aiwatar da Blue-Green hanya ce ta isar da aikace-aikace zuwa samar ta yadda abokin ciniki na ƙarshe bai ga wani canje-canje a ɓangarensa ba. A wasu kalmomi, ƙaddamar da aikace-aikace tare da sifili downtime.

Tsarin BG Deploy na al'ada yayi kama da wanda aka nuna a hoton da ke ƙasa.

Haɓaka aikace-aikacen da tura Blue-Green, dangane da Hanyar Sha biyu-Factor App tare da misalai a cikin php da docker

  • A farkon akwai sabobin jiki guda 2 tare da cikakkiyar lamba iri ɗaya, aikace-aikacen, aiki, kuma akwai na'ura mai ba da hanya tsakanin hanyoyin sadarwa (ma'auni).
  • Na'ura mai ba da hanya tsakanin hanyoyin sadarwa da farko tana jagorantar duk buƙatun zuwa ɗaya daga cikin sabar (kore).
  • A lokacin da kuke buƙatar sake sakewa, ana sabunta dukkan aikin akan wani uwar garken (blue), wanda a halin yanzu baya sarrafa kowane buƙatun.
  • Bayan an kunna code blue An sabunta uwar garken gaba daya, ana ba da na'ura mai ba da hanya tsakanin hanyoyin sadarwa umarni don canzawa daga kore a kan blue uwar garken.
  • Yanzu duk abokan ciniki suna ganin sakamakon lambar da ke gudana tare da shuɗi uwar garken.
  • Na wani lokaci, kore uwar garken yana aiki azaman madadin kwafin idan ba a yi nasarar tura shi zuwa ba blue uwar garken kuma idan akwai gazawa da kwari, na'ura mai ba da hanya tsakanin hanyoyin sadarwa yana canza mai amfani zuwa kore uwar garken tare da tsohuwar sigar barga, kuma ana aika sabon lambar don bita da gwaji.
  • Kuma a ƙarshen tsari, ana sabunta shi ta hanya ɗaya kore uwar garken. Kuma bayan sabunta shi, na'ura mai ba da hanya tsakanin hanyoyin sadarwa yana canza buƙatun buƙatun zuwa kore uwar garken.

Duk yana da kyau sosai kuma a kallon farko bai kamata a sami matsala tare da shi ba.
Amma tun da muna rayuwa a cikin zamani na zamani, zaɓi tare da sauyawa ta jiki kamar yadda aka nuna a cikin tsarin gargajiya bai dace da mu ba. Yi rikodin bayanan a yanzu, za mu dawo da shi daga baya.

Nasiha mara kyau da kyau

Disclaimer: Misalan da ke ƙasa suna nuna kayan aiki/hanyoyin da nake amfani da su, zaku iya amfani da kowane zaɓi tare da ayyuka iri ɗaya.

Yawancin misalan za su shiga ta hanya ɗaya ko wata tare da ci gaban yanar gizo (wannan abin mamaki ne), tare da PHP da Docker.

Sakin layi na ƙasa suna ba da kwatanci mai sauƙi na amfani da dalilai ta amfani da takamaiman misalai; idan kuna son samun ƙarin ka'ida akan wannan batu, bi hanyoyin haɗin da ke sama zuwa tushen asali.

1. Codebase

Yi amfani da FTP da FileZilla don loda fayiloli zuwa sabar ɗaya bayan ɗaya, kar a adana lambar a ko'ina banda kan uwar garken samarwa.

Dole ne aikin ya kasance yana da tushe guda ɗaya, wato, duk lambar ta fito ne daga ɗaya Git wurin ajiya. Sabar (sarrafa, tsarawa, test1, test2...) suna amfani da lamba daga rassan ma'ajin gama gari ɗaya. Ta wannan hanyar muna samun daidaiton lamba.

2. Dogara

Zazzage duk ɗakunan karatu a manyan fayiloli kai tsaye zuwa tushen aikin. Yi sabuntawa ta hanyar canja wurin sabon lambar zuwa babban fayil tare da sigar ɗakin karatu na yanzu. Shigar da duk abubuwan da ake buƙata kai tsaye a kan uwar garken mai watsa shiri inda ƙarin ayyuka 20 ke gudana.

Dole ne aikin koyaushe ya kasance yana da jerin abubuwan dogaro da za a iya fahimta a fili (ta hanyar dogaro ni ma na nufin muhalli). Dole ne a fayyace duk abin dogaro a sarari kuma a ware.
Bari mu dauki misali mawaki и Docker.

mawaki - mai sarrafa fakiti wanda ke ba ku damar shigar da ɗakunan karatu a cikin PHP. Mawaƙin yana ba ku damar tantance sigogin tsayayyen ko sako-sako, da ayyana su a sarari. Ana iya samun ayyuka daban-daban guda 20 akan uwar garken kuma kowannensu zai sami jerin fakiti na sirri da ɗakunan karatu masu zaman kansu ba tare da ɗayan ba.

Docker - mai amfani da ke ba ka damar ayyana da ware yanayin da aikace-aikacen zai gudana. Saboda haka, kamar dai tare da mawaki, amma mafi kyau, za mu iya ƙayyade abin da aikace-aikacen ke aiki da. Zaɓi takamaiman nau'in PHP, shigar da fakitin da ake buƙata kawai don aikin ya yi aiki, ba tare da ƙara wani abu ba. Kuma mafi mahimmanci, ba tare da tsoma baki tare da kunshe-kunshe da mahallin na'ura mai watsa shiri da sauran ayyukan ba. Wato, duk ayyukan da ke kan uwar garken da ke gudana ta hanyar Docker na iya amfani da cikakken kowane saitin fakiti da yanayi daban-daban.

3. Kanfigareshan

Ajiye saitin a matsayin masu daidaitawa kai tsaye a cikin lambar. Rarraba madaukai don uwar garken gwaji, daban don samarwa. Ɗaure aikace-aikacen aikace-aikacen dangane da yanayin kai tsaye a cikin dabarun kasuwanci na aikin ta amfani da idan kuma ya gina.

Tsarin tsari - wannan ita ce hanya daya tilo da aikin tura aikin ya kamata ya bambanta. Mahimmanci, ya kamata a wuce tsarin daidaitawa ta hanyar masu canjin yanayi (env vars).

Wato, ko da kun adana fayilolin sanyi da yawa .config.prod .config.local kuma ku sake suna a lokacin turawa zuwa .config (babban tsarin da aikace-aikacen ke karanta bayanai) - wannan ba zai zama hanyar da ta dace ba, tun da yake. a wannan yanayin bayanan daga saitunan za su kasance a fili ga duk masu haɓaka aikace-aikacen kuma za a lalata bayanai daga sabar samarwa. Dole ne a adana duk saitunan kai tsaye a cikin tsarin turawa (CI / CD) kuma an samar da su don mahalli daban-daban tare da ƙima daban-daban waɗanda ake buƙata don takamaiman yanayi a lokacin turawa.

4. Sabis na ɓangare na uku

Kasance mai ɗaure kai tsaye da muhalli, yi amfani da haɗin kai daban-daban don sabis iri ɗaya a wasu wurare.

A gaskiya ma, wannan batu yana da karfi sosai tare da ma'anar game da daidaitawa, tun da ba tare da wannan batu ba, ba za a iya yin bayanan daidaitawa na al'ada ba kuma, a gaba ɗaya, ikon daidaitawa zai ragu zuwa kome ba.

Duk hanyoyin haɗin kai zuwa sabis na waje, kamar sabar layin layi, ma'ajin bayanai, ayyukan caching, dole ne su kasance iri ɗaya ga mahalli na gida da na ɓangare na uku / yanayin samarwa. A wasu kalmomi, a kowane lokaci, ta hanyar canza kirtani mai haɗi, Zan iya maye gurbin kira zuwa tushe #1 tare da tushe #2 ba tare da canza lambar aikace-aikacen ba. Ko, duba gaba, a matsayin misali, lokacin da ake ƙirƙira sabis ɗin, ba za ku ƙididdige haɗin ba ta kowace hanya ta musamman don ƙarin sabar cache.

5. Gina, saki, aiwatarwa

Samun sigar ƙarshe ta lambar akan uwar garken, ba tare da wata dama ta mirgina sakin ba. Babu buƙatar cika sararin faifai. Duk wanda ya yi tunanin cewa za su iya saki code a cikin samarwa tare da kuskure shine mugun shirye-shirye!

Dole ne a raba dukkan matakan turawa da juna.

Yi damar yin birgima. Yi sakewa tare da tsoffin kwafi na aikace-aikacen (an riga an haɗa kuma an shirya don yaƙi) a cikin saurin shiga, ta yadda idan akwai kurakurai za ku iya dawo da tsohon sigar. Wato, bisa sharadi akwai babban fayil sake da babban fayil yanzu, kuma bayan nasarar turawa da haɗa babban fayil ɗin yanzu haɗe ta hanyar hanyar haɗi ta alama zuwa sabon sakin da ke ciki sake tare da sunan al'ada na lambar sakin.

Wannan shine inda muke tunawa da ƙaddamarwar Blue-Green, wanda ke ba ku damar canzawa tsakanin lambar kawai, amma har ma don canzawa tsakanin duk albarkatun har ma da mahalli tare da ikon mayar da komai.

6. Tsari

Ajiye bayanan yanayin aikace-aikacen kai tsaye a cikin aikace-aikacen kanta. Yi amfani da zama a cikin RAM na aikace-aikacen kanta. Yi amfani da yawan rabawa tsakanin sabis na ɓangare na uku gwargwadon yiwuwa. Dogaro da gaskiyar cewa aikace-aikacen na iya samun tsari ɗaya kawai kuma kar a ba da izinin ƙima.

Game da zaman, adana bayanai kawai a cikin ma'ajin da sabis na ɓangare na uku ke sarrafawa (memcached, redis), don haka ko da kuna da tsarin aikace-aikacen 20 da ke gudana, kowane ɗayansu, bayan ya shiga cache, zai iya ci gaba da aiki tare da abokin ciniki a ciki. irin yanayin da mai amfani ke aiki tare da aikace-aikacen a cikin wani tsari. Tare da wannan tsarin, ya bayyana cewa komai yawan kwafin sabis na ɓangare na uku da kuke amfani da shi, komai zai yi aiki bisa ga al'ada kuma ba tare da matsaloli tare da samun damar bayanai ba.

7. Daure tasha

Sabar gidan yanar gizo kawai ya kamata ya san yadda ake aiki tare da sabis na ɓangare na uku. Ko mafi kyau tukuna, shigar da sabis na ɓangare na uku kai tsaye a cikin sabar gidan yanar gizo. Misali, azaman tsarin PHP a cikin Apache.
Duk ayyukanku dole ne su kasance masu isa ga juna ta hanyar samun dama ga wasu adireshi da tashar jiragen ruwa (localgost:5432, localhost:3000, nginx:80, php-fpm:9000), wato daga nginx Zan iya samun damar duka php-fpm da zuwa postgres, kuma daga php-fpm zuwa postgres da nginx kuma a zahiri daga kowane sabis zan iya samun damar wani sabis. Ta wannan hanyar, yuwuwar sabis ba a haɗa shi da yuwuwar wani sabis ɗin ba.

8. Daidaituwa

Yi aiki tare da tsari ɗaya, in ba haka ba da yawa matakai ba za su iya yin aiki tare da juna ba!

Bar dakin don sikeli. Docker swarm yana da kyau ga wannan.
Docker Swarm kayan aiki ne don ƙirƙira da sarrafa gungu na kwantena duka tsakanin injuna daban-daban da tarin kwantena akan injin guda.

Yin amfani da swarm, zan iya ƙayyade yawan albarkatun da zan ware wa kowane tsari da kuma yawancin matakai na wannan sabis ɗin zan kaddamar, kuma ma'auni na ciki, karɓar bayanai a kan tashar da aka ba, za ta wakilci ta atomatik zuwa matakai. Don haka, ganin cewa nauyin da ke kan uwar garke ya karu, zan iya ƙara ƙarin matakai, don haka rage nauyin akan wasu matakai.

9. Rashin iyawa

Kada ku yi amfani da layi don aiki tare da matakai da bayanai. Kashe tsari ɗaya yakamata ya shafi duk aikace-aikacen. Idan sabis ɗaya ya ragu, komai ya ragu.

Kowane tsari da sabis za a iya kashe a kowane lokaci kuma wannan bai kamata ya shafi wasu ayyuka ba (hakika, wannan ba yana nufin cewa sabis ɗin ba zai kasance ba don wani sabis ɗin, amma wani sabis ɗin ba zai kashe bayan wannan ba). Dole ne a dakatar da dukkan hanyoyin da kyau, ta yadda lokacin da aka ƙare, babu bayanai da za su lalace kuma tsarin zai yi aiki daidai lokacin da kuka kunna shi. Wato, ko da a cikin yanayin ƙarewar gaggawa, bayanan bai kamata a lalace ba (hanyar ciniki ta dace a nan, tambayoyin da ke cikin ma'ajin bayanai suna aiki ne kawai a cikin ƙungiyoyi, kuma idan aƙalla tambaya ɗaya daga ƙungiyar ta gaza ko kuma an aiwatar da shi tare da wani zaɓi. kuskure, to babu wata tambaya daga ƙungiyar da ta gaza a ƙarshe).

10. Ci gaban aikace-aikacen / daidaiton aiki

Dole ne samarwa, tsarawa da sigar gida ta aikace-aikacen su bambanta. A cikin samarwa muna amfani da tsarin Yii Lite, kuma a cikin gida Yii, saboda yana aiki da sauri a samarwa!

A gaskiya ma, duk ƙaddamarwa da aiki tare da lambar ya kamata su kasance a cikin kusan yanayi iri ɗaya (ba muna magana game da kayan aikin jiki ba). Har ila yau, kowane ma'aikacin ci gaba ya kamata ya iya tura lambar don samarwa idan ya cancanta, kuma ba wasu ƙwararrun ma'aikata na musamman ba, wanda kawai godiya ga ƙarfin musamman zai iya ɗaga aikace-aikacen zuwa samarwa.

Docker kuma yana taimaka mana da wannan. Idan an lura da duk abubuwan da suka gabata, yin amfani da docker zai kawo tsarin ƙaddamar da yanayin duka akan samarwa da kuma kan injin gida don shigar da umarni ɗaya ko biyu.

11. Gudu

Muna rubuta rajistan ayyukan zuwa fayiloli da bayanan bayanai! Ba mu tsaftace fayiloli da bayanan bayanai daga rajistan ayyukan. Bari mu sayi rumbun kwamfutarka tare da 9000 Peta bytes kuma hakan yayi kyau.

Ya kamata a yi la'akari da duk rajistan ayyukan a matsayin rafi na abubuwan da suka faru. Aikace-aikacen kanta bai kamata ya shiga cikin sarrafa rajistan ayyukan ba. Dole ne a fitar da rajistan ayyukan ko dai zuwa stdout ko aika ta hanyar yarjejeniya kamar udp, ta yadda aiki tare da rajistan ayyukan baya haifar da matsala ga aikace-aikacen. graylog yana da kyau ga wannan. Graylog yana karɓar duk rajistan ayyukan ta hanyar udp (wannan ka'ida baya buƙatar jiran amsa game da nasarar liyafar fakitin) baya tsoma baki tare da aikace-aikacen ta kowace hanya kuma kawai yana ma'amala da tsari da sarrafa rajistan ayyukan. Dabarar aikace-aikacen baya canzawa don aiki tare da irin waɗannan hanyoyin.

12. Ayyukan gudanarwa

Don sabunta bayanai, ma'ajin bayanai, da sauransu, yi amfani da wurin da aka ƙirƙira dabam a cikin API, aiwatar da shi sau 2 a jere zai haifar da kwafin duk abin da aka kwafi. Amma kai ba wawa ba ne, ba za ka danna sau biyu ba, kuma ba ma buƙatar ƙaura.

Duk ayyukan gudanarwa yakamata a yi su a cikin yanayi iri ɗaya kamar kowane lamba, a matakin sakin. Wato, idan muna buƙatar canza tsarin ma'ajin bayanai, to ba za mu yi shi da hannu ba ta hanyar canza sunayen ginshiƙai da ƙara sababbi ta wasu kayan aikin sarrafa bayanai na gani. Don irin waɗannan abubuwa, muna ƙirƙirar rubutun daban-daban - ƙaura, waɗanda ake aiwatar da su a ko'ina kuma a cikin kowane yanayi a cikin hanya ɗaya tare da sakamako gama gari da fahimta. Ga duk sauran ayyuka, kamar cika aikin da bayanai, ya kamata a yi amfani da irin wannan hanyoyin.

Misali aiwatarwa a cikin PHP, Laravel, Laradock, Docker-Compose

PS Duk misalai an yi su akan MacOS. Yawancin su kuma sun dace da Linux. Masu amfani da Windows, ku gafarta mini, amma na dade ban yi aiki da Windows ba.

Bari mu yi tunanin yanayin da ba mu da kowane nau'in PHP da aka shigar akan PC ɗinmu kuma ba komai.
Sanya sabbin nau'ikan docker da docker-compose. (ana iya samun wannan akan Intanet)

docker -v && 
docker-compose -v

Haɓaka aikace-aikacen da tura Blue-Green, dangane da Hanyar Sha biyu-Factor App tare da misalai a cikin php da docker

1. Mun sanya Laradock

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

Haɓaka aikace-aikacen da tura Blue-Green, dangane da Hanyar Sha biyu-Factor App tare da misalai a cikin php da docker

Game da Laradock, zan ce abu ne mai sanyi sosai, wanda ya ƙunshi yawancin kwantena da abubuwa masu taimako. Amma ba zan ba da shawarar yin amfani da Laradock kamar haka ba tare da gyare-gyare a cikin samarwa ba saboda rashin aiki. Zai fi kyau ƙirƙirar kwantena na ku bisa ga misalai a cikin Laradock, wannan zai fi dacewa sosai, saboda babu wanda ke buƙatar duk abin da ke wurin a lokaci guda.

2. Sanya Laradock don gudanar da aikace-aikacen mu.

cd laradock && 
cp env-example .env

Haɓaka aikace-aikacen da tura Blue-Green, dangane da Hanyar Sha biyu-Factor App tare da misalai a cikin php da docker

2.1. Bude directory ɗin habr (babban fayil ɗin iyaye wanda aka rufe laradock) a cikin wani edita. (A cikin yanayin PHPStorm na)

A wannan mataki muna ba wa aikin suna ne kawai.

Haɓaka aikace-aikacen da tura Blue-Green, dangane da Hanyar Sha biyu-Factor App tare da misalai a cikin php da docker

2.2. Kaddamar da hoton filin aiki. (A cikin yanayin ku, hotunan za su ɗauki ɗan lokaci don ginawa)
Wurin aiki hoto ne na musamman da aka shirya don aiki tare da tsarin a madadin mai haɓakawa.

Muna shiga cikin akwati ta amfani da

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

Haɓaka aikace-aikacen da tura Blue-Green, dangane da Hanyar Sha biyu-Factor App tare da misalai a cikin php da docker

2.3. Shigar da Laravel

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

Haɓaka aikace-aikacen da tura Blue-Green, dangane da Hanyar Sha biyu-Factor App tare da misalai a cikin php da docker

2.4. Bayan shigarwa, za mu bincika ko an ƙirƙiri littafin tare da aikin kuma a kashe mu rubuta.

ls
exit
docker-compose down

Haɓaka aikace-aikacen da tura Blue-Green, dangane da Hanyar Sha biyu-Factor App tare da misalai a cikin php da docker

2.5. Bari mu koma PHPStorm mu saita madaidaiciyar hanya zuwa aikace-aikacen mu na laravel a cikin fayil ɗin .env.

Haɓaka aikace-aikacen da tura Blue-Green, dangane da Hanyar Sha biyu-Factor App tare da misalai a cikin php da docker

3. Ƙara duk lambar zuwa Git.

Don yin wannan, za mu ƙirƙiri wurin ajiya akan Github (ko kuma a ko'ina). Muje zuwa habr directory dake cikin Terminal mu aiwatar da code na gaba.

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

Bari mu duba idan komai yana cikin tsari.

Haɓaka aikace-aikacen da tura Blue-Green, dangane da Hanyar Sha biyu-Factor App tare da misalai a cikin php da docker

Don dacewa, Ina ba da shawarar yin amfani da wasu abubuwan gani na gani don Git, a cikin yanayina GitKraken. (Ga hanyar haɗi)

4. Bari mu kaddamar!

Kafin farawa, tabbatar cewa babu abin da ke rataye akan tashoshin 80 da 443.

docker-compose up -d nginx php-fpm

Haɓaka aikace-aikacen da tura Blue-Green, dangane da Hanyar Sha biyu-Factor App tare da misalai a cikin php da docker

Don haka, aikinmu ya ƙunshi ayyuka daban-daban guda uku:

  • nginx - sabar yanar gizo
  • php-fpm - php don karɓar buƙatun daga sabar yanar gizo
  • wurin aiki - php don masu haɓakawa

A halin yanzu, mun sami nasarar samar da aikace-aikacen da ya dace da maki 4 cikin 12, wato:

1. Codebase - duk lambar tana cikin wurin ajiya ɗaya (ƙaramin bayanin kula: yana iya zama daidai don ƙara docker a cikin aikin laravel, amma wannan ba shi da mahimmanci).

2. Dogara - Dukkan abubuwan dogaronmu an rubuta su karara a cikin aikace-aikacen / composer.json kuma a cikin kowane Dockerfile na kowane akwati.

3. Ayyukan Tallafawa - Kowane ɗayan sabis ɗin (php-fom, nignx, filin aiki) yana rayuwar kansa kuma an haɗa shi daga waje kuma lokacin aiki tare da sabis ɗaya, ɗayan ba zai shafa ba.

4. A tafiyar matakai - kowane sabis tsari ne guda ɗaya. Kowace sabis ɗin baya kula da yanayin cikin gida.

5. Daure tashar jiragen ruwa

docker ps

Haɓaka aikace-aikacen da tura Blue-Green, dangane da Hanyar Sha biyu-Factor App tare da misalai a cikin php da docker

Kamar yadda muke iya gani, kowane sabis yana gudana akan tashar jiragen ruwa kuma yana samun dama ga duk sauran ayyuka.

6. Tabbatarwa

Docker yana ba mu damar haifar da matakai da yawa na sabis iri ɗaya tare da daidaita nauyi ta atomatik tsakanin su.

Bari mu tsayar da kwantena mu gudu ta cikin tuta --ma'auni

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

Haɓaka aikace-aikacen da tura Blue-Green, dangane da Hanyar Sha biyu-Factor App tare da misalai a cikin php da docker

Kamar yadda muke iya gani, an ƙirƙiri kwafi na akwati na php-fpm. Ba mu buƙatar canza wani abu a cikin aiki tare da wannan akwati. Har ila yau, muna ci gaba da samun damar yin amfani da shi akan tashar jiragen ruwa 9000, kuma Docker yana daidaita nauyin tsakanin kwantena a gare mu.

7. Rashin iyawa - kowace kwantena za a iya kashe ba tare da cutar da ɗayan ba. Tsayawa ko sake kunna akwati ba zai shafi aikin aikace-aikacen ba yayin ƙaddamarwa na gaba. Hakanan ana iya ɗaga kowane akwati a kowane lokaci.

8. Ci gaban aikace-aikacen / daidaiton aiki - duk muhallinmu iri daya ne. Ta hanyar tafiyar da tsarin akan sabar a samarwa, ba za ku canza komai a cikin umarninku ba. Komai zai dogara ne akan Docker a hanya guda.

9. Shiga - duk rajistan ayyukan da ke cikin waɗannan kwantena suna zuwa rafi kuma ana iya gani a cikin na'urar wasan bidiyo na Docker. (a wannan yanayin, a gaskiya, tare da sauran kwantena na gida, wannan bazai zama lamarin ba idan ba ku kula da shi ba)

 docker-compose logs -f

Haɓaka aikace-aikacen da tura Blue-Green, dangane da Hanyar Sha biyu-Factor App tare da misalai a cikin php da docker

Amma akwai kama a cikin cewa Default dabi'u a cikin PHP da Nginx suma suna rubuta rajistan ayyukan zuwa fayil. Don saduwa da abubuwan 12, wajibi ne cire haɗin rubuta rajistan ayyukan zuwa fayil a cikin jeri na kowane akwati daban.

Docker kuma yana ba da ikon aika rajistan ayyukan ba kawai don stdout ba, har ma zuwa abubuwa irin su graylog, waɗanda na ambata a sama. Kuma a cikin graylog, za mu iya sarrafa rajistan ayyukan yadda muke so kuma aikace-aikacen mu ba zai lura da hakan ta kowace hanya ba.

10. Ayyukan gudanarwa - duk ayyukan gudanarwa ana warware su ta hanyar laravel godiya ga kayan aikin fasaha daidai kamar yadda waɗanda suka kirkiro aikace-aikacen 12 factor ke so.

A matsayin misali, zan nuna yadda ake aiwatar da wasu umarni.
Mu shiga cikin akwati.

 
docker-compose exec workspace bash
php artisan list

Haɓaka aikace-aikacen da tura Blue-Green, dangane da Hanyar Sha biyu-Factor App tare da misalai a cikin php da docker

Yanzu za mu iya amfani da kowane umarni. (Don Allah a lura cewa ba mu tsara bayanan da cache ba, don haka rabin umarnin ba za a aiwatar da su daidai ba, saboda an tsara su don yin aiki tare da cache da database).

Haɓaka aikace-aikacen da tura Blue-Green, dangane da Hanyar Sha biyu-Factor App tare da misalai a cikin php da docker

11. Tsarin tsari da 12. Gina, saki, gudu

Ina so in sadaukar da wannan ɓangaren zuwa Ƙaddamarwar Blue-Green, amma ya zama mai girma ga wannan labarin. Zan rubuta labarin dabam game da wannan.

A taƙaice, manufar ta dogara ne akan tsarin CI/CD kamar Jenkins и Gitlab CI. A cikin duka biyun, zaku iya saita masu canjin yanayi masu alaƙa da takamaiman yanayi. Saboda haka, a cikin wannan yanayin, batu c zai cika Tsarin tsari.

Kuma batu game da Gina, saki, gudu ana warware shi ta hanyar ginanniyar ayyuka tare da sunan Pipeline.

Pipeline yana ba ku damar rarraba tsarin ƙaddamarwa zuwa matakai da yawa, yana nuna matakan haɗuwa, saki da kisa. Hakanan a cikin Pipeline, zaku iya ƙirƙirar madadin, kuma hakika komai. Wannan kayan aiki ne mai yuwuwar mara iyaka.

Lambar aikace-aikacen yana a Github.
Kar a manta da fara submodule lokacin rufe wannan ma'ajiyar.

PS: Duk waɗannan hanyoyin za a iya amfani da su tare da kowane kayan aiki da yarukan shirye-shirye. Babban abu shi ne cewa ainihin ba ya bambanta.

source: www.habr.com

Add a comment