Ukuzaji wa maombi na uwekaji wa Bluu-Kijani, kulingana na Mbinu ya Programu ya Kumi na Mbili na mifano katika php na docker.

Ukuzaji wa maombi na uwekaji wa Bluu-Kijani, kulingana na Mbinu ya Programu ya Kumi na Mbili na mifano katika php na docker.

Kwanza, nadharia kidogo. Nini kilitokea Programu ya Factor kumi na mbili?

Kwa maneno rahisi, hati hii imeundwa kurahisisha uundaji wa programu za SaaS, kusaidia kwa kuwafahamisha watengenezaji na wahandisi wa DevOps kuhusu matatizo na mazoea ambayo mara nyingi hupatikana katika uundaji wa programu za kisasa.

Hati hiyo iliundwa na watengenezaji wa jukwaa la Heroku.

Programu ya Kumi na Mbili inaweza kutumika kwa programu zilizoandikwa katika lugha yoyote ya programu na kutumia mchanganyiko wowote wa huduma za usaidizi (hifadhidata, foleni za ujumbe, akiba, n.k.).

Kwa kifupi juu ya sababu ambazo mbinu hii inategemea:

  1. Msingi wa Msimbo - Codebase moja inayofuatiliwa katika udhibiti wa toleo - upelekaji mwingi
  2. Vitegemezi - Tangaza kwa uwazi na tenga utegemezi
  3. Usanidi - Hifadhi usanidi katika wakati wa kukimbia
  4. Huduma za Kuunga mkono - Zingatia huduma za kuunga mkono kama rasilimali za programu-jalizi
  5. Kujenga, kutolewa, kukimbia - Tenganisha kabisa hatua za kusanyiko na utekelezaji
  6. Mchakato - Endesha programu kama mchakato mmoja au zaidi usio na uraia
  7. Kufunga bandari - Huduma za kuuza nje kupitia kufunga bandari
  8. Fedha - Pima programu yako kwa kutumia michakato
  9. Kutoweka - Ongeza kuegemea kwa kuanza haraka na kuzima safi
  10. Usawa wa ukuzaji wa programu/uendeshaji - Weka mazingira yako ya ukuzaji, maonyesho, na uzalishaji sawa iwezekanavyo
  11. Kuweka magogo - Tazama logi kama mkondo wa matukio
  12. Kazi za utawala - Fanya kazi za usimamizi/usimamizi kwa kutumia michakato ya dharula

Unaweza kupata habari zaidi kuhusu mambo 12 kutoka kwa nyenzo zifuatazo:

Usambazaji wa Blue-Green ni nini?

Usambazaji wa Bluu-Kijani ni njia ya kuwasilisha maombi kwa uzalishaji kwa njia ambayo mteja wa mwisho haoni mabadiliko yoyote kwa upande wake. Kwa maneno mengine, kupeleka programu na sifuri kupungua.

Mpango wa kawaida wa Utumiaji wa BG unaonekana kama ule unaoonyeshwa kwenye picha hapa chini.

Ukuzaji wa maombi na uwekaji wa Bluu-Kijani, kulingana na Mbinu ya Programu ya Kumi na Mbili na mifano katika php na docker.

  • Mwanzoni kuna seva 2 za kimwili zilizo na msimbo sawa kabisa, maombi, mradi, na kuna router (balancer).
  • Kipanga njia hapo awali huelekeza maombi yote kwa moja ya seva (kijani).
  • Kwa sasa unapohitaji kuachilia tena, mradi mzima unasasishwa kwenye seva nyingine (bluu), ambayo haichakati maombi yoyote kwa sasa.
  • Baada ya msimbo kuwashwa bluu seva imesasishwa kabisa, router inapewa amri ya kubadili kutoka kijani juu ya bluu seva.
  • Sasa wateja wote wanaona matokeo ya nambari inayoendesha nayo bluu seva.
  • Kwa muda fulani, kijani seva hutumika kama nakala rudufu katika kesi ya upelekaji bila mafanikio bluu seva na katika kesi ya kushindwa na hitilafu, kipanga njia hubadilisha mtiririko wa mtumiaji kurudi kijani seva iliyo na toleo thabiti la zamani, na nambari mpya hutumwa kwa marekebisho na majaribio.
  • Na mwisho wa mchakato, inasasishwa kwa njia ile ile kijani seva. Na baada ya kuisasisha, router inabadilisha mtiririko wa ombi kurudi kijani seva.

Yote inaonekana nzuri sana na kwa mtazamo wa kwanza haipaswi kuwa na matatizo yoyote nayo.
Lakini kwa kuwa tunaishi katika ulimwengu wa kisasa, chaguo na kubadili kimwili kama ilivyoonyeshwa kwenye mpango wa classical haifai sisi. Rekodi habari kwa sasa, tutarudi kwake baadaye.

Ushauri mbaya na mzuri

Onyo: Mifano hapa chini inaonyesha huduma/mbinu ninazotumia, unaweza kutumia kabisa njia mbadala zilizo na utendakazi sawa.

Mifano nyingi zitaingiliana kwa njia moja au nyingine na ukuzaji wa wavuti (hii ni mshangao), na PHP na Docker.

Aya zilizo hapa chini zinatoa maelezo rahisi ya vitendo ya matumizi ya vipengele kwa kutumia mifano mahususi; kama ungependa kupata nadharia zaidi kuhusu mada hii, fuata viungo vilivyo hapo juu kwenye chanzo asili.

1. Msingi wa Kanuni

Tumia FTP na FileZilla kupakia faili kwenye seva moja baada ya nyingine, usihifadhi msimbo mahali popote isipokuwa kwenye seva ya uzalishaji.

Mradi unapaswa kuwa na msingi mmoja wa nambari kila wakati, ambayo ni, nambari zote hutoka kwa moja kwenda hazina. Seva (uzalishaji, upangaji, test1, test2...) hutumia msimbo kutoka kwa matawi ya hazina moja ya kawaida. Kwa njia hii tunafikia uthabiti wa nambari.

2. Mategemeo

Pakua maktaba zote kwenye folda moja kwa moja kwenye mzizi wa mradi. Fanya masasisho kwa kuhamisha msimbo mpya kwa folda na toleo la sasa la maktaba. Sakinisha huduma zote muhimu moja kwa moja kwenye seva mwenyeji ambapo huduma 20 zaidi zinafanya kazi.

Mradi unapaswa kuwa na orodha inayoeleweka ya utegemezi kila wakati (kwa utegemezi ninamaanisha pia mazingira). Vitegemezi vyote lazima vifafanuliwe kwa uwazi na kutengwa.
Hebu tuchukue kwa mfano Kutunga ΠΈ Docker.

Kutunga - kidhibiti kifurushi kinachokuruhusu kusakinisha maktaba katika PHP. Mtunzi hukuruhusu kubainisha matoleo madhubuti au kwa urahisi, na kuyafafanua kwa uwazi. Kunaweza kuwa na miradi 20 tofauti kwenye seva na kila moja itakuwa na orodha ya kibinafsi ya vifurushi na maktaba isiyotegemea nyingine.

Docker - matumizi ambayo hukuruhusu kufafanua na kutenga mazingira ambayo programu itaendesha. Ipasavyo, kama tu na mtunzi, lakini kwa undani zaidi, tunaweza kuamua ni nini programu inafanya kazi nayo. Chagua toleo maalum la PHP, sakinisha tu vifurushi vinavyohitajika ili mradi ufanye kazi, bila kuongeza chochote cha ziada. Na muhimu zaidi, bila kuingilia kati na vifurushi na mazingira ya mashine ya mwenyeji na miradi mingine. Hiyo ni, miradi yote kwenye seva inayoendesha kupitia Docker inaweza kutumia seti yoyote ya vifurushi na mazingira tofauti kabisa.

3. Usanidi

Hifadhi mipangilio kama vidhibiti moja kwa moja kwenye msimbo. Tenganisha viunga kwa seva ya majaribio, tofauti kwa uzalishaji. Unganisha utendakazi wa programu kulingana na mazingira moja kwa moja kwenye mantiki ya biashara ya mradi ukitumia kama ujenzi mwingine.

Mipangilio - hii ndiyo njia pekee ambayo upelekaji wa mradi unapaswa kutofautiana. Kwa kweli, usanidi unapaswa kupitishwa kupitia anuwai za mazingira (env vars).

Hiyo ni, hata ukihifadhi faili kadhaa za usanidi .config.prod .config.local na kuzibadilisha jina wakati wa kupelekwa kwa .config (usanidi kuu ambao programu inasoma data) - hii haitakuwa njia sahihi, kwani katika hali hii maelezo kutoka kwa usanidi yatapatikana kwa umma kwa wasanidi programu wote na data kutoka kwa seva ya uzalishaji itaathiriwa. Mipangilio yote lazima ihifadhiwe moja kwa moja kwenye mfumo wa kupeleka (CI/CD) na itengenezwe kwa mazingira tofauti yenye thamani tofauti zinazohitajika kwa mazingira maalum wakati wa kupelekwa.

4. Huduma za Mtu wa Tatu

Kuwa amefungwa kabisa kwa mazingira, tumia miunganisho tofauti kwa huduma sawa katika mazingira fulani.

Kwa kweli, hatua hii inaingiliana sana na uhakika kuhusu usanidi, kwani bila hatua hii, data ya kawaida ya usanidi haiwezi kufanywa na, kwa ujumla, uwezo wa kusanidi hautapungua.

Miunganisho yote kwa huduma za nje, kama vile seva za foleni, hifadhidata, huduma za akiba, lazima ziwe sawa kwa mazingira ya ndani na mazingira ya mtu wa tatu/uzalishaji. Kwa maneno mengine, wakati wowote, kwa kubadilisha kamba ya unganisho, naweza kuchukua nafasi ya simu kwa msingi # 1 na msingi # 2 bila kubadilisha nambari ya programu. Au, ukiangalia mbele, kama mfano, wakati wa kuongeza huduma, hautalazimika kutaja unganisho kwa njia yoyote maalum kwa seva ya ziada ya kache.

5. Jenga, toa, tekeleza

Kuwa na toleo la mwisho la msimbo kwenye seva, bila nafasi ya kurejesha toleo. Hakuna haja ya kujaza nafasi ya diski. Mtu yeyote anayefikiria kuwa anaweza kutoa nambari katika toleo la umma na kosa ni mpangaji programu mbaya!

Hatua zote za uwekaji lazima zitenganishwe kutoka kwa kila mmoja.

Pata nafasi ya kurudi nyuma. Fanya matoleo na nakala za zamani za programu (tayari zimekusanyika na tayari kwa vita) zimehifadhiwa kwa ufikiaji wa haraka, ili ikiwa kuna makosa unaweza kurejesha toleo la zamani. Hiyo ni, kwa masharti kuna folda releases na folda sasa, na baada ya kupelekwa kwa mafanikio na kukusanya folda sasa iliyounganishwa na kiungo cha mfano kwa toleo jipya ambalo liko ndani releases na jina la kawaida la nambari ya kutolewa.

Hapa ndipo tunapokumbuka utumiaji wa Bluu-Kijani, ambayo hukuruhusu sio tu kubadili kati ya nambari, lakini pia kubadili kati ya rasilimali zote na hata mazingira na uwezo wa kurudisha nyuma kila kitu.

6. Taratibu

Hifadhi data ya hali ya programu moja kwa moja ndani ya programu yenyewe. Tumia vipindi kwenye RAM ya programu yenyewe. Tumia kushiriki kwa wingi kati ya huduma za wahusika wengine iwezekanavyo. Tegemea ukweli kwamba programu inaweza kuwa na mchakato mmoja tu na hairuhusu kuongeza.

Kuhusu vipindi, hifadhi data tu kwenye kashe inayodhibitiwa na huduma za wahusika wengine (memcached, redis), kwa hivyo hata ikiwa una michakato 20 ya programu inayoendeshwa, yeyote kati yao, akiwa amefikia kache, ataweza kuendelea kufanya kazi na mteja katika hali sawa ambayo mtumiaji alikuwa akifanya kazi na programu katika mchakato mwingine. Kwa njia hii, inageuka kuwa bila kujali nakala ngapi za huduma za tatu unazotumia, kila kitu kitafanya kazi kwa kawaida na bila matatizo na upatikanaji wa data.

7. Kufunga bandari

Seva ya wavuti pekee inapaswa kujua jinsi ya kufanya kazi na huduma za watu wengine. Au bora zaidi, sakinisha huduma za wahusika wengine moja kwa moja ndani ya seva ya wavuti. Kwa mfano, kama moduli ya PHP katika Apache.
Huduma zako zote lazima zifikiwe kwa kila mmoja kupitia ufikiaji wa anwani na bandari fulani (localgost:5432, localhost:3000, nginx:80, php-fpm:9000), yaani, kutoka nginx naweza kufikia php- fpm na hadi postgres, na kutoka php-fpm hadi postgres na nginx na kwa kweli kutoka kwa kila huduma naweza kupata huduma nyingine. Kwa njia hii, uwezekano wa huduma haufungamani na uwezekano wa huduma nyingine.

8. Usambamba

Fanya kazi na mchakato mmoja, vinginevyo michakato kadhaa haitaweza kupatana!

Acha nafasi ya kuongeza. Kundi la Docker ni nzuri kwa hili.
Docker Swarm ni zana ya kuunda na kudhibiti vikundi vya kontena kati ya mashine tofauti na rundo la vyombo kwenye mashine moja.

Kwa kutumia kundi, ninaweza kubaini ni rasilimali ngapi nitatenga kwa kila mchakato na ni michakato ngapi ya huduma ile ile nitakayozindua, na sawazisha la ndani, linalopokea data kwenye lango fulani, litaiwakilisha kiotomatiki kwa michakato. Kwa hivyo, kwa kuona kuwa mzigo kwenye seva umeongezeka, naweza kuongeza michakato zaidi, na hivyo kupunguza mzigo kwenye michakato fulani.

9. Kutoweka

Usitumie foleni kufanya kazi na michakato na data. Kuua mchakato mmoja kunapaswa kuathiri programu nzima. Ikiwa huduma moja itapungua, kila kitu kinashuka.

Kila mchakato na huduma zinaweza kuzimwa wakati wowote na hii haipaswi kuathiri huduma nyingine (bila shaka, hii haimaanishi kwamba huduma haitapatikana kwa huduma nyingine, lakini kwamba huduma nyingine haitazimwa baada ya hii). Michakato yote lazima ikomeshwe kwa uzuri, ili ikikatishwa, hakuna data itakayoharibika na mfumo utafanya kazi kwa usahihi utakapoiwasha tena. Hiyo ni, hata katika tukio la kusitishwa kwa dharura, data haipaswi kuharibiwa (utaratibu wa manunuzi unafaa hapa, maswali katika hifadhidata hufanya kazi kwa vikundi tu, na ikiwa angalau swali moja kutoka kwa kikundi litashindwa au kutekelezwa na kosa, basi hakuna swali lingine kutoka kwa kikundi ambalo halifaulu kwa kweli).

10. Usawa wa ukuzaji/uendeshaji wa maombi

Uzalishaji, hatua na toleo la ndani la programu lazima liwe tofauti. Katika uzalishaji tunatumia mfumo wa Yii Lite, na Yii ndani ya nchi, ili ifanye kazi haraka katika uzalishaji!

Kwa kweli, upelekaji wote na kazi na nambari inapaswa kuwa katika mazingira karibu sawa (hatuzungumzii juu ya vifaa vya mwili). Pia, mfanyakazi yeyote wa maendeleo anapaswa kuwa na uwezo wa kupeleka msimbo kwa uzalishaji ikiwa ni lazima, na sio idara ya watoa mafunzo maalum, ambayo tu shukrani kwa nguvu maalum inaweza kuinua maombi katika uzalishaji.

Docker pia hutusaidia na hii. Ikiwa vidokezo vyote vya awali vinazingatiwa, kutumia docker italeta mchakato wa kupeleka mazingira kwenye uzalishaji na kwenye mashine ya ndani ili kuingiza amri moja au mbili.

11. Magogo

Tunaandika kumbukumbu kwa faili na hifadhidata! Hatusafishi faili na hifadhidata kutoka kwa kumbukumbu. Wacha tununue gari ngumu na ka 9000 za Peta na hiyo ni sawa.

Kumbukumbu zote zinapaswa kuzingatiwa kama mkondo wa matukio. Programu yenyewe haipaswi kuhusishwa katika usindikaji wa kumbukumbu. Kumbukumbu zinapaswa kutolewa kwa stdout au kutumwa kupitia itifaki kama vile udp, ili kufanya kazi na kumbukumbu kusilete shida kwa programu. Graylog ni nzuri kwa hili. Graylog kupokea kumbukumbu zote kupitia udp (itifaki hii haihitaji kusubiri jibu kuhusu mapokezi ya mafanikio ya pakiti) haiingilii na maombi kwa njia yoyote na inahusika tu na kumbukumbu za muundo na usindikaji. Mantiki ya maombi haibadilika kufanya kazi na mbinu kama hizo.

12. Kazi za utawala

Ili kusasisha data, hifadhidata, n.k., tumia ncha iliyoundwa tofauti katika API, kuitekeleza mara 2 mfululizo itasababisha kila kitu kurudufiwa. Lakini wewe si mjinga, hutabofya mara mbili, na hatuhitaji uhamiaji.

Kazi zote za usimamizi zinapaswa kufanywa katika mazingira sawa na msimbo wote, katika kiwango cha kutolewa. Hiyo ni, ikiwa tunahitaji kubadilisha muundo wa hifadhidata, basi hatutafanya kwa mikono kwa kubadilisha majina ya safu wima na kuongeza mpya kupitia zana zingine za usimamizi wa hifadhidata. Kwa vitu kama hivyo, tunaunda maandishi tofauti - uhamiaji, ambayo hufanywa kila mahali na katika mazingira yote kwa njia ile ile na matokeo ya kawaida na ya kueleweka. Kwa kazi zingine zote, kama vile kujaza mradi na data, mbinu zinazofanana zinapaswa kutumika.

Utekelezaji wa mfano katika PHP, Laravel, Laradock, Docker-Compose

P.S Mifano zote zilifanywa kwenye MacOS. Wengi wao pia wanafaa kwa Linux. Watumiaji wa Windows, nisamehe, lakini sijafanya kazi na Windows kwa muda mrefu.

Hebu fikiria hali ambapo hatuna toleo lolote la PHP iliyosanikishwa kwenye PC yetu na hakuna chochote.
Sakinisha matoleo ya hivi karibuni ya docker na docker-compose. (hii inaweza kupatikana kwenye mtandao)

docker -v && 
docker-compose -v

Ukuzaji wa maombi na uwekaji wa Bluu-Kijani, kulingana na Mbinu ya Programu ya Kumi na Mbili na mifano katika php na docker.

1. Weka Laradock

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

Ukuzaji wa maombi na uwekaji wa Bluu-Kijani, kulingana na Mbinu ya Programu ya Kumi na Mbili na mifano katika php na docker.

Kuhusu Laradock, nitasema kuwa ni jambo la baridi sana, ambalo lina vyombo vingi na vitu vya msaidizi. Lakini nisingependekeza kutumia Laradock kama vile bila marekebisho katika uzalishaji kwa sababu ya upungufu wake. Ni bora kuunda vyombo vyako mwenyewe kulingana na mifano huko Laradock, hii itaboreshwa zaidi, kwa sababu hakuna mtu anayehitaji kila kitu kilichopo kwa wakati mmoja.

2. Sanidi Laradock ili kuendesha programu yetu.

cd laradock && 
cp env-example .env

Ukuzaji wa maombi na uwekaji wa Bluu-Kijani, kulingana na Mbinu ya Programu ya Kumi na Mbili na mifano katika php na docker.

2.1. Fungua saraka ya habr (folda kuu ambayo laradock imeundwa) katika mhariri fulani. (Katika kesi yangu ya PHPStorm)

Katika hatua hii tunaupa mradi jina tu.

Ukuzaji wa maombi na uwekaji wa Bluu-Kijani, kulingana na Mbinu ya Programu ya Kumi na Mbili na mifano katika php na docker.

2.2. Fungua picha ya nafasi ya kazi. (Kwa upande wako, picha zitachukua muda kuunda)
Nafasi ya kazi ni picha iliyoandaliwa maalum kwa kufanya kazi na mfumo kwa niaba ya msanidi programu.

Tunaingia ndani ya chombo kwa kutumia

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

Ukuzaji wa maombi na uwekaji wa Bluu-Kijani, kulingana na Mbinu ya Programu ya Kumi na Mbili na mifano katika php na docker.

2.3. Inaweka Laravel

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

Ukuzaji wa maombi na uwekaji wa Bluu-Kijani, kulingana na Mbinu ya Programu ya Kumi na Mbili na mifano katika php na docker.

2.4. Baada ya usakinishaji, tunaangalia ikiwa saraka iliyo na mradi imeundwa na kuua kutunga.

ls
exit
docker-compose down

Ukuzaji wa maombi na uwekaji wa Bluu-Kijani, kulingana na Mbinu ya Programu ya Kumi na Mbili na mifano katika php na docker.

2.5. Hebu turejee kwa PHPStorm na tuweke njia sahihi ya programu yetu ya laravel katika faili ya .env.

Ukuzaji wa maombi na uwekaji wa Bluu-Kijani, kulingana na Mbinu ya Programu ya Kumi na Mbili na mifano katika php na docker.

3. Ongeza msimbo wote kwa Git.

Ili kufanya hivyo, tutaunda hazina kwenye Github (au mahali pengine popote). Wacha tuende kwenye saraka ya habr kwenye terminal na tutekeleze nambari ifuatayo.

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

Wacha tuangalie ikiwa kila kitu kiko sawa.

Ukuzaji wa maombi na uwekaji wa Bluu-Kijani, kulingana na Mbinu ya Programu ya Kumi na Mbili na mifano katika php na docker.

Kwa urahisi, ninapendekeza kutumia kiolesura cha kuona cha Git, kwa upande wangu ni GitKraken. (hapa kuna kiungo cha rufaa)

4. Hebu tuzindue!

Kabla ya kuanza, hakikisha kuwa hakuna kitu kinachoning'inia kwenye bandari 80 na 443.

docker-compose up -d nginx php-fpm

Ukuzaji wa maombi na uwekaji wa Bluu-Kijani, kulingana na Mbinu ya Programu ya Kumi na Mbili na mifano katika php na docker.

Kwa hivyo, mradi wetu una huduma 3 tofauti:

  • nginx - seva ya wavuti
  • php-fpm - php kwa kupokea maombi kutoka kwa seva ya wavuti
  • nafasi ya kazi - php kwa watengenezaji

Kwa sasa, tumefaulu kuwa tumeunda programu ambayo inakidhi alama 4 kati ya 12, ambazo ni:

1. Msingi wa Msimbo - nambari zote ziko kwenye hazina moja (noti ndogo: inaweza kuwa sahihi kuongeza docker ndani ya mradi wa laravel, lakini hii sio muhimu).

2. Vitegemezi - Vitegemezi vyetu vyote vimeandikwa kwa uwazi katika application/composer.json na katika kila faili ya Docker ya kila kontena.

3. Huduma za Kuunga mkono - Kila moja ya huduma (php-fom, nignx, workspace) inaishi maisha yake mwenyewe na imeunganishwa kutoka nje na wakati wa kufanya kazi na huduma moja, nyingine haitaathirika.

4. Mchakato - kila huduma ni mchakato mmoja. Kila moja ya huduma haina kudumisha hali ya ndani.

5. Kufunga bandari

docker ps

Ukuzaji wa maombi na uwekaji wa Bluu-Kijani, kulingana na Mbinu ya Programu ya Kumi na Mbili na mifano katika php na docker.

Kama tunavyoona, kila huduma inaendeshwa kwenye bandari yake na inapatikana kwa huduma zingine zote.

6. Fedha

Docker huturuhusu kuibua michakato mingi ya huduma sawa na kusawazisha upakiaji kiotomatiki kati yao.

Wacha tuzuie vyombo na tuvipitishe kupitia bendera -- wadogo

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

Ukuzaji wa maombi na uwekaji wa Bluu-Kijani, kulingana na Mbinu ya Programu ya Kumi na Mbili na mifano katika php na docker.

Kama tunavyoona, nakala zimeundwa za kontena la php-fpm. Hatuhitaji kubadilisha chochote katika kufanya kazi na chombo hiki. Pia tunaendelea kuipata kwenye bandari 9000, na Docker inadhibiti mzigo kati ya makontena kwa ajili yetu.

7. Kutoweka - kila chombo kinaweza kuuawa bila kumdhuru mwingine. Kusimamisha au kuwasha tena kontena hakutaathiri utendakazi wa programu wakati wa uzinduzi unaofuata. Kila chombo kinaweza pia kuinuliwa wakati wowote.

8. Usawa wa ukuzaji wa programu/uendeshaji - mazingira yetu yote ni sawa. Kwa kuendesha mfumo kwenye seva katika uzalishaji, hutalazimika kubadilisha chochote katika amri zako. Kila kitu kitategemea Docker kwa njia ile ile.

9. Kuweka magogo - kumbukumbu zote katika vyombo hivi huenda kutiririka na zinaonekana kwenye kiweko cha Docker. (katika kesi hii, kwa kweli, na vyombo vingine vya nyumbani, hii inaweza kuwa sio ikiwa hautaitunza)

 docker-compose logs -f

Ukuzaji wa maombi na uwekaji wa Bluu-Kijani, kulingana na Mbinu ya Programu ya Kumi na Mbili na mifano katika php na docker.

Lakini, kuna mtego kwa kuwa maadili ya Chaguo-msingi katika PHP na Nginx pia huandika kumbukumbu kwa faili. Ili kukidhi mambo 12, ni muhimu kukatwa kuandika kumbukumbu kwa faili katika usanidi wa kila kontena kando.

Docker pia hutoa uwezo wa kutuma kumbukumbu sio tu kwa stdout, lakini pia kwa vitu kama vile greylog, ambayo nilitaja hapo juu. Na ndani ya logi ya kijivu, tunaweza kuendesha kumbukumbu kama tunavyotaka na programu yetu haitagundua hii kwa njia yoyote.

10. Kazi za utawala - kazi zote za usimamizi zinatatuliwa na laravel shukrani kwa zana ya ufundi kama vile waundaji wa programu ya sababu 12 wangependa.

Kama mfano, nitaonyesha jinsi amri zingine zinatekelezwa.
Tunaingia kwenye chombo.

 
docker-compose exec workspace bash
php artisan list

Ukuzaji wa maombi na uwekaji wa Bluu-Kijani, kulingana na Mbinu ya Programu ya Kumi na Mbili na mifano katika php na docker.

Sasa tunaweza kutumia amri yoyote. (tafadhali kumbuka kuwa hatukusanidi hifadhidata na kache, kwa hivyo nusu ya amri hazitatekelezwa kwa usahihi, kwa sababu zimeundwa kufanya kazi na kashe na hifadhidata).

Ukuzaji wa maombi na uwekaji wa Bluu-Kijani, kulingana na Mbinu ya Programu ya Kumi na Mbili na mifano katika php na docker.

11. Mipangilio na 12. Kujenga, kutolewa, kukimbia

Nilitaka kuweka wakfu sehemu hii kwa Upelekaji wa Bluu-Kijani, lakini ilionekana kuwa pana sana kwa nakala hii. Nitaandika makala tofauti kuhusu hili.

Kwa kifupi, dhana hiyo inategemea mifumo ya CI/CD kama Jenkins ΠΈ Gitlab CI. Katika zote mbili, unaweza kuweka anuwai za mazingira zinazohusiana na mazingira maalum. Ipasavyo, katika hali hii, hatua c itatimizwa Mipangilio.

Na uhakika kuhusu Kujenga, kutolewa, kukimbia hutatuliwa na vitendaji vilivyojengwa ndani na jina Pipeline.

Pipeline inakuwezesha kugawanya mchakato wa kupeleka katika hatua nyingi, kuonyesha hatua za mkusanyiko, kutolewa na utekelezaji. Pia katika Pipeline, unaweza kuunda chelezo, na kwa kweli chochote. Hiki ni chombo chenye uwezo usio na kikomo.

Msimbo wa maombi upo Github.
Usisahau kuanzisha moduli ndogo wakati wa kuunda hazina hii.

P.S.: Mbinu hizi zote zinaweza kutumika na huduma zingine zozote na lugha za programu. Jambo kuu ni kwamba kiini haina tofauti.

Chanzo: mapenzi.com

Kuongeza maoni