Ka hoʻomohala noiʻi a me ka hoʻolaha ʻana i ka Blue-Green, e pili ana i ka ʻōnaehana The Twelve-Factor App me nā hiʻohiʻona ma php a docker.

Ka hoʻomohala noiʻi a me ka hoʻolaha ʻana i ka Blue-Green, e pili ana i ka ʻōnaehana The Twelve-Factor App me nā hiʻohiʻona ma php a docker.

ʻO ka mua, kahi manaʻo liʻiliʻi. Ua aha ʻO ka ʻumikūmālua-Factor App?

Ma nā huaʻōlelo maʻalahi, ua hoʻolālā ʻia kēia palapala e hoʻomaʻamaʻa i ka hoʻomohala ʻana i nā noi SaaS, e kōkua ana i ka hoʻomaopopo ʻana i nā mea hoʻomohala a me nā ʻenekini DevOps e pili ana i nā pilikia a me nā hana i ʻike pinepine ʻia i ka hoʻomohala ʻana i nā noi hou.

Ua hana ʻia ka palapala e nā mea hoʻomohala o ka platform Heroku.

Hiki ke hoʻohana ʻia ka Twelve-Factor App i nā noi i kākau ʻia ma kekahi ʻōlelo papahana a me ka hoʻohana ʻana i kekahi hui pū ʻana o nā lawelawe kākoʻo (nā waihona waihona, nā queues memo, caches, etc.).

ʻO ka pōkole e pili ana i nā kumu i hoʻokumu ʻia ai kēia ʻano hana:

  1. Codebase - Hoʻokahi codebase i ʻimi ʻia i ka mana mana - hoʻolālā he nui
  2. Nā hilinaʻi - Hōʻike maopopo a hoʻokaʻawale i nā hilinaʻi
  3. Kauoa - Mālama i ka hoʻonohonoho ʻana i ka wā holo
  4. Nā lawelawe kākoʻo - E noʻonoʻo i nā lawelawe kākoʻo e like me nā kumuwaiwai plug-in
  5. Kūkulu, hoʻokuʻu, holo - E hoʻokaʻawale loa i ka hui a me nā pae hoʻokō
  6. Nā kaʻina hana - E holo i ka noi ma ke ʻano he hoʻokahi a ʻoi aku paha nā kaʻina hana stateless
  7. Hoʻopaʻa awa - E lawe aku i nā lawelawe ma o ka hoʻopaʻa ʻana i ke awa
  8. Hoʻohālike - E hoʻonui i kāu noi me ka hoʻohana ʻana i nā kaʻina hana
  9. Hoʻokuʻu ʻia - E hoʻonui i ka hilinaʻi me ka hoʻomaka wikiwiki a me ka pani maʻemaʻe
  10. Hoʻomohala noi/parity hana - E mālama i kāu hoʻomohala ʻana, hoʻokūkū, a me nā wahi hana e like me ka hiki
  11. Ke kālai lāʻau - E nānā i ka log ma ke ʻano he kahawai o nā hanana
  12. Nā hana hoʻomalu - Hana i nā hana hoʻokele / hoʻokele me nā kaʻina hana ad hoc

Hiki iā ʻoe ke loaʻa ka ʻike hou aʻe e pili ana i nā kumu 12 mai kēia mau kumuwaiwai:

He aha ka hoʻolaha ʻana i ka Blue-Green?

ʻO ka hoʻolālā Blue-Green kahi ala e hāʻawi ai i kahi noi i ? iecaianoaaiiuo ma ke ala e ʻike ʻole ai ka mea kūʻai hope i nā loli ma kāna ʻaoʻao. I nā huaʻōlelo ʻē aʻe, e kau ana i kahi noi me ka zero manawa wāwae.

ʻO ka hoʻolālā BG Deploy maʻamau e like me ka mea i hōʻike ʻia ma ke kiʻi ma lalo nei.

Ka hoʻomohala noiʻi a me ka hoʻolaha ʻana i ka Blue-Green, e pili ana i ka ʻōnaehana The Twelve-Factor App me nā hiʻohiʻona ma php a docker.

  • I ka hoʻomaka ʻana he 2 mau kikowaena kino me ka helu like loa, ka noi, ka papahana, a aia kahi alalai (balancer).
  • Hoʻomaka mua ka mea alalai i nā noi āpau i kekahi o nā kikowaena ('ōmaʻomaʻo).
  • I ka manawa e pono ai ʻoe e hoʻokuʻu hou, hoʻonui ʻia ka papahana holoʻokoʻa ma kahi kikowaena ʻē aʻe (Blue), ʻaʻole ia e hana nei i nā noi.
  • Ma hope o ke kau ʻana o ke code polū Ua hoʻonui hou ʻia ke kikowaena, ua hāʻawi ʻia ke alalai i ke kauoha e hoʻololi mai ʻōmaʻomaʻo maluna o Blue kikowaena.
  • I kēia manawa ʻike nā mea kūʻai aku i ka hopena o ke code e holo ana me Blue kikowaena.
  • No kekahi manawa, 'ōmaʻomaʻo lawelawe ʻia ke kikowaena ma ke ʻano he kope hoʻihoʻi i ka hihia o ka hoʻoili ʻole ʻia i Blue server a i ka wā o ka hāʻule ʻana a me nā ʻino, hoʻololi ke alalai i ka kahe o ka mea hoʻohana i hope 'ōmaʻomaʻo server me ka mana paʻa kahiko, a hoʻouna ʻia ke code hou no ka hoʻoponopono ʻana a me ka hoʻāʻo ʻana.
  • A i ka pau ʻana o ke kaʻina hana, ua hōʻano hou ʻia ma ke ʻano like 'ōmaʻomaʻo kikowaena. A ma hope o ka hoʻonui ʻana, hoʻololi ke alalai i ke kahe noi 'ōmaʻomaʻo kikowaena.

He maikaʻi loa nā mea a pau a i ka nānā mua ʻana ʻaʻohe pilikia me ia.
Akā, ʻoiai mākou e noho nei i kēia ao hou, ʻaʻole kūpono ke koho me ka hoʻololi kino e like me ka mea i hōʻike ʻia ma ka papa hana maʻamau. E hoʻopaʻa i ka ʻike no kēia manawa, e hoʻi mākou i laila ma hope.

ʻO ka ʻōlelo aʻo maikaʻi ʻole

Akahana: Hōʻike nā hiʻohiʻona ma lalo nei i nā pono hana aʻu e hoʻohana ai, hiki iā ʻoe ke hoʻohana i nā mea ʻē aʻe me nā hana like.

ʻO ka hapa nui o nā hiʻohiʻona e hui pū me ka hoʻomohala pūnaewele (he mea kāhāhā kēia), me PHP a me Docker.

Hāʻawi nā paukū ma lalo nei i kahi wehewehe maʻalahi o ka hoʻohana ʻana i nā kumu me ka hoʻohana ʻana i nā hiʻohiʻona kikoʻī; inā makemake ʻoe e loaʻa hou i ka manaʻo e pili ana i kēia kumuhana, e hahai i nā loulou i luna i ke kumu kumu.

1. Codebase

E hoʻohana i ka FTP a me FileZilla e hoʻouka i nā faila i nā kikowaena i kēlā me kēia manawa, mai mālama i ke code ma kahi ʻē aʻe ma ka kikowaena hana.

Pono ka papahana i hoʻokahi kumu code, ʻo ia hoʻi, hele mai nā code āpau mai hoʻokahi ʻO Git waihona waihona. Hoʻohana nā kikowaena (ka hana ʻana, ka hana ʻana, ka hoʻāʻo1, ka hoʻāʻo2...) i nā code mai nā lālā o kahi waihona maʻamau. Ma kēia ala mākou e hoʻokō ai i ke kūlike code.

2. Nā hilinaʻi

Hoʻoiho pololei i nā hale waihona puke a pau i ke kumu o ka papahana. Hana i nā mea hou ma ka hoʻoili ʻana i ke code hou i ka waihona me ka mana o ka waihona o kēia manawa. E hoʻouka pololei i nā pono pono āpau ma ka server host kahi e holo nei nā lawelawe ʻē aʻe 20.

Pono e loaʻa i kahi papahana kahi papa inoa maopopo o nā hilinaʻi (ma nā mea hilinaʻi ʻo wau hoʻi ʻo ke kaiapuni). Pono e wehewehe a hoʻokaʻawale ʻia nā mea hilinaʻi a pau.
E lawe kākou i laʻana haku mele и Docker.

haku mele — he pūʻolo mana e ʻae iā ʻoe e hoʻokomo i nā hale waihona puke ma PHP. Hāʻawi ka haku mele iā ʻoe e hōʻike i nā mana a i ʻole ka wehe ʻana, a wehewehe pono iā lākou. Hiki ke loaʻa he 20 mau papahana like ʻole ma ke kikowaena a loaʻa i kēlā me kēia me kahi papa inoa pilikino o nā pūʻolo a me nā hale waihona puke kūʻokoʻa i kekahi.

Docker - he mea pono e hiki ai iā ʻoe ke wehewehe a hoʻokaʻawale i ke kaiapuni kahi e holo ai ka noi. No laila, e like me ka haku mele, akā ʻoi aku ka maikaʻi, hiki iā mākou ke hoʻoholo i ka hana o ka noi. E koho i kahi mana kiko'ī o PHP, e hoʻokomo i nā pūʻolo pono no ka hana ʻana o ka papahana, me ka hoʻohui ʻole i kekahi mea ʻē aʻe. A ʻo ka mea nui loa, me ka ʻole e hoʻopili i nā pūʻolo a me ke kaiapuni o ka mīkini hoʻokipa a me nā papahana ʻē aʻe. ʻO ia hoʻi, hiki i nā papahana āpau ma ka server e holo ana ma o Docker ke hoʻohana pono i nā pūʻulu o nā pūʻulu a me kahi ʻano ʻokoʻa.

3. Hoʻonohonoho

E mālama pono i nā configs e like me nā mea mau i loko o ke code. Hoʻokaʻawale i nā mea mau no ka server hoʻāʻo, hoʻokaʻawale no ka hana ʻana. E hoʻopaʻa i ka hana o ka noi ma muli o ke kaiapuni pololei i ka loiloi ʻoihana o ka papahana me ka hoʻohana ʻana inā kūkulu ʻia.

Nā hoʻonohonoho - ʻo kēia wale nō ke ala e ʻokoʻa ai nā hoʻolālā papahana. ʻO ka mea kūpono, pono e hāʻawi ʻia nā hoʻonohonoho ma nā ʻano hoʻololi kaiapuni (env vars).

ʻO ia hoʻi, inā ʻoe e mālama i kekahi mau faila hoʻonohonoho .config.prod .config.local a hoʻololi hou iā lākou i ka manawa o ka waiho ʻana iā .config (ka config nui kahi e heluhelu ai ka noi i ka ʻikepili) - ʻaʻole kēia ke ala kūpono, ʻoiai. i kēia hihia e loaʻa i ka lehulehu ka ʻike mai nā hoʻonohonoho ʻana i nā mea hoʻomohala noi āpau a e hoʻopili ʻia nā ʻikepili mai ka kikowaena hana. Pono e mālama pono ʻia nā hoʻonohonoho āpau i ka ʻōnaehana deployment (CI/CD) a hana ʻia no nā kaiapuni like ʻole me nā waiwai like ʻole e pono ai no kahi kaiapuni kikoʻī i ka manawa o ka waiho ʻana.

4. Nā lawelawe ʻaoʻao ʻekolu

E pili pono i ke kaiapuni, e hoʻohana i nā pilina like ʻole no nā lawelawe like i kekahi mau kaiapuni.

ʻO kaʻoiaʻiʻo, ua paʻa loa kēia helu me ka helu e pili ana i nā hoʻonohonoho, no ka mea me ka ʻole o kēia wahi, ʻaʻole hiki ke hana i nā ʻikepili hoʻonohonoho maʻamau a, ma ke ʻano nui, e hāʻule ka hiki ke hoʻonohonoho i ka mea ʻole.

ʻO nā pili āpau i nā lawelawe o waho, e like me nā server queue, databases, caching services, pono e like no ke kaiapuni kūloko a me ke kaiapuni ʻaoʻao ʻekolu / hana. ʻO ia hoʻi, i kēlā me kēia manawa, ma ka hoʻololi ʻana i ke kaula pili, hiki iaʻu ke hoʻololi i nā kelepona i ka base #1 me ka base #2 me ka ʻole o ka hoʻololi ʻana i ke code noi. A i ʻole, e nānā ana i mua, ma ke ʻano he laʻana, i ka wā e hoʻonui ai i ka lawelawe, ʻaʻole pono ʻoe e kuhikuhi i ka pilina ma kekahi ala kūikawā no kahi kikowaena cache hou.

5. Kūkulu, hoʻokuʻu, hoʻokō

Loaʻa wale ka mana hope o ke code ma ke kikowaena, me ka hiki ʻole ke hoʻihoʻi i ka hoʻokuʻu. ʻAʻole pono e hoʻopiha i kahi diski. ʻO ka mea e manaʻo e hiki iā lākou ke hoʻokuʻu i ke code i ka hana me ka hewa he polokalamu maikaʻi ʻole ia!

Pono e hoʻokaʻawale ʻia nā pae āpau o ka hoʻolaha ʻana mai kekahi i kekahi.

Loaʻa ka manawa e ʻōwili i hope. Hana i nā hoʻokuʻu me nā kope kahiko o ka noi (ua ʻākoakoa a mākaukau no ke kaua) i mālama ʻia i ke komo wikiwiki ʻana, i hiki ke hoʻihoʻi i ka mana kahiko. ʻO ia hoʻi, conditionally aia kahi waihona hookuu aku oia i a me ka waihona ʻikena, a ma hope o ka holomua ʻana a me ka hui ʻana i ka waihona ʻikena hoʻopili ʻia e kahi loulou hōʻailona i ka hoʻokuʻu hou e waiho nei i loko hookuu aku oia i me ka inoa maʻamau o ka helu hoʻokuʻu.

ʻO kēia kahi a mākou e hoʻomanaʻo ai i ka hoʻolaha ʻana o Blue-Green, kahi e hiki ai iā ʻoe ke hoʻololi i waena o nā code, akā e hoʻololi pū i waena o nā kumuwaiwai āpau a me nā wahi me ka hiki ke hoʻohuli i nā mea āpau.

6. Nā hana

E mālama pono i ka ʻikepili mokuʻāina no ka polokalamu ponoʻī. E hoʻohana i nā kau ma ka RAM o ka noi ponoʻī. E hoʻohana i ka nui kaʻana like ma waena o nā lawelawe ʻaoʻao ʻekolu e like me ka hiki. E hilinaʻi ma ka ʻoiaʻiʻo hiki i ka noi ke loaʻa i hoʻokahi kaʻina hana a ʻaʻole ʻae i ka scaling.

E pili ana i nā kau, e mālama i ka ʻikepili i loko o kahi cache i mālama ʻia e nā lawelawe ʻaoʻao ʻekolu (memcached, redis), no laila inā he 20 mau kaʻina noi e holo nei, hiki i kekahi o lākou, ke komo i ka cache, hiki ke hoʻomau i ka hana me ka mea kūʻai aku. ʻO ka moku'āina like kahi i hana ai ka mea hoʻohana me ka noi ma kahi kaʻina hana ʻē aʻe. Me kēia ala, ʻike ʻia ʻaʻole pili i ka nui o nā kope o nā lawelawe ʻaoʻao ʻekolu āu e hoʻohana ai, e hana maʻamau nā mea āpau a me ka pilikia ʻole o ka loaʻa ʻana o ka ʻikepili.

7. Nakinaki awa

ʻO ke kikowaena pūnaewele wale nō e ʻike pehea e hana ai me nā lawelawe ʻaoʻao ʻekolu. A i ʻole ʻoi aku ka maikaʻi, e hoʻokomo i nā lawelawe ʻaoʻao ʻekolu i loko o ka kikowaena pūnaewele. No ka laʻana, ma ke ʻano he module PHP ma Apache.
Pono e ʻike ʻia kāu mau lawelawe āpau ma o ke komo ʻana i kekahi helu wahi a me ke awa (localgost:5432, localhost:3000, nginx:80, php-fpm:9000), ʻo ia hoʻi, mai ka nginx hiki iaʻu ke komo i ka php-fpm a postgres, a mai php-fpm i postgres a me nginx a mai kēlā me kēia lawelawe hiki iaʻu ke komo i kahi lawelawe ʻē aʻe. ʻO kēia ala, ʻaʻole pili ka viability o kahi lawelawe i ka hiki o kahi lawelawe ʻē aʻe.

8. Ka like ole

E hana me hoʻokahi kaʻina hana, a i ʻole, ʻaʻole hiki i nā kaʻina hana ke launa pū kekahi me kekahi!

E waiho i wahi no ka scaling. He mea maikaʻi loa ka Docker swarm no kēia.
He mea hana ʻo Docker Swarm no ka hana ʻana a me ka mālama ʻana i nā pūʻulu o nā ipu ma waena o nā mīkini like ʻole a me kahi pūʻulu pahu ma ka mīkini hoʻokahi.

Me ka hoʻohana ʻana i ka pūʻulu, hiki iaʻu ke hoʻoholo i ka nui o nā kumuwaiwai aʻu e hoʻokaʻawale ai i kēlā me kēia kaʻina hana a me ka nui o nā kaʻina hana o ka lawelawe like aʻu e hoʻomaka ai, a ʻo ka mea kaulike kūloko, e loaʻa ana ka ʻikepili ma kahi awa i hāʻawi ʻia, e hoʻololi koke iā ia i nā kaʻina hana. No laila, i ka ʻike ʻana ua hoʻonui ʻia ka ukana ma ke kikowaena, hiki iaʻu ke hoʻohui i nā kaʻina hana hou aʻe, a laila e hōʻemi i ka ukana ma kekahi mau kaʻina.

9. Hoʻokuʻu ʻia

Mai hoʻohana i nā pila e hana me nā kaʻina hana a me nā ʻikepili. ʻO ka pepehi ʻana i hoʻokahi kaʻina e pili i ka noi holoʻokoʻa. Inā hāʻule kekahi lawelawe, pau nā mea a pau.

Hiki ke hoʻopauʻia kēlā me kēia kaʻina hana a me ka lawelawe i kēlā me kēia manawa aʻaʻole pono kēia e hoʻopili i nā lawelawe'ē aʻe (ʻoiaʻiʻo,ʻaʻole kēia manaʻo e loaʻaʻole ka lawelawe no kahi lawelawe'ē aʻe, akā,ʻaʻole e pio kekahi lawelawe ma hope o kēia). Pono e hoʻopau maikaʻi ʻia nā kaʻina hana a pau, i ka wā e hoʻopau ʻia ai, ʻaʻohe ʻikepili e pōʻino a e hana pono ka ʻōnaehana i ka manawa aʻe e hoʻā ai ʻoe. ʻO ia hoʻi, i ka wā o ka hoʻopau ulia pōpilikia, ʻaʻole pono e hōʻino ʻia ka ʻikepili (kūpono ke ʻano hana ma ʻaneʻi, hana nā nīnau ma ka waihona i nā hui wale nō, a inā ʻaʻole i hoʻokō ʻia kahi nīnau mai ka hui. hewa, a laila ʻaʻohe nīnau ʻē aʻe mai ka hui i hāʻule i ka ʻoiaʻiʻo).

10. Hoʻomohala noi/parity hana

Pono e ʻokoʻa ka hana ʻana, ka hana ʻana a me ka mana kūloko o ka noi. Ma ka hana ʻana, hoʻohana mākou i ka Yii Lite framework, a me Yii kūloko, i ʻoi aku ka wikiwiki o ka hana ʻana!

ʻO ka ʻoiaʻiʻo, ʻo nā hoʻolālā āpau a me nā hana me nā code pono e kokoke i kahi ʻano like (ʻaʻole mākou e kamaʻilio e pili ana i nā lako kino). Eia kekahi, pono e hiki i kekahi limahana hoʻomohala ke kau i ke code i ka hana inā pono, ʻaʻole i kahi ʻoihana devops i hoʻomaʻamaʻa kūikawā, e hoʻomaikaʻi wale i ka ikaika kūikawā hiki ke hāpai i ka noi i ka hana.

Kōkua ʻo Docker iā mākou me kēia. Inā ʻike ʻia nā helu mua a pau, e hoʻohana ana i ka docker i ke kaʻina hana o ka hoʻolālā ʻana i ke kaiapuni ma ka hana ʻana a ma ka mīkini kūloko e komo i hoʻokahi a ʻelua mau kauoha.

11. Nā lāʻau

Kākau mākou i nā moʻolelo i nā faila a me nā waihona! ʻAʻole mākou e hoʻomaʻemaʻe i nā faila a me nā waihona mai nā lāʻau. E kūʻai wale kāua i ka pahu paʻa me 9000 Peta bytes a maikaʻi kēlā.

Pono e noʻonoʻo ʻia nā moʻolelo a pau he kahawai o nā hanana. ʻAʻole pono ka noi ponoʻī e komo i ka hoʻoili ʻana i nā lāʻau. Pono e hoʻopuka ʻia nā logs i stdout a i hoʻouna ʻia ma o kahi protocol e like me udp, no laila ʻaʻole pilikia ka hana ʻana me nā lāʻau no ka noi. maikaʻi ka graylog no kēia. ʻO ka loaʻa ʻana o Graylog i nā lāʻau āpau ma o udp (ʻaʻole pono kēia protocol e kali i kahi pane e pili ana i ka hoʻokipa kūleʻa ʻana o ka ʻeke) ʻaʻole ia e hoʻopilikia i ka noi ma kekahi ʻano a pili wale i ka hoʻonohonoho ʻana a me ka hana ʻana i nā lāʻau. ʻAʻole loli ka loiloi noi e hana me ia ʻano ala.

12. Na hana hooponopono

No ka hōʻano hou ʻana i ka ʻikepili, nā ʻikepili, a me nā mea ʻē aʻe, e hoʻohana i kahi hopena i hana ʻia i loko o ka API, ʻo ka hoʻokō ʻana i 2 mau manawa i ka lālani e hopena i nā mea āpau. Akā ʻaʻole ʻoe naʻaupō, ʻaʻole ʻoe e kaomi ʻelua, a ʻaʻole pono mākou i ka neʻe.

Pono e hoʻokō ʻia nā hana hoʻokele a pau ma ke ʻano like me nā code āpau, ma ka pae hoʻokuʻu. ʻO ia hoʻi, inā pono mākou e hoʻololi i ke ʻano o ka waihona, a laila ʻaʻole mākou e hana me ka lima ma ka hoʻololi ʻana i nā inoa o nā kolamu a me ka hoʻohui ʻana i nā mea hou ma o kekahi mau mea hana hoʻokele ʻikepili ʻike. No ia mau mea, hana mākou i nā palapala ʻokoʻa - nā neʻe ʻana, i hana ʻia ma nā wahi āpau a ma nā wahi āpau ma ke ʻano like me kahi hopena maʻamau a maopopo. No nā hana ʻē aʻe, e like me ka hoʻopiha ʻana i ka papahana me ka ʻikepili, pono e hoʻohana ʻia nā ʻano hana like.

Hoʻohālike hoʻokō ma PHP, Laravel, Laradock, Docker-Compose

PS Ua hana ʻia nā hiʻohiʻona āpau ma MacOS. He kūpono ka hapa nui o lākou no Linux. Nā mea hoʻohana Windows, e kala mai iaʻu, akā ʻaʻole wau i hana me Windows no ka manawa lōʻihi.

E noʻonoʻo kākou i kahi kūlana i loaʻa ʻole kahi mana o PHP i hoʻokomo ʻia ma kā mākou PC a ʻaʻohe mea ʻole.
E hoʻouka i nā mana hou loa o docker a docker-compose. (hiki ke loaʻa kēia ma ka Pūnaewele)

docker -v && 
docker-compose -v

Ka hoʻomohala noiʻi a me ka hoʻolaha ʻana i ka Blue-Green, e pili ana i ka ʻōnaehana The Twelve-Factor App me nā hiʻohiʻona ma php a docker.

1. Kau Laradock

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

Ka hoʻomohala noiʻi a me ka hoʻolaha ʻana i ka Blue-Green, e pili ana i ka ʻōnaehana The Twelve-Factor App me nā hiʻohiʻona ma php a docker.

E pili ana iā Laradock, e ʻōlelo wau he mea ʻoluʻolu loa ia, aia ka nui o nā ipu a me nā mea kōkua. Akā ʻaʻole wau e manaʻo e hoʻohana iā Laradock e like me ka ʻole o ka hoʻololi ʻana i ka hana ʻana ma muli o kāna redundancy. ʻOi aku ka maikaʻi o ka hana ʻana i kāu mau pahu ponoʻī e pili ana i nā hiʻohiʻona ma Laradock, e ʻoi aku ka maikaʻi o kēia, no ka mea ʻaʻohe mea e pono i nā mea āpau i ka manawa like.

2. E hoʻonohonoho iā Laradock e holo i kā mākou noi.

cd laradock && 
cp env-example .env

Ka hoʻomohala noiʻi a me ka hoʻolaha ʻana i ka Blue-Green, e pili ana i ka ʻōnaehana The Twelve-Factor App me nā hiʻohiʻona ma php a docker.

2.1. E wehe i ka papa kuhikuhi habr (ka waihona makua kahi i hoʻopaʻa ʻia ai ka laradock) ma kekahi mea hoʻoponopono. (Ma kaʻu hihia PHPStorm)

I kēia manawa hāʻawi wale mākou i ka inoa o ka papahana.

Ka hoʻomohala noiʻi a me ka hoʻolaha ʻana i ka Blue-Green, e pili ana i ka ʻōnaehana The Twelve-Factor App me nā hiʻohiʻona ma php a docker.

2.2. E hoʻolana i ke kiʻi wahi hana. (Ma kou hihia, e hoʻolōʻihi ʻia nā kiʻi e kūkulu ai)
He kiʻi i hoʻomākaukau kūikawā ʻia ka Workspace no ka hana ʻana me ka framework ma ka inoa o ka mea hoʻomohala.

Hele mākou i loko o ka ipu me ka hoʻohana

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

Ka hoʻomohala noiʻi a me ka hoʻolaha ʻana i ka Blue-Green, e pili ana i ka ʻōnaehana The Twelve-Factor App me nā hiʻohiʻona ma php a docker.

2.3. Ke hoʻokomo nei iā Laravel

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

Ka hoʻomohala noiʻi a me ka hoʻolaha ʻana i ka Blue-Green, e pili ana i ka ʻōnaehana The Twelve-Factor App me nā hiʻohiʻona ma php a docker.

2.4. Ma hope o ke kau ʻana, nānā mākou inā ua hana ʻia ka papa kuhikuhi me ka papahana a pepehi i ka haku.

ls
exit
docker-compose down

Ka hoʻomohala noiʻi a me ka hoʻolaha ʻana i ka Blue-Green, e pili ana i ka ʻōnaehana The Twelve-Factor App me nā hiʻohiʻona ma php a docker.

2.5. E hoʻi kāua i PHPStorm a hoʻonohonoho i ke ala pololei i kā mākou noi laravel ma ka faila .env.

Ka hoʻomohala noiʻi a me ka hoʻolaha ʻana i ka Blue-Green, e pili ana i ka ʻōnaehana The Twelve-Factor App me nā hiʻohiʻona ma php a docker.

3. Hoʻohui i nā code a pau iā Git.

No ka hana ʻana i kēia, e hana mākou i kahi waihona ma Github (a i ʻole ma kahi ʻē aʻe). E hele kāua i ka papa kuhikuhi habr ma ka pahu a hoʻokō i kēia code.

echo "# habr-12factor" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin [email protected]:nzulfigarov/habr-12factor.git # здесь будет ссылка на ваш репо
git push -u origin master
git status

E nānā kāua inā pololei nā mea a pau.

Ka hoʻomohala noiʻi a me ka hoʻolaha ʻana i ka Blue-Green, e pili ana i ka ʻōnaehana The Twelve-Factor App me nā hiʻohiʻona ma php a docker.

No ka hōʻoluʻolu, manaʻo wau e hoʻohana i kekahi interface ʻike no Git, i koʻu hihia ʻO GitKraken. (eia kahi loulou kuhikuhi)

4. E hoʻolana kākou!

Ma mua o ka hoʻomaka ʻana, e hōʻoia ʻaʻohe mea e kau ana ma nā awa 80 a me 443.

docker-compose up -d nginx php-fpm

Ka hoʻomohala noiʻi a me ka hoʻolaha ʻana i ka Blue-Green, e pili ana i ka ʻōnaehana The Twelve-Factor App me nā hiʻohiʻona ma php a docker.

No laila, ʻo kā mākou papahana he 3 mau lawelawe kaʻawale:

  • nginx - kikowaena pūnaewele
  • php-fpm - php no ka loaʻa ʻana o nā noi mai kahi kikowaena pūnaewele
  • wahi hana - php no nā mea hoʻomohala

I kēia manawa, ua hoʻokō mākou ua hana mākou i kahi noi e hoʻokō i nā helu 4 o 12, ʻo ia hoʻi:

1. Codebase - Aia nā code a pau i loko o kahi waihona hoʻokahi (memo liʻiliʻi: pololei paha ke hoʻohui i ka docker i loko o ka papahana laravel, akā ʻaʻole ia he mea nui).

2. Nā hilinaʻi - Ua kākau ʻia ko mākou mau hilinaʻi āpau ma application/composer.json a ma kēlā me kēia Dockerfile o kēlā me kēia pahu.

3. Nā lawelawe kākoʻo — Ke ola nei kēlā me kēia lawelawe (php-fom, nignx, workspace) i kona ola ponoʻī a pili ʻia mai waho a i ka hana ʻana me hoʻokahi lawelawe, ʻaʻole e hoʻopilikia ʻia kekahi.

4. Nā kaʻina hana - hoʻokahi kaʻina hana kēlā me kēia lawelawe. ʻAʻole mālama kēlā me kēia lawelawe i ke kūlana kūloko.

5. Hoʻopaʻa awa

docker ps

Ka hoʻomohala noiʻi a me ka hoʻolaha ʻana i ka Blue-Green, e pili ana i ka ʻōnaehana The Twelve-Factor App me nā hiʻohiʻona ma php a docker.

E like me kā mākou e ʻike ai, holo kēlā me kēia lawelawe ma kāna awa ponoʻī a hiki ke loaʻa i nā lawelawe ʻē aʻe.

6. Hoʻohālike

Hāʻawi ʻo Docker iā mākou e hoʻolalelale i nā kaʻina hana o nā lawelawe like me ka hoʻokau kaulike ma waena o lākou.

E hooki kakou i na ipu a holo ma ka hae --kaulike

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

Ka hoʻomohala noiʻi a me ka hoʻolaha ʻana i ka Blue-Green, e pili ana i ka ʻōnaehana The Twelve-Factor App me nā hiʻohiʻona ma php a docker.

E like me kā mākou e ʻike ai, ua hana ʻia nā kope o ka pahu php-fpm. ʻAʻole pono mākou e hoʻololi i kekahi mea i ka hana ʻana me kēia pahu. Ke hoʻomau nei mākou i ke komo ʻana ma ke awa 9000, a hoʻoponopono ʻo Docker i ka ukana ma waena o nā ipu no mākou.

7. Hoʻokuʻu ʻia - hiki ke pepehi ʻia kēlā me kēia pahu me ka hana ʻole i kekahi. ʻAʻole pili ka hoʻokuʻu ʻana a i ʻole ka hoʻomaka hou ʻana i ka pahu i ka hana o ka noi i ka wā o ka hoʻokuʻu ʻana. Hiki ke hāpai ʻia kēlā me kēia pahu i kēlā me kēia manawa.

8. Hoʻomohala noi/parity hana - ua like ko mākou kaiapuni a pau. Ma ka holo ʻana i ka ʻōnaehana ma kahi kikowaena i ka hana ʻana, ʻaʻole pono ʻoe e hoʻololi i kekahi mea i kāu mau kauoha. E hoʻokumu ʻia nā mea āpau ma Docker ma ke ʻano like.

9. Ke kālai lāʻau - ʻO nā lāʻau āpau i loko o kēia mau pahu e hele i ke kahawai a ʻike ʻia ma ka console Docker. (i kēia hihia, ʻoiaʻiʻo, me nā ipu home ʻē aʻe, ʻaʻole paha kēia ke hihia inā ʻaʻole ʻoe e mālama iā ia)

 docker-compose logs -f

Ka hoʻomohala noiʻi a me ka hoʻolaha ʻana i ka Blue-Green, e pili ana i ka ʻōnaehana The Twelve-Factor App me nā hiʻohiʻona ma php a docker.

Akā aia kahi hopu i ka helu Default ma PHP a me Nginx e kākau pū i nā lāʻau i kahi faila. No ka hoʻokō ʻana i nā kumu he 12, pono ia hono ke kākau ʻana i nā moʻolelo i kahi faila ma nā hoʻonohonoho o kēlā me kēia pahu.

Hāʻawi pū ʻo Docker i ka hiki ke hoʻouna i nā lāʻau ʻaʻole wale i stdout, akā i nā mea like me ka graylog, aʻu i ʻōlelo ai ma luna. A i loko o ka graylog, hiki iā mākou ke hana i nā lāʻau e like me kā mākou makemake a ʻaʻole ʻike kā mākou noi i kēia ma kekahi ʻano.

10. Nā hana hoʻomalu - Hoʻoholo ʻia nā hana hoʻokele āpau e ka laravel e hoʻomaikaʻi i ka mea hana akamai e like me ka makemake o nā mea hana o ka noi kumu 12.

Ma keʻano he laʻana, e hōʻike wau pehea e hoʻokō ʻia ai kekahi mau kauoha.
Hele mākou i loko o ka pahu.

 
docker-compose exec workspace bash
php artisan list

Ka hoʻomohala noiʻi a me ka hoʻolaha ʻana i ka Blue-Green, e pili ana i ka ʻōnaehana The Twelve-Factor App me nā hiʻohiʻona ma php a docker.

I kēia manawa hiki iā mākou ke hoʻohana i kekahi kauoha. (e ʻoluʻolu ʻaʻole mākou i hoʻonohonoho i ka waihona a me ka cache, no laila ʻaʻole e hoʻokō pono ʻia ka hapalua o nā kauoha, no ka mea ua hoʻolālā ʻia lākou e hana me ka cache a me ka waihona).

Ka hoʻomohala noiʻi a me ka hoʻolaha ʻana i ka Blue-Green, e pili ana i ka ʻōnaehana The Twelve-Factor App me nā hiʻohiʻona ma php a docker.

11. Nā hoʻonohonoho a me 12. Kūkulu, hoʻokuʻu, holo

Makemake au e hoʻolaʻa i kēia ʻāpana i ka Blue-Green Deployment, akā ua lilo ia i mea nui loa no kēia ʻatikala. E kākau wau i ʻatikala ʻokoʻa e pili ana i kēia.

Ma kahi pōkole, hoʻokumu ʻia ka manaʻo ma nā ʻōnaehana CI / CD like ʻO Jenkins и Gitlab CI. Ma nā mea ʻelua, hiki iā ʻoe ke hoʻonohonoho i nā ʻano like ʻole e pili ana i kahi kaiapuni kikoʻī. No laila, ma kēia kūlana, e hoʻokō ʻia ke kiko c Nā hoʻonohonoho.

A ʻo ka manaʻo e pili ana Kūkulu, hoʻokuʻu, holo Hoʻoholo ʻia e nā hana i kūkulu ʻia me ka inoa Ka Pipeline.

Ka Pipeline hiki iā ʻoe ke hoʻokaʻawale i ke kaʻina hana i nā pae he nui, e hōʻike ana i nā pae o ka hui, hoʻokuʻu a me ka hoʻokō. Ma Pipeline, hiki iā ʻoe ke hana i nā backup, a ʻoiaʻiʻo nō kekahi. He mea paahana keia me ka hiki ole.

Aia ke code noi ma Github.
Mai poina e hoʻomaka i ka submodule i ka wā e hoʻopili ai i kēia waihona.

PS: Hiki ke hoʻohana ʻia kēia mau ala āpau me nā mea pono a me nā ʻōlelo papahana. ʻO ka mea nui ʻaʻole ʻokoʻa ke kumu.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka