ProHoster > blog > Amministrazzjoni > Żvilupp tal-applikazzjoni u skjerament Blue-Green, ibbażat fuq il-metodoloġija tal-App Twelve-Factor b'eżempji f'php u docker
Żvilupp tal-applikazzjoni u skjerament Blue-Green, ibbażat fuq il-metodoloġija tal-App Twelve-Factor b'eżempji f'php u docker
Fi kliem sempliċi, dan id-dokument huwa ddisinjat biex jissimplifika l-iżvilupp ta 'applikazzjonijiet SaaS, jgħin billi jinforma lill-iżviluppaturi u lill-inġiniera DevOps dwar il-problemi u l-prattiki li l-aktar spiss jiltaqgħu magħhom fl-iżvilupp ta' applikazzjonijiet moderni.
L-App Twelve-Factor tista’ tiġi applikata għal applikazzjonijiet miktuba fi kwalunkwe lingwa ta’ programmar u bl-użu ta’ kwalunkwe kombinazzjoni ta’ servizzi ta’ appoġġ (databases, kjuwijiet ta’ messaġġi, caches, eċċ.).
Fil-qosor dwar il-fatturi li fuqhom hija bbażata din il-metodoloġija:
Codebase – Bażi ta’ kodiċi waħda tracked fil-kontroll tal-verżjoni – skjeramenti multipli
Dipendenzi – Iddikjara u iżola d-dipendenzi b'mod espliċitu
L-iskjerament Blue-Green huwa metodu ta' kif titwassal applikazzjoni lil produzzjoni b’tali mod li l-klijent finali ma jara l-ebda tibdil min-naħa tiegħu. Fi kliem ieħor, l-iskjerament ta 'applikazzjoni b'żero perijodi ta 'waqfien.
L-iskema klassika BG Deploy tidher bħal dik murija fl-immaġni hawn taħt.
Fil-bidu hemm 2 servers fiżiċi bl-istess kodiċi, applikazzjoni, proġett, u hemm router (balancer).
Ir-router inizjalment jidderieġi t-talbiet kollha lil wieħed mis-servers (aħdar).
Fil-mument meta jkollok bżonn tirrilaxxa mill-ġdid, il-proġett kollu jiġi aġġornat fuq server ieħor (blu), li bħalissa mhi qed tipproċessa l-ebda talba.
Wara li l-kodiċi jkun mixgħul blu server huwa kompletament aġġornat, ir-router jingħata kmand biex jaqleb minnu aħdar fuq blu server.
Issa l-klijenti kollha jaraw ir-riżultat tal-kodiċi li qed jaħdem bih tal-blu server.
Għal xi żmien, aħdar is-server iservi bħala kopja ta 'backup f'każ ta' skjerament mingħajr suċċess blu server u f'każ ta 'falliment u bugs, ir-router jaqleb il-fluss tal-utent lura lejn aħdar server bil-verżjoni stabbli l-antika, u l-kodiċi l-ġdid jintbagħat għal reviżjoni u ttestjar.
U fl-aħħar tal-proċess, huwa aġġornat bl-istess mod aħdar server. U wara li jaġġornaha, ir-router jaqleb il-fluss tat-talba lura għal aħdar server.
Kollox jidher tajjeb ħafna u mal-ewwel daqqa t'għajn m'għandux ikun hemm problemi magħha.
Iżda peress li ngħixu fid-dinja moderna, l-għażla bi swiċċ fiżiku kif indikat fl-iskema klassika ma taqbilx magħna. Irreġistra l-informazzjoni għalissa, se nerġgħu lura għaliha aktar tard.
Pariri ħżiena u tajbin
Ċaħda ta 'responsabbiltà: L-eżempji hawn taħt juru l-utilitajiet/metodoloġiji li nuża, tista 'tuża assolutament kwalunkwe alternattiva b'funzjonijiet simili.
Ħafna mill-eżempji b'xi mod jew ieħor jaqsmu mal-iżvilupp tal-web (din hija sorpriża), ma 'PHP u Docker.
Il-paragrafi hawn taħt jipprovdu deskrizzjoni prattika sempliċi tal-użu ta 'fatturi bl-użu ta' eżempji speċifiċi; jekk trid tikseb aktar teorija dwar dan is-suġġett, segwi l-links hawn fuq għas-sors oriġinali.
1. Codebase
Uża FTP u FileZilla biex ittella' fajls fis-servers wieħed kull darba, taħżinx il-kodiċi mkien għajr fuq is-server tal-produzzjoni.
Il-proġett għandu dejjem ikollu bażi ta 'kodiċi waħda, jiġifieri, il-kodiċi kollu ġej minn wieħed go repożitorju. Servers (produzzjoni, staging, test1, test2...) jużaw kodiċi minn fergħat ta' repożitorju komuni wieħed. B'dan il-mod niksbu konsistenza tal-kodiċi.
2. Dipendenzi
Niżżel il-libreriji kollha fil-folders direttament fl-għerq tal-proġett. Agħmel aġġornamenti sempliċiment billi tittrasferixxi l-kodiċi l-ġdid fil-folder bil-verżjoni attwali tal-librerija. Installa l-utilitajiet kollha meħtieġa direttament fuq is-server ospitanti fejn qed jaħdmu 20 servizz ieħor.
Proġett għandu dejjem ikollu lista ta’ dipendenzi li tinftiehem b’mod ċar (b’dipendenzi nfisser ukoll l-ambjent). Id-dipendenzi kollha għandhom ikunu definiti u iżolati b'mod espliċitu.
Ejja nieħdu bħala eżempju kompożitur и Docker.
kompożitur — maniġer tal-pakketti li jippermettilek tinstalla libreriji fil-PHP. Kompożitur jippermettilek li tispeċifika verżjonijiet b'mod strett jew laxk, u tiddefinixxihom b'mod espliċitu. Jista 'jkun hemm 20 proġett differenti fuq is-server u kull wieħed ikollu lista personali ta' pakketti u libreriji indipendenti mill-oħra.
Docker — utilità li tippermettilek tiddefinixxi u tiżola l-ambjent li fih se taħdem l-applikazzjoni. Għaldaqstant, l-istess bħall-kompożitur, iżda b'mod aktar bir-reqqa, nistgħu niddeterminaw ma 'liema taħdem l-applikazzjoni. Agħżel verżjoni speċifika tal-PHP, installa biss il-pakketti meħtieġa biex il-proġett jaħdem, mingħajr ma żżid xi ħaġa żejda. U aktar importanti, mingħajr ma jinterferixxi mal-pakketti u l-ambjent tal-magna ospitanti u proġetti oħra. Jiġifieri, il-proġetti kollha fuq is-server li għaddej minn Docker jistgħu jużaw assolutament kwalunkwe sett ta 'pakketti u ambjent kompletament differenti.
3. Konfigurazzjoni
Aħżen il-konfigurazzjonijiet bħala kostanti direttament fil-kodiċi. Kostanti separati għas-server tat-test, separati għall-produzzjoni. Orbot l-operazzjoni ta 'l-applikazzjoni skond l-ambjent direttament fil-loġika tan-negozju tal-proġett bl-użu jekk inkella jibni.
Konfigurazzjonijiet - dan huwa l-uniku mod kif l-iskjerament tal-proġetti għandhom ikunu differenti. Idealment, il-konfigurazzjonijiet għandhom jiġu mgħoddija minn varjabbli ambjentali (env vars).
Jiġifieri, anki jekk taħżen diversi fajls ta’ konfigurazzjoni .config.prod .config.local u semmihom mill-ġdid fil-ħin tal-iskjerament għal .config (il-konfigurazzjoni ewlenija li minnha l-applikazzjoni taqra d-dejta) - dan mhux se jkun l-approċċ it-tajjeb, peress li f'dan il-każ l-informazzjoni mill-konfigurazzjonijiet tkun disponibbli pubblikament għall-iżviluppaturi tal-applikazzjoni kollha u d-dejta mis-server tal-produzzjoni tkun kompromessa. Il-konfigurazzjonijiet kollha għandhom jinħażnu direttament fis-sistema ta’ skjerament (CI/CD) u ġenerati għal ambjenti differenti b’valuri differenti meħtieġa għal ambjent speċifiku fil-ħin tal-iskjerament.
4. Servizzi ta' Partijiet Terzi
Kun strettament marbut mal-ambjent, uża konnessjonijiet differenti għall-istess servizzi f'ċerti ambjenti.
Fil-fatt, dan il-punt jikkoinċidi b'mod qawwi mal-punt dwar il-konfigurazzjonijiet, peress li mingħajr dan il-punt, id-dejta tal-konfigurazzjoni normali ma tistax issir u, b'mod ġenerali, il-kapaċità li tiġi kkonfigurata tinżel fix-xejn.
Il-konnessjonijiet kollha għal servizzi esterni, bħal servers ta’ kju, databases, servizzi ta’ caching, għandhom ikunu l-istess kemm għall-ambjent lokali kif ukoll għall-ambjent ta’ parti terza/produzzjoni. Fi kliem ieħor, fi kwalunkwe ħin, billi nbiddel is-sekwenza tal-konnessjoni, nista' nissostitwixxi sejħiet għall-bażi #1 bil-bażi #2 mingħajr ma nbiddel il-kodiċi tal-applikazzjoni. Jew, tħares 'il quddiem, bħala eżempju, meta tiskala s-servizz, ma jkollokx għalfejn tispeċifika l-konnessjoni b'xi mod speċjali għal server ta' cache addizzjonali.
5. Ibni, rilaxx, tesegwixxi
Ikollok biss il-verżjoni finali tal-kodiċi fuq is-server, mingħajr ebda ċans li tirreġġa' lura r-rilaxx. M'hemmx għalfejn timla l-ispazju tad-diska. Kull min jaħseb li jista' jirrilaxxa kodiċi fil-produzzjoni bi żball huwa programmatur ħażin!
L-istadji kollha tal-iskjerament għandhom ikunu separati minn xulxin.
Ikollok iċ-ċans li terġa 'lura. Agħmel rilaxxi b'kopji qodma tal-applikazzjoni (diġà mmuntati u lesti għall-battalja) salvati f'aċċess rapidu, sabiex f'każ ta 'żbalji tkun tista' tirrestawra l-verżjoni l-antika. Jiġifieri, kondizzjonalment hemm folder rilaxxi u folder kurrenti, u wara skjerament u assemblaġġ b'suċċess il-folder kurrenti marbuta b'rabta simbolika mar-rilaxx il-ġdid li jinsab ġewwa rilaxxi bl-isem konvenzjonali tan-numru tar-rilaxx.
Dan huwa fejn niftakru l-iskjerament tal-Blue-Green, li jippermettilek mhux biss taqleb bejn il-kodiċi, iżda wkoll taqleb bejn ir-riżorsi kollha u anke l-ambjenti bil-kapaċità li tirritorna kollox.
6. Proċessi
Aħżen id-dejta tal-istat tal-applikazzjoni direttament fl-applikazzjoni nnifisha. Uża sessjonijiet fir-RAM tal-applikazzjoni nnifisha. Uża kemm jista' jkun qsim bejn servizzi ta' partijiet terzi. Jistrieħ fuq il-fatt li l-applikazzjoni jista 'jkollha biss proċess wieħed u ma jippermettux għall-iskala.
Rigward is-sessjonijiet, aħżen id-dejta biss f'cache ikkontrollata minn servizzi ta 'partijiet terzi (memcached, redis), għalhekk anki jekk għandek 20 proċess ta' applikazzjoni għaddej, kwalunkwe wieħed minnhom, wara li jkun aċċessa għall-cache, ikun jista 'jkompli jaħdem mal-klijent f' l-istess stat li fih l-utent kien qed jaħdem bl-applikazzjoni fi proċess ieħor. B'dan l-approċċ, jirriżulta li tkun kemm tuża kopji ta 'servizzi ta' partijiet terzi, kollox se jaħdem b'mod normali u mingħajr problemi bl-aċċess għad-dejta.
7. L-irbit tal-port
Is-server tal-web biss għandu jkun jaf kif jaħdem ma 'servizzi ta' partijiet terzi. Jew aħjar, installa servizzi ta 'partijiet terzi direttament ġewwa s-server tal-web. Per eżempju, bħala modulu PHP f'Apache.
Is-servizzi kollha tiegħek għandhom ikunu aċċessibbli għal xulxin permezz ta’ aċċess għal xi indirizz u port (localgost:5432, localhost:3000, nginx:80, php-fpm:9000), jiġifieri minn nginx nista’ jaċċessa kemm php- fpm kif ukoll għal postgres, u minn php-fpm għal postgres u nginx u fil-fatt minn kull servizz nista' jaċċessa servizz ieħor. B'dan il-mod, il-vijabbiltà ta' servizz ma tkunx marbuta mal-vijabbiltà ta' servizz ieħor.
8. Paralleliżmu
Aħdem ma 'proċess wieħed, inkella diversi proċessi ma jkunux jistgħu jiksbu flimkien ma' xulxin!
Ħalli spazju għall-iskala. Docker swarm huwa kbir għal dan.
Docker Swarm hija għodda għall-ħolqien u l-ġestjoni ta’ gruppi ta’ kontenituri kemm bejn magni differenti kif ukoll mazz ta’ kontenituri fuq l-istess magna.
Bl-użu ta 'swarm, nista' niddetermina kemm se nalloka riżorsi għal kull proċess u kemm se nniedi proċessi tal-istess servizz, u l-balancer intern, li jirċievi dejta fuq port partikolari, awtomatikament se jipprokuraha lill-proċessi. Għalhekk, meta nara li t-tagħbija fuq is-server żdiedet, nista 'nżid aktar proċessi, u b'hekk inaqqas it-tagħbija fuq ċerti proċessi.
9. Disposabilità
Tużax kjuwijiet biex taħdem bi proċessi u data. Il-qtil ta' proċess wieħed għandu jaffettwa l-applikazzjoni kollha. Jekk servizz wieħed jinżel, kollox jinżel.
Kull proċess u servizz jista’ jintfew fi kwalunkwe ħin u dan m’għandux jaffettwa servizzi oħra (naturalment, dan ma jfissirx li s-servizz mhux se jkun disponibbli għal servizz ieħor, iżda li servizz ieħor ma jintefax wara dan). Il-proċessi kollha għandhom jiġu tterminati b'mod grazzjuż, sabiex meta jiġu tterminati, l-ebda data ma tiġi mħassra u s-sistema taħdem b'mod korrett il-ħin li jmiss li tixgħelha. Jiġifieri, anke fil-każ ta’ terminazzjoni ta’ emerġenza, id-dejta m’għandhiex issirilhom ħsara (il-mekkaniżmu tat-tranżazzjoni huwa adattat hawnhekk, il-mistoqsijiet fid-database jaħdmu biss fi gruppi, u jekk mill-inqas mistoqsija waħda mill-grupp tfalli jew titwettaq b’ żball, allura l-ebda mistoqsija oħra mill-grupp fl-aħħar mill-aħħar ma tfalli fil-fatt).
10. Parità ta' żvilupp/operazzjoni ta' applikazzjoni
Il-produzzjoni, l-istadju u l-verżjoni lokali tal-applikazzjoni għandhom ikunu differenti. Fil-produzzjoni nużaw il-qafas Yii Lite, u lokalment Yii, sabiex taħdem aktar malajr fil-produzzjoni!
Fir-realtà, l-iskjeramenti kollha u x-xogħol bil-kodiċi għandhom ikunu kważi f'ambjent identiku (m'aħniex nitkellmu dwar hardware fiżiku). Ukoll, kwalunkwe impjegat ta 'żvilupp għandu jkun jista' juża l-kodiċi għall-produzzjoni jekk meħtieġ, u mhux xi dipartiment devops imħarreġ apposta, li bis-saħħa biss ta 'saħħa speċjali jista' jneħħi l-applikazzjoni fil-produzzjoni.
Docker jgħinna wkoll f'dan. Jekk jiġu osservati l-punti kollha ta 'qabel, l-użu ta' docker iġib il-proċess tal-iskjerament tal-ambjent kemm fuq il-produzzjoni kif ukoll fuq il-magna lokali biex jiddaħħal kmand wieħed jew tnejn.
11. Zkuk
Aħna niktbu zkuk għal fajls u databases! Aħna ma naddafx fajls u databases minn zkuk. Ejja nixtru ħardrajv b'9000 Peta bytes u tajjeb.
Ir-reġistri kollha għandhom jitqiesu bħala fluss ta' avvenimenti. L-applikazzjoni nnifisha m'għandhiex tkun involuta fl-ipproċessar ta' zkuk. Iċ-zkuk għandhom jinħarġu jew lil stdout jew jintbagħtu permezz ta' protokoll bħal udp, sabiex ix-xogħol ma' zkuk ma joħloq l-ebda problema għall-applikazzjoni. graylog huwa tajjeb għal dan. Graylog li jirċievi z-zkuk kollha permezz ta 'udp (dan il-protokoll ma jeħtieġx stennija għal tweġiba dwar ir-riċeviment b'suċċess tal-pakkett) ma jinterferixxi ma' l-applikazzjoni bl-ebda mod u jittratta biss l-istrutturar u l-ipproċessar ta 'zkuk. Il-loġika tal-applikazzjoni ma tinbidilx biex taħdem ma 'approċċi bħal dawn.
12. Kompiti ta' amministrazzjoni
Biex taġġorna d-dejta, id-databases, eċċ., uża endpoint maħluq separatament fl-API, l-eżekuzzjoni tagħha 2 darbiet wara xulxin tirriżulta f'kollox jiġi duplikat. Imma m'intix stupid, mhux se tikklikkja darbtejn, u m'għandniex bżonn il-migrazzjoni.
Il-kompiti kollha ta' amministrazzjoni għandhom jitwettqu fl-istess ambjent bħall-kodiċi kollha, fil-livell tar-rilaxx. Jiġifieri, jekk ikollna bżonn nibdlu l-istruttura tad-database, allura mhux se nagħmluha manwalment billi nbiddlu l-ismijiet tal-kolonni u nżidu oħrajn ġodda permezz ta 'xi għodod viżwali għall-ġestjoni tad-database. Għal affarijiet bħal dawn, noħolqu skripts separati - migrazzjonijiet, li huma esegwiti kullimkien u fl-ambjenti kollha bl-istess mod b'riżultat komuni u li jinftiehem. Għall-kompiti l-oħra kollha, bħall-mili tal-proġett bid-dejta, għandhom jintużaw metodoloġiji simili.
Eżempju ta' implimentazzjoni f'PHP, Laravel, Laradock, Docker-Compose
PS L-eżempji kollha saru fuq MacOS. Ħafna minnhom huma wkoll adattati għal Linux. Utenti tal-Windows, ahfruni, imma ilni ma naħdimx mal-Windows.
Ejja nimmaġinaw sitwazzjoni fejn m'għandna l-ebda verżjoni tal-PHP installata fuq il-PC tagħna u xejn.
Installa l-aħħar verżjonijiet ta 'docker u docker-compose. (dan jista' jinstab fuq l-Internet)
git clone https://github.com/Laradock/laradock.git &&
ls
Rigward Laradock, se ngħid li hija ħaġa friska ħafna, li fiha ħafna kontenituri u affarijiet awżiljarji. Imma jien ma nirrakkomandax li tuża Laradock bħala tali mingħajr modifiki fil-produzzjoni minħabba s-sensja tiegħu. Huwa aħjar li toħloq il-kontenituri tiegħek stess ibbażati fuq eżempji f'Laradock, dan se jkun ħafna aktar ottimizzat, għaliex ħadd ma għandu bżonn dak kollu li jkun hemm fl-istess ħin.
2. Ikkonfigura Laradock biex imexxi l-applikazzjoni tagħna.
cd laradock &&
cp env-example .env
2.1. Iftaħ id-direttorju tal-habr (il-folder ġenitur li fih jiġi kklonat laradock) f'xi editur. (Fil-każ tiegħi PHPStorm)
F'dan l-istadju nagħtu biss isem lill-proġett.
2.2. Niedi l-immaġni tal-ispazju tax-xogħol. (Fil-każ tiegħek, l-immaġini se jieħdu xi żmien biex jinbnew)
L-ispazju tax-xogħol huwa immaġni ppreparata apposta biex taħdem mal-qafas f'isem l-iżviluppatur.
Immorru ġewwa l-kontenitur bl-użu
docker-compose up -d workspace &&
docker-compose exec workspace bash
2.4. Wara l-installazzjoni, niċċekkjaw jekk id-direttorju bil-proġett inħoloqx u joqtlu l-komponiment.
ls
exit
docker-compose down
2.5. Ejja mmorru lura għal PHPStorm u ssettja t-triq korretta għall-applikazzjoni laravel tagħna fil-fajl .env.
3. Żid il-kodiċi kollu ma 'Git.
Biex tagħmel dan, aħna se noħolqu repożitorju fuq Github (jew imkien ieħor). Ejja mmorru fid-direttorju habr fit-terminal u tesegwixxi l-kodiċi li ġej.
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
Ejja niċċekkjaw jekk kollox hux tajjeb.
Għall-konvenjenza, nirrakkomanda li tuża xi interface viżwali għal Git, fil-każ tiegħi huwa GitKraken. (hawn hawn link ta' referenza)
4. Ejja nniedu!
Qabel ma tibda, kun żgur li xejn mhu mdendel fuq il-portijiet 80 u 443.
docker-compose up -d nginx php-fpm
Għalhekk, il-proġett tagħna jikkonsisti fi 3 servizzi separati:
nginx - server tal-web
php-fpm - php biex tirċievi talbiet minn web server
spazju tax-xogħol - php għall-iżviluppaturi
Bħalissa, ksibna li ħloqna applikazzjoni li tissodisfa 4 punti minn 12, jiġifieri:
1. Codebase — il-kodiċi kollu jinsab f'repożitorju wieħed (nota żgħira: jista 'jkun korrett li żżid docker ġewwa l-proġett laravel, iżda dan mhux importanti).
2. Dipendenzi - Id-dipendenzi kollha tagħna huma miktuba b'mod espliċitu f'application/composer.json u f'kull Dockerfile ta' kull kontenitur.
3. Servizzi ta' Sostenn — Kull wieħed mis-servizzi (php-fom, nignx, workspace) jgħix ħajtu stess u huwa konness minn barra u meta jaħdem ma’ servizz wieħed, l-ieħor mhux se jiġi affettwat.
4. Proċessi — kull servizz huwa proċess wieħed. Kull wieħed mis-servizzi ma jżommx stat intern.
5. L-irbit tal-port
docker ps
Kif nistgħu naraw, kull servizz jaħdem fuq il-port tiegħu stess u huwa aċċessibbli għas-servizzi l-oħra kollha.
Ejja nwaqqfu l-kontenituri u ngħadduhom mill-bandiera --skala
docker-compose down &&
docker-compose up -d --scale php-fpm=3 nginx php-fpm
Kif nistgħu naraw, inħolqu kopji tal-kontenitur php-fpm. M'għandna bżonn nibdlu xejn meta naħdmu ma' dan il-kontenitur. Aħna wkoll inkomplu naċċessawha fuq il-port 9000, u Docker jirregola t-tagħbija bejn il-kontejners għalina.
7. Disposabilità - kull kontenitur jista 'jinqatel mingħajr ma ssir ħsara lill-ieħor. Il-waqfien jew il-bidu mill-ġdid tal-kontenitur mhux se jaffettwa l-operat tal-applikazzjoni waqt tnedija sussegwenti. Kull kontenitur jista 'jittella' wkoll fi kwalunkwe ħin.
8. Parità ta' żvilupp/operazzjoni ta' applikazzjoni - l-ambjenti kollha tagħna huma l-istess. Billi tħaddem is-sistema fuq server fil-produzzjoni, ma jkollokx għalfejn tibdel xejn fil-kmandi tiegħek. Kollox se jkun ibbażat fuq Docker bl-istess mod.
9. Logging — zkuk kollha f'dawn il-kontenituri jmorru għall-fluss u huma viżibbli fil-console Docker. (f'dan il-każ, fil-fatt, b'kontenituri oħra magħmula mid-dar, dan jista' ma jkunx il-każ jekk ma tieħux ħsiebu)
docker-compose logs -f
Iżda hemm qabda li l-valuri Default f'PHP u Nginx jiktbu wkoll zkuk f'fajl. Biex jintlaħqu t-12-il fattur, huwa meħtieġ skonnettja kitba ta 'zkuk għal fajl fil-konfigurazzjonijiet ta' kull kontenitur separatament.
Docker jipprovdi wkoll il-kapaċità li jibgħat zkuk mhux biss lil stdout, iżda wkoll lil affarijiet bħal graylog, li semmejt hawn fuq. U ġewwa l-graylog, nistgħu nħaddmu r-zkuk kif jekk jogħġbok u l-applikazzjoni tagħna ma tinnota dan bl-ebda mod.
10. Ħidmiet ta' amministrazzjoni — il-kompiti kollha tal-amministrazzjoni jiġu solvuti minn laravel grazzi għall-għodda artiġjanali eżattament kif jixtiequ l-ħallieqa tal-applikazzjoni tat-12-il fattur.
Bħala eżempju, ser nuri kif xi kmandi huma esegwiti.
Nidħlu fil-kontenitur.
docker-compose exec workspace bash
php artisan list
Issa nistgħu nużaw kwalunkwe kmand. (jekk jogħġbok innota li aħna ma kkonfigurajniex id-database u l-cache, għalhekk nofs il-kmandi mhux se jiġu esegwiti b'mod korrett, minħabba li huma ddisinjati biex jaħdmu mal-cache u d-database).
11. Konfigurazzjonijiet u 12. Ibni, rilaxx, run
Xtaqt niddedika din il-parti għal Blue-Green Deployment, iżda rriżulta li kien estensiv wisq għal dan l-artikolu. Se nikteb artiklu separat dwar dan.
Fil-qosor, il-kunċett huwa bbażat fuq sistemi CI/CD simili Jenkins и Gitlab CI. Fit-tnejn, tista 'tissettja varjabbli ambjentali assoċjati ma' ambjent speċifiku. Għaldaqstant, f'din is-sitwazzjoni, il-punt c se jiġi sodisfatt Konfigurazzjonijiet.
U l-punt dwar Ibni, rilaxx, run hija solvuta minn funzjonijiet built-in bl-isem Pipeline.
Pipeline jippermettilek taqsam il-proċess ta 'skjerament f'ħafna stadji, u tenfasizza l-istadji ta' assemblaġġ, rilaxx u eżekuzzjoni. Ukoll fil-Pipeline, tista 'toħloq backups, u tabilħaqq xejn. Din hija għodda b'potenzjal bla limitu.
Il-kodiċi tal-applikazzjoni jinsab fuq GitHub.
Tinsiex inizjalizza s-submodulu meta tikklona dan ir-repożitorju.
PS: Dawn l-approċċi kollha jistgħu jintużaw ma 'kwalunkwe utilitajiet u lingwa ta' programmar oħra. Il-ħaġa prinċipali hija li l-essenza ma tvarjax.