Fampivoarana fampiharana sy fametrahana manga-maitso, mifototra amin'ny fomba fiasa The Twelve-Factor App misy ohatra amin'ny php sy docker

Fampivoarana fampiharana sy fametrahana manga-maitso, mifototra amin'ny fomba fiasa The Twelve-Factor App misy ohatra amin'ny php sy docker

Voalohany, teoria kely. Misy inona Ny App Twelve-Factor?

Amin'ny teny tsotra, ity antontan-taratasy ity dia natao hanatsorana ny fampivoarana ny rindranasa SaaS, manampy amin'ny fampahafantarana ny mpamorona sy ny injeniera DevOps momba ny olana sy ny fomba fanao matetika hita amin'ny fampivoarana ny fampiharana maoderina.

Ny antontan-taratasy dia noforonin'ireo mpamorona ny sehatra Heroku.

Ny App Twelve-Factor dia azo ampiharina amin'ny rindranasa voasoratra amin'ny fiteny fandaharana rehetra ary mampiasa izay fitambaran'ny serivisy fanohanana (database, filaharana hafatra, cache, sns.).

Fohy momba ny anton-javatra iorenan'ity fomba fiasa ity:

  1. Codebase - Base code iray voara-maso amin'ny fanaraha-maso ny dikan-teny - fametrahana maro
  2. miankina - Ambara mazava sy atokana ny fiankinan-doha
  3. fanahafana - Tehirizo ny konfigurasi amin'ny fotoana fandehanana
  4. Fanohanana Services - Hevero ny serivisy fanohanana ho toy ny loharano plug-in
  5. Manangana, mamoaka, mihazakazaka – Asaraka amin’ny fomba hentitra ny dingan’ny fivoriambe sy ny fanatanterahana
  6. Ireo dingana - Mandehana ny fampiharana ho toy ny dingana iray na maromaro tsy misy fanjakana
  7. Port mamatotra - Serivisy fanondranana amin'ny alàlan'ny fatoran'ny seranana
  8. fitoviana - Ampitomboy ny fampiharanao amin'ny alàlan'ny dingana
  9. Disposability - Ampitomboy ny fahatokisana amin'ny fanombohana haingana sy fanakatonana madio
  10. Fampivoarana ny fampiharana/firaisan'ny asa - Ataovy mitovy araka izay azo atao ny tontolon'ny fampandrosoana, ny fampisehoana ary ny famokarana
  11. logging - Jereo ny diary ho toy ny fikorianan'ny hetsika
  12. Asa fitantanana - Manao asa fitantanana / fitantanana amin'ny alàlan'ny dingana ad hoc

Azonao atao ny mahazo fampahalalana bebe kokoa momba ireo anton-javatra 12 avy amin'ireto loharano manaraka ireto:

Inona no atao hoe Blue-Green deployment?

Blue-Green deployment dia fomba iray handefasana fampiharana amin'ny famokarana amin'ny fomba izay tsy hahitan'ny mpanjifa farany misy fiovana eo amin'ny anjarany. Raha lazaina amin'ny teny hafa, ny fametrahana fampiharana misy aotra haka aina amin'izay.

Ny rafitra BG Deploy mahazatra dia mitovy amin'ilay aseho amin'ny sary etsy ambany.

Fampivoarana fampiharana sy fametrahana manga-maitso, mifototra amin'ny fomba fiasa The Twelve-Factor App misy ohatra amin'ny php sy docker

  • Eo am-piandohana dia misy mpizara ara-batana 2 miaraka amin'ny code mitovy tanteraka, fampiharana, tetikasa, ary misy ny router (balancer).
  • Ny router dia mitarika ny fangatahana rehetra amin'ny iray amin'ireo mpizara (maitso).
  • Amin'ny fotoana tokony hamoahanao indray dia havaozina amin'ny mpizara hafa ny tetikasa manontolo (manga), izay tsy manao fangatahana amin'izao fotoana izao.
  • Rehefa mandeha ny kaody manga nohavaozina tanteraka ny mpizara, nomena baiko hifindra ny router maitso amin'ny manga mpizara.
  • Ankehitriny ny mpanjifa rehetra dia mahita ny vokatry ny kaody mandeha of manga mpizara.
  • Nandritra ny fotoana kelikely, maitso ny server dia toy ny kopia backup raha toa ka tsy nahomby ny fametrahana azy manga ny mpizara ary raha misy tsy fahombiazana sy bibikely, ny router dia mamadika ny fikorianan'ny mpampiasa maitso mpizara miaraka amin'ny dikan-teny stable taloha, ary alefa ny kaody vaovao ho an'ny fanavaozana sy fitsapana.
  • Ary amin'ny faran'ny dingana dia havaozina amin'ny fomba mitovy maitso mpizara. Ary aorian'ny fanavaozana azy, ny router dia mamadika ny fizotran'ny fangatahana maitso mpizara.

Toa tena tsara daholo izany ary raha vao jerena dia tsy tokony hisy olana amin'izany.
Saingy satria miaina amin'ny tontolo maoderina isika, ny safidy miaraka amin'ny fifindrana ara-batana araka ny voalaza ao amin'ny rafitra klasika dia tsy mety amintsika. Raketo amin'izao fotoana izao ny vaovao, hiverina amin'izany indray izahay.

Torohevitra ratsy sy tsara

Disclaimer: Ny ohatra etsy ambany dia mampiseho ny fitaovana/fomba ampiasaiko, azonao atao ny mampiasa safidy hafa misy fiasa mitovy.

Ny ankamaroan'ny ohatra dia amin'ny fomba iray na amin'ny fomba hafa dia mifamatotra amin'ny fampivoarana tranonkala (fahagagana izany), miaraka amin'ny PHP sy Docker.

Ny fehintsoratra etsy ambany dia manome famaritana azo ampiharina tsotra momba ny fampiasana lafin-javatra amin'ny fampiasana ohatra manokana; raha te hahazo teoria bebe kokoa momba ity lohahevitra ity ianao dia araho ireo rohy etsy ambony mankany amin'ny loharano voalohany.

1. Codebase

Mampiasà FTP sy FileZilla handefasana rakitra amin'ny mpizara iray isaky ny mandeha, aza mitahiry ny code na aiza na aiza afa-tsy amin'ny mpizara famokarana.

Ny tetikasa dia tokony hanana fototra fehezan-dalàna tokana, izany hoe ny kaody rehetra dia avy amin'ny iray git repository. Ny mpizara (famokarana, fanaovana, test1, test2...) dia mampiasa kaody avy amin'ny sampan'ny tahiry iombonana iray. Amin'izany fomba izany no ahazoantsika ny tsy fitoviana kaody.

2. Fiankinan-doha

Ampidino mivantana any amin'ny fototry ny tetikasa ny tranomboky rehetra ao anaty lahatahiry. Manaova fanavaozam-baovao amin'ny alàlan'ny famindrana fotsiny ny kaody vaovao ao amin'ny lahatahiry misy ny kinova ankehitriny an'ny tranomboky. Ampidiro mivantana ny fitaovana ilaina rehetra amin'ny mpizara mpampiantrano izay misy serivisy 20 hafa mandeha.

Ny tetikasa dia tokony hanana lisitry ny fiankinan-doha azo takarina foana (amin'ny fiankinan-doha dia ny tontolo iainana ihany koa no tiako ambara). Ny fiankinan-doha rehetra dia tsy maintsy voafaritra mazava sy atokana.
Andeha horaisintsika ho ohatra Composer и Docker.

Composer — mpitantana fonosana ahafahanao mametraka tranomboky amin'ny PHP. Ny mpamoron-kira dia mamela anao hamaritra dikan-teny hentitra na malalaka, ary mamaritra azy ireo mazava tsara. Mety misy tetikasa 20 samihafa ao amin'ny mpizara ary samy hanana lisitra manokana momba ny fonosana sy tranomboky tsy miankina amin'ny iray hafa.

Docker — fitaovana ahafahanao mamaritra sy mitokana ny tontolo iainan'ny fampiharana. Arak'izany, toy ny amin'ny mpamoron-kira, fa amin'ny antsipiriany kokoa, azontsika atao ny mamaritra hoe inona no iasan'ny fampiharana. Mifidiana dikan-teny manokana amin'ny PHP, apetraho fotsiny ny fonosana ilaina amin'ny tetikasa, tsy misy fanampiny fanampiny. Ary ny tena zava-dehibe, tsy manelingelina ny fonosana sy ny tontolon'ny milina mpampiantrano sy ny tetikasa hafa. Izany hoe, ny tetikasa rehetra amin'ny mpizara mandeha amin'ny Docker dia afaka mampiasa tanteraka ny fonosana rehetra sy ny tontolo hafa tanteraka.

3. Configuration

Tehirizo ny configs ho toy ny constants mivantana ao amin'ny code. Misaraka tsy miova ho an'ny mpizara fitsapana, misaraka amin'ny famokarana. Afatory ny fiasan'ny fampiharana miankina amin'ny tontolo iainana mivantana amin'ny lojika fandraharahana amin'ny tetikasa amin'ny fampiasana raha tsy izany.

Configurations - izany no hany fomba tokony tsy hitovizan'ny fametrahana tetikasa. Ny tsara indrindra dia tokony halefa amin'ny faribolan'ny tontolo iainana (env vars) ny fanamafisana.

Izany hoe, na dia mitahiry fisie maromaro aza ianao .config.prod .config.local ary ovainao ny anaran'izy ireo amin'ny fotoana fametrahana azy ho .config (ny config lehibe izay ahafahan'ny fampiharana mamaky data) - tsy izany no fomba mety, satria Amin'ity tranga ity dia ho hita ampahibemaso ho an'ny mpamorona fampiharana rehetra ny fampahalalana avy amin'ny fanamafisana ary ny angon-drakitra avy amin'ny mpizara famokarana dia ho voatohintohina. Ny fanamafisam-peo rehetra dia tsy maintsy tehirizina mivantana ao amin'ny rafitra fametrahana (CI/CD) ary amboarina ho an'ny tontolo samihafa misy sanda samihafa ilaina amin'ny tontolo manokana amin'ny fotoana fametrahana.

4. Sampan-draharahan'ny antoko fahatelo

Mifamatotra mafy amin'ny tontolo iainana, mampiasa fifandraisana samihafa ho an'ny serivisy mitovy amin'ny tontolo sasany.

Raha ny marina, io teboka io dia mifanipaka tanteraka amin'ny teboka momba ny fanamafisana, satria raha tsy misy io teboka io, dia tsy azo atao ny angon-drakitra fanaingoana mahazatra ary, amin'ny ankapobeny, ny fahafahana manitsy dia hihena.

Ny fifandraisana rehetra amin'ny serivisy ivelany, toy ny mpizara filaharana, ny angon-drakitra, ny serivisy caching, dia tsy maintsy mitovy amin'ny tontolo eo an-toerana sy ny tontolon'ny antoko fahatelo / famokarana. Raha lazaina amin'ny teny hafa, amin'ny fotoana rehetra, amin'ny fanovana ny tadin'ny fifandraisana, dia afaka manolo ny antso amin'ny base #1 amin'ny base #2 aho nefa tsy manova ny code application. Na, mijery ny ho avy, ohatra, rehefa manitatra ny serivisy dia tsy mila mamaritra ny fifandraisana amin'ny fomba manokana ho an'ny mpizara cache fanampiny ianao.

5. Manangana, mamoaka, manatanteraka

Ny dikan-teny farany amin'ny kaody ihany no manana eo amin'ny mpizara, tsy misy fahafahana hamerenana ny famoahana. Tsy mila mameno toerana kapila. Na iza na iza mihevitra fa afaka mamoaka kaody amin'ny famokarana miaraka amin'ny fahadisoana dia programmer ratsy!

Ny dingana rehetra amin'ny fametrahana dia tsy maintsy misaraka.

Manana fahafahana hiverina. Manaova famoahana miaraka amin'ny dika mitovy amin'ny fampiharana (efa tafavory ary vonona amin'ny ady) voatahiry amin'ny fidirana haingana, mba hahafahanao mamerina ny dikan-teny taloha raha misy hadisoana. Izany hoe, conditionally misy folder fisaorana ary folder amin'izao fotoana izao, ary rehefa vita ny fametrahana sy ny fanangonana ny lahatahiry amin'izao fotoana izao mifandray amin'ny rohy an'ohatra mankany amin'ny famoahana vaovao ao anatiny fisaorana miaraka amin'ny anarana mahazatra ny laharana famoahana.

Eto no tsaroanay ny fametrahana Blue-Green, izay ahafahanao tsy mifamadika eo anelanelan'ny kaody, fa koa ny mifamadika eo amin'ny loharano rehetra ary eny fa na dia ny tontolo iainana aza izay afaka mamerina ny zava-drehetra.

6. Fomba fiasa

Tehirizo mivantana ao anatin'ilay rindranasa ny angona momba ny fanjakana. Mampiasà session ao amin'ny RAM an'ny fampiharana. Mampiasà fifampizarana betsaka araka izay azo atao eo amin'ny serivisy antoko fahatelo. Miantehitra amin'ny zava-misy fa ny fampiharana dia afaka manana dingana iray ihany ary tsy mamela ny scaling.

Mikasika ny fivoriana, tehirizo ny angon-drakitra ao anaty cache fehezin'ny serivisy an'ny antoko fahatelo (memcached, redis), ka na dia manana fizotran'ny fampiharana 20 aza ianao, ny iray amin'izy ireo, rehefa niditra ny cache, dia afaka manohy miasa miaraka amin'ny mpanjifa ny fanjakana mitovy amin'ny niasan'ny mpampiasa ny fampiharana tamin'ny dingana hafa. Amin'ity fomba fiasa ity dia hita fa na firy na firy ny dika mitovy amin'ny serivisy an'ny antoko fahatelo ampiasainao, ny zava-drehetra dia hiasa ara-dalàna ary tsy misy olana amin'ny fidirana amin'ny data.

7. Port mamatotra

Ny mpizara tranonkala ihany no tokony hahafantatra ny fomba fiasa amin'ny serivisy an'ny antoko fahatelo. Na tsara kokoa, apetraho mivantana ao anatin'ny mpizara tranonkala ny serivisy antoko fahatelo. Ohatra, ho modely PHP amin'ny Apache.
Ny serivisy rehetra dia tsy maintsy azo idirana amin'ny alàlan'ny fidirana amin'ny adiresy sy seranan-tsambo sasany (localgost:5432, localhost:3000, nginx:80, php-fpm:9000), izany hoe avy amin'ny nginx dia afaka miditra amin'ny php-fpm sy ny postgres, ary avy amin'ny php-fpm mankany amin'ny postgres sy nginx ary avy amin'ny serivisy tsirairay dia afaka miditra amin'ny serivisy hafa aho. Amin'izany fomba izany, ny fahafahan'ny serivisy iray dia tsy mifamatotra amin'ny fahafahan'ny serivisy iray hafa.

8. Parallèle

Miaraha miasa amin'ny dingana iray, raha tsy izany dia tsy ho afaka hifanaraka ny dingana maromaro!

Avelao ny toerana hanaovana scaling. Docker swarm dia tsara amin'izany.
Docker Swarm dia fitaovana iray hamoronana sy hitantanana vondron'ireo kaontenera eo anelanelan'ny milina samihafa sy ny kaontenera maromaro amin'ny milina iray ihany.

Amin'ny alàlan'ny swarm dia afaka mamaritra hoe firy ny loharano hatolotro ho an'ny dingana tsirairay ary firy ny dingana amin'ny serivisy mitovy hatomboko, ary ny mpandrindra anatiny, mandray data amin'ny seranan-tsambo iray, dia handefa azy ho azy amin'ny dingana. Noho izany, mahita fa nitombo ny enta-mavesatra eo amin'ny mpizara, dia afaka manampy dingana bebe kokoa aho, ka mampihena ny enta-mavesatra amin'ny dingana sasany.

9. Fahafahana

Aza mampiasa filaharana hiasa amin'ny dingana sy angona. Ny famonoana dingana iray dia tokony hisy fiantraikany amin'ny fampiharana manontolo. Raha midina ny serivisy iray dia midina ny zava-drehetra.

Ny dingana sy serivisy tsirairay dia azo vonoina amin'ny fotoana rehetra ary tsy tokony hisy fiantraikany amin'ny serivisy hafa izany (mazava ho azy fa tsy midika izany fa tsy ho afaka amin'ny serivisy hafa ny serivisy, fa ny serivisy hafa dia tsy ho faty aorian'ity iray ity). Ny dingana rehetra dia tsy maintsy atsahatra amim-pahamendrehana, ka rehefa tapitra izy ireo, dia tsy hisy angon-drakitra ho simba ary ny rafitra dia hiasa tsara amin'ny manaraka velominao. Izany hoe, na dia misy fiatoana vonjy maika aza, dia tsy tokony ho simba ny angon-drakitra (mety eto ny mekanisma ara-barotra, ny fanontaniana ao amin'ny angon-drakitra dia miasa amin'ny vondrona ihany, ary raha misy fanontaniana iray farafahakeliny avy amin'ny vondrona tsy mahomby na tanterahina miaraka amin'ny diso, dia tsy misy fanontaniana hafa avy amin'ny vondrona tsy mahomby amin'ny farany).

10. Fampivoarana ny fampiharana/firaisan'ny asa

Ny famokarana, ny fampisehoana ary ny dikan-teny eo an-toerana amin'ny fampiharana dia tsy maintsy hafa. Amin'ny famokarana dia mampiasa ny rafitra Yii Lite izahay, ary Yii eo an-toerana, mba hiasa haingana kokoa amin'ny famokarana!

Raha ny marina, ny fametrahana sy ny asa rehetra miaraka amin'ny code dia tokony ho ao anatin'ny tontolo mitovy (tsy miresaka momba ny fitaovana ara-batana isika). Ary koa, ny mpiasan'ny fampandrosoana rehetra dia tokony ho afaka mametraka ny kaody amin'ny famokarana raha ilaina, fa tsy ny departemanta devops voaofana manokana, izay noho ny hery manokana ihany no afaka mampiakatra ny fampiharana amin'ny famokarana.

Docker koa dia manampy antsika amin'izany. Raha voamarika daholo ireo teboka teo aloha, ny fampiasana docker dia hitondra ny dingan'ny fametrahana ny tontolo iainana amin'ny famokarana sy amin'ny milina eo an-toerana mba hampidirana baiko iray na roa.

11. Log

Manoratra logs amin'ny rakitra sy angon-drakitra izahay! Tsy manadio rakitra sy tahiry amin'ny logs izahay. Aleo mividy kapila mafy misy 9000 Peta bytes dia tsara izany.

Ny logs rehetra dia tokony hoheverina ho toy ny fikorianan'ny hetsika. Ny fampiharana mihitsy dia tsy tokony ho tafiditra amin'ny fanodinana logs. Ny logs dia tokony havoaka amin'ny stdout na alefa amin'ny protocol toy ny udp, mba tsy hiteraka olana amin'ny fampiharana ny fiasana amin'ny logs. graylog dia tsara amin'izany. Ny Graylog mandray ny logs rehetra amin'ny alàlan'ny udp (ity protocol ity dia tsy mitaky fiandrasana valiny momba ny fandraisan'ny packet mahomby) dia tsy manelingelina ny fampiharana amin'ny fomba rehetra ary miresaka momba ny rafitra sy ny fanodinana logs. Tsy miova ny lojika fampiharana mba hiasa amin'ny fomba fiasa toy izany.

12. Asa fitantanana

Mba hanavaozana ny angona, angon-drakitra, sns., Mampiasà teboka iray noforonina manokana ao amin'ny API, ny fanatanterahana azy in-2 misesy dia hahatonga ny zava-drehetra ho amboarina. Saingy tsy adala ianao, tsy hanindry indroa, ary tsy mila fifindra-monina izahay.

Ny asa fitantanana rehetra dia tokony hatao amin'ny tontolo mitovy amin'ny code rehetra, amin'ny ambaratonga famoahana. Izany hoe, raha mila manova ny firafitry ny angon-drakitra isika, dia tsy hanao izany amin'ny tanana isika amin'ny fanovana ny anaran'ny tsanganana ary manampy vaovao amin'ny alàlan'ny fitaovana fitantanana angona hita maso. Ho an'ny zavatra toy izany dia mamorona script misaraka izahay - fifindra-monina, izay tanterahina na aiza na aiza sy amin'ny tontolo rehetra amin'ny fomba mitovy amin'ny vokatra mahazatra sy azo takarina. Ho an'ny asa hafa rehetra, toy ny famenoana angona ny tetikasa, dia tokony hampiasaina ny fomba fiasa mitovy.

Ohatra fampiharana amin'ny PHP, Laravel, Laradock, Docker-Compose

PS Ny ohatra rehetra dia natao tamin'ny MacOS. Ny ankamaroan'izy ireo dia mety amin'ny Linux ihany koa. Ry mpampiasa Windows, mamelà ahy, fa efa ela aho no tsy niasa tamin'ny Windows.

Andeha hojerentsika ny toe-javatra iray izay tsy misy dikan-teny PHP napetraka ao amin'ny PC ary tsy misy na inona na inona.
Apetraho ny docker sy docker-compose farany. (azo jerena amin'ny Internet izany)

docker -v && 
docker-compose -v

Fampivoarana fampiharana sy fametrahana manga-maitso, mifototra amin'ny fomba fiasa The Twelve-Factor App misy ohatra amin'ny php sy docker

1. Napetrakay Laradock

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

Fampivoarana fampiharana sy fametrahana manga-maitso, mifototra amin'ny fomba fiasa The Twelve-Factor App misy ohatra amin'ny php sy docker

Momba an'i Laradock, dia holazaiko fa zavatra tena mahafinaritra izy io, izay misy fitoeran-javatra maro sy zavatra fanampiny. Saingy tsy manoro hevitra ny hampiasa an'i Laradock ho toy izany aho raha tsy misy fanovana amin'ny famokarana noho ny tsy fahampiana. Tsara kokoa ny mamorona kaontenera manokana mifototra amin'ny ohatra ao amin'ny Laradock, ho tsara kokoa izany, satria tsy misy mila ny zava-drehetra amin'ny fotoana iray.

2. Ampifandraiso amin'ny Laradock ny fampiharana.

cd laradock && 
cp env-example .env

Fampivoarana fampiharana sy fametrahana manga-maitso, mifototra amin'ny fomba fiasa The Twelve-Factor App misy ohatra amin'ny php sy docker

2.1. Sokafy ny lahatahiry habr (ilay fampirimana ray aman-dreny izay anaovana klona ny laradock) amin'ny tonian-dahatsoratra sasany. (Amin'ny tranga PHPStorm-ko)

Amin'ity dingana ity dia omena anarana fotsiny ny tetikasa.

Fampivoarana fampiharana sy fametrahana manga-maitso, mifototra amin'ny fomba fiasa The Twelve-Factor App misy ohatra amin'ny php sy docker

2.2. Alefaso ny sarin'ny toeram-piasana. (Raha ny zava-misy anao dia mila fotoana kely hanamboarana ny sary)
Workspace dia sary voaomana manokana hiasa amin'ny rafitra amin'ny anaran'ny mpamorona.

Mandeha ao anaty container izahay mampiasa

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

Fampivoarana fampiharana sy fametrahana manga-maitso, mifototra amin'ny fomba fiasa The Twelve-Factor App misy ohatra amin'ny php sy docker

2.3. Fametrahana Laravel

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

Fampivoarana fampiharana sy fametrahana manga-maitso, mifototra amin'ny fomba fiasa The Twelve-Factor App misy ohatra amin'ny php sy docker

2.4. Aorian'ny fametrahana dia jereo raha noforonina ny lahatahiry misy ny tetikasa ary mamono compose.

ls
exit
docker-compose down

Fampivoarana fampiharana sy fametrahana manga-maitso, mifototra amin'ny fomba fiasa The Twelve-Factor App misy ohatra amin'ny php sy docker

2.5. Andao hiverina amin'ny PHPStorm ary hametraka ny lalana marina mankany amin'ny fampiharana laravel ao amin'ny rakitra .env.

Fampivoarana fampiharana sy fametrahana manga-maitso, mifototra amin'ny fomba fiasa The Twelve-Factor App misy ohatra amin'ny php sy docker

3. Ampio ny kaody rehetra amin'ny Git.

Mba hanaovana izany dia hamorona tahiry ao amin'ny Github (na any amin'ny toerana hafa). Andao ho any amin'ny lahatahiry habr ao amin'ny terminal ary tanteraho ity code manaraka ity.

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

Andeha hojerentsika raha milamina ny zava-drehetra.

Fampivoarana fampiharana sy fametrahana manga-maitso, mifototra amin'ny fomba fiasa The Twelve-Factor App misy ohatra amin'ny php sy docker

Ho fanamorana, manoro hevitra aho ny hampiasa interface tsara ho an'ny Git, raha ny ahy dia izany GitKraken. (Ity misy rohy referral)

4. Andao hanomboka!

Alohan'ny hanombohana dia ataovy izay hahazoana antoka fa tsy misy na inona na inona mihantona amin'ny seranana 80 sy 443.

docker-compose up -d nginx php-fpm

Fampivoarana fampiharana sy fametrahana manga-maitso, mifototra amin'ny fomba fiasa The Twelve-Factor App misy ohatra amin'ny php sy docker

Noho izany, ny tetikasanay dia misy serivisy 3 misaraka:

  • nginx - mpizara tranonkala
  • php-fpm - php handraisana fangatahana avy amin'ny mpizara tranonkala
  • workspace - php ho an'ny mpamorona

Amin'izao fotoana izao dia nahavita namorona fampiharana izay mahafeno teboka 4 amin'ny 12 izahay, izany hoe:

1. Codebase - Ny kaody rehetra dia ao anaty tahiry iray (marika kely: mety ho marina ny manampy docker ao anatin'ny tetikasa laravel, saingy tsy zava-dehibe izany).

2. miankina - Ny fiankinantsika rehetra dia voasoratra mazava ao amin'ny application/composer.json sy ao amin'ny Dockerfile tsirairay isaky ny container.

3. Fanohanana Services — Ny tsirairay amin'ireo serivisy (php-fom, nignx, toeram-piasana) dia miaina ny fiainany manokana ary mifandray avy any ivelany ary rehefa miasa amin'ny serivisy iray dia tsy hisy fiantraikany ny iray hafa.

4. Ireo dingana — dingana iray ny serivisy tsirairay. Ny serivisy tsirairay dia tsy mitazona fanjakana anatiny.

5. Port mamatotra

docker ps

Fampivoarana fampiharana sy fametrahana manga-maitso, mifototra amin'ny fomba fiasa The Twelve-Factor App misy ohatra amin'ny php sy docker

Araka ny hitantsika, ny serivisy tsirairay dia mandeha amin'ny seranana manokana ary azo idirana amin'ny serivisy hafa rehetra.

6. fitoviana

Docker dia mamela antsika hamorona dingana maro amin'ny serivisy mitovy miaraka amin'ny fifandanjana entana mandeha ho azy eo anelanelan'izy ireo.

Andeha hajanontsika ireo kaontenera ary hamakivaky ny saina --scale

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

Fampivoarana fampiharana sy fametrahana manga-maitso, mifototra amin'ny fomba fiasa The Twelve-Factor App misy ohatra amin'ny php sy docker

Araka ny hitantsika, dia noforonina ny dika mitovy amin'ny container php-fpm. Tsy mila manova na inona na inona isika amin'ny fiasana amin'ity container ity. Manohy miditra ao amin'ny seranan-tsambo 9000 ihany koa izahay, ary i Docker no mifehy ny entana eo anelanelan'ny kaontenera ho anay.

7. Disposability - ny kaontenera tsirairay dia azo vonoina tsy misy manimba ny hafa. Tsy hisy fiantraikany amin'ny fiasan'ny rindranasa mandritra ny fandefasana manaraka ny fampiatoana na famerenana indray ny kaontenera. Ny kaontenera tsirairay dia azo alaina amin'ny fotoana rehetra.

8. Fampivoarana ny fampiharana/firaisan'ny asa - mitovy daholo ny tontolo iainantsika. Amin'ny fampandehanana ny rafitra amin'ny mpizara amin'ny famokarana dia tsy mila manova na inona na inona amin'ny baikonao ianao. Ny zava-drehetra dia hiorina amin'ny Docker amin'ny fomba mitovy.

9. logging - ny logs rehetra ao anatin'ireo kaontenera ireo dia mandeha mivantana ary hita ao amin'ny console Docker. (amin'ity tranga ity, raha ny marina, miaraka amin'ny kaontenera vita an-trano hafa, dia mety tsy ho toy izany raha tsy mikarakara azy ianao)

 docker-compose logs -f

Fampivoarana fampiharana sy fametrahana manga-maitso, mifototra amin'ny fomba fiasa The Twelve-Factor App misy ohatra amin'ny php sy docker

Saingy misy ny fisamborana fa ny soatoavina Default amin'ny PHP sy Nginx dia manoratra logs amin'ny rakitra iray. Mba hahafeno ireo lafin-javatra 12 dia ilaina izany mihidy eny manoratra logs amin'ny rakitra iray ao amin'ny fandrindrana ny fitoeran-javatra tsirairay.

Docker koa dia manome fahafahana mandefa logs tsy ho an'ny stdout, fa koa amin'ny zavatra toy ny graylog, izay nolazaiko tetsy ambony. Ary ao anatin'ny graylog dia afaka miasa ny logs araka izay irintsika isika ary ny fampiharana ataontsika dia tsy hahatsikaritra izany amin'ny fomba rehetra.

10. Asa fitantanana - Ny asa fitantanana rehetra dia voavahan'ny laravel noho ny fitaovana mpanao asa tanana izay tian'ny mpamorona ny fampiharana 12 factor.

Ho ohatra, hasehoko ny fomba fanatanterahana ny baiko sasany.
Miditra ao anaty container izahay.

 
docker-compose exec workspace bash
php artisan list

Fampivoarana fampiharana sy fametrahana manga-maitso, mifototra amin'ny fomba fiasa The Twelve-Factor App misy ohatra amin'ny php sy docker

Afaka mampiasa baiko rehetra isika izao. (Azafady, mariho fa tsy nanamboatra ny angon-drakitra sy ny cache izahay, ka ny antsasaky ny baiko dia tsy hotanterahina araka ny tokony ho izy, satria izy ireo dia natao hiasa amin'ny cache sy database).

Fampivoarana fampiharana sy fametrahana manga-maitso, mifototra amin'ny fomba fiasa The Twelve-Factor App misy ohatra amin'ny php sy docker

11. Configurations sy 12. Manangana, mamoaka, mihazakazaka

Te hanokana ity ampahany ity amin'ny Blue-Green Deployment aho, saingy hita fa mivelatra loatra amin'ity lahatsoratra ity. Hanoratra lahatsoratra mitokana momba izany aho.

Raha fintinina, ny foto-kevitra dia mifototra amin'ny rafitra CI/CD toy ny Jenkins и Gitlab CI. Amin'ny roa tonta, azonao atao ny mametraka fari-piainana mifandraika amin'ny tontolo iray manokana. Araka izany, amin'ity toe-javatra ity dia ho tanteraka ny teboka c Configurations.

Ary ny hevitra momba ny Manangana, mamoaka, mihazakazaka dia voavaha amin'ny alàlan'ny fiasa naorina miaraka amin'ny anarana fantsona.

fantsona ahafahanao mizara ny fizotran'ny fametrahana ho dingana maro, manasongadina ny dingana amin'ny fivoriambe, ny famoahana ary ny famonoana. Ao amin'ny Pipeline ihany koa, afaka mamorona backups ianao, ary na inona na inona. Ity dia fitaovana manana hery tsy manam-petra.

Ny kaody fampiharana dia ao amin'ny Github.
Aza adino ny manomboka ny submodule rehefa cloning ity tahiry ity.

PS: Ireo fomba rehetra ireo dia azo ampiasaina amin'ny fitaovana hafa sy fiteny fandaharana. Ny tena zava-dehibe dia ny hoe tsy mitovy ny votoatiny.

Source: www.habr.com

Add a comment