Pangembangan aplikasi sareng panyebaran Biru-Héjo, dumasar kana metodologi Aplikasi Dua Belas-Faktor kalayan conto dina php sareng docker

Pangembangan aplikasi sareng panyebaran Biru-Héjo, dumasar kana metodologi Aplikasi Dua Belas-Faktor kalayan conto dina php sareng docker

Kahiji, téori saeutik. Aya naon The Dua belas-Faktor App?

Dina kecap basajan, dokumén ieu dirancang pikeun simplify ngembangkeun aplikasi SaaS, mantuan ku informing pamekar jeung insinyur DevOps ngeunaan masalah jeung prakték nu paling mindeng kapanggih dina ngembangkeun aplikasi modern.

Dokumén éta diciptakeun ku pamekar platform Heroku.

Aplikasi Dua Belas-Faktor tiasa diterapkeun kana aplikasi anu ditulis dina basa pamrograman naon waé sareng nganggo kombinasi jasa pangrojong (database, antrian pesen, cache, jsb.).

Sakeudeung ngeunaan faktor anu dumasar kana metodologi ieu:

  1. Codebase - Hiji basis kode dilacak dina kadali versi - sababaraha panyebaran
  2. Depéndensi - Sacara eksplisit nyatakeun sareng ngasingkeun kagumantungan
  3. Konfigurasi - Simpen konfigurasi dina runtime
  4. Jasa Ngadukung - Pertimbangkeun jasa dukungan salaku sumber daya plug-in
  5. Ngawangun, ngaleupaskeun, ngajalankeun - Pisahkeun sacara ketat tahap perakitan sareng palaksanaan
  6. Proses dina prosés - Jalankeun aplikasi salaku hiji atanapi langkung prosés stateless
  7. Port ngariung - jasa ékspor via port mengikat
  8. Parallelism - Skala aplikasi anjeun nganggo prosés
  9. Disposability - Maksimalkeun reliabilitas kalayan ngamimitian gancang sareng mareuman bersih
  10. ngembangkeun aplikasi / parity operasi - Jaga ngembangkeun anjeun, pementasan, sareng lingkungan produksi sabisa-bisa
  11. logging - Tingali log salaku aliran kajadian
  12. Tugas administrasi - Ngalaksanakeun tugas administrasi / manajemén ngagunakeun prosés ad hoc

Anjeun tiasa kéngingkeun inpormasi langkung seueur ngeunaan 12 faktor tina sumber-sumber ieu:

Naon deployment Blue-Héjo?

Panyebaran Biru-Héjo mangrupikeun metode pikeun ngirim aplikasi ka produksi dina cara sapertos nu klien tungtung teu ningali parobahan naon on bagian na. Dina basa sejen, deploying hiji aplikasi kalawan enol reureuh.

Skéma BG Deploy klasik sapertos anu dipidangkeun dina gambar di handap ieu.

Pangembangan aplikasi sareng panyebaran Biru-Héjo, dumasar kana metodologi Aplikasi Dua Belas-Faktor kalayan conto dina php sareng docker

  • Dina awalna aya 2 server fisik kalayan kode, aplikasi, proyék, sareng aya router (balancer).
  • Router mimitina ngarahkeun sadaya pamundut ka salah sahiji server (hejo).
  • Dina momen nalika anjeun kedah ngaleupaskeun deui, sadaya proyék diropéa dina server anu sanés (biru), anu ayeuna henteu ngolah pamundut naon waé.
  • Saatos kode dihurungkeun biru server tos rengse diropéa, router anu dibéré paréntah pikeun pindah ti hejo dina biru server.
  • Ayeuna sadaya klien ningali hasil tina kode ngajalankeun kalawan bulao server.
  • Pikeun sawatara waktu, hejo server boga fungsi minangka salinan cadangan bisi deployment gagal mun biru server jeung bisi gagal jeung bug, router switch aliran pamaké deui hejo server kalawan versi stabil heubeul, jeung kode anyar dikirim pikeun révisi sarta nguji.
  • Sareng dina ahir prosés, éta diropéa dina cara anu sami hejo server. Sarta sanggeus ngamutahirkeun eta, router pindah aliran pamundut deui ka hejo server.

Éta sadayana katingali saé pisan sareng dina pandangan kahiji teu kedah aya masalah sareng éta.
Tapi saprak urang hirup di dunya modéren, pilihan jeung switching fisik sakumaha dituduhkeun dina skéma klasik teu cocog pikeun urang. Catet inpormasi kanggo ayeuna, kami bakal uih deui engké.

Nasehat goréng jeung alus

Bantahan: Conto di handap nembongkeun Utiliti / metodologi nu kuring make, Anjeun tiasa make pancen sagala alternatif kalawan fungsi sarupa.

Kalolobaan conto bakal dina hiji cara atanapi sejen motong sareng ngembangkeun web (ieu kejutan), kalawan PHP jeung Docker.

Paragraf di handap nyadiakeun pedaran praktis basajan ngeunaan pamakéan faktor ngagunakeun conto husus; lamun hayang meunang leuwih tiori ngeunaan topik ieu, turutan tumbu di luhur ka sumber aslina.

1. Codebase

Anggo FTP sareng FileZilla pikeun unggah file ka server hiji-hiji, ulah nyimpen kodeu dimana waé sanés dina server produksi.

Proyék kedah salawasna gaduh basa kode tunggal, nyaéta, sadaya kode asalna tina hiji indit gudang. Server (produksi, pementasan, test1, test2 ...) ngagunakeun kode tina cabang hiji gudang umum. Ku cara ieu urang ngahontal konsistensi kode.

2. Depéndensi

Unduh sadaya perpustakaan dina polder langsung ka akar proyék. Jieun apdet ngan saukur ku nransper kodeu anyar kana polder kalawan versi kiwari perpustakaan. Pasang sadaya utilitas anu diperyogikeun langsung dina server host dimana 20 langkung seueur jasa dijalankeun.

Hiji proyék kudu salawasna boga daptar jelas kaharti tina kagumantungan (ku dependensi kuring ogé hartosna lingkungan). Sadaya katergantungan kedah didefinisikeun sacara eksplisit sareng diisolasi.
Hayu urang nyandak sabagé conto komposer и Docker.

komposer - manajer pakét anu ngamungkinkeun anjeun masang perpustakaan dina PHP. Komposer ngamungkinkeun anjeun pikeun nangtukeun versi sacara ketat atanapi sacara bébas, sareng sacara eksplisit ngahartikeunana. Bisa aya 20 proyék béda dina server na masing-masing bakal boga daptar pribadi tina bungkusan na perpustakaan bebas tina lianna.

Docker - utilitas anu ngamungkinkeun anjeun ngartikeun sareng ngasingkeun lingkungan dimana aplikasi bakal dijalankeun. Sasuai, kawas kalawan komposer, tapi leuwih tuntas, urang bisa nangtukeun naon gawéna aplikasi. Pilih versi husus tina PHP, install ukur bungkusan dipikabutuh pikeun proyék pikeun jalan, tanpa nambahkeun nanaon tambahan. Jeung paling importantly, tanpa interfering jeung bungkusan jeung lingkungan mesin host jeung proyék séjén. Nyaéta, sadaya proyék dina server anu dijalankeun ngaliwatan Docker tiasa nganggo leres-leres set bungkusan sareng lingkungan anu béda.

3. Konfigurasi

Nyimpen configs salaku konstanta langsung dina kode. Konstanta misah pikeun server test, misah pikeun produksi. Dasi operasi aplikasi gumantung kana lingkungan langsung dina logika bisnis proyék ngagunakeun lamun sejenna constructs.

Konfigurasi - Ieu hiji-hijina cara nu deployments proyék kudu béda. Ideally, konfigurasi kudu ngaliwatan variabel lingkungan (env vars).

Nyaéta, sanajan anjeun nyimpen sababaraha file konfigurasi .config.prod .config.local sarta ngaganti ngaran aranjeunna dina waktu deployment ka .config (konfigurasi utama ti mana aplikasi nu maca data) - ieu moal jadi pendekatan katuhu, saprak dina hal ieu informasi tina konfigurasi bakal sadia pikeun umum pikeun sakabéh pamekar aplikasi tur data ti server produksi bakal compromised. Sadaya konfigurasi kedah disimpen langsung dina sistem panyebaran (CI / CD) sareng dibangkitkeun pikeun lingkungan anu béda-béda kalayan nilai anu béda anu dipikabutuh pikeun lingkungan anu khusus dina waktos panyebaran.

4. Jasa pihak katilu

Kudu ketat dihijikeun ka lingkungan, make sambungan béda pikeun layanan nu sarua dina lingkungan nu tangtu.

Kanyataanna, titik ieu pisan tumpang tindih jeung titik ngeunaan konfigurasi, saprak tanpa titik ieu, data konfigurasi normal teu bisa dijieun tur, sacara umum, kamampuhan pikeun ngonpigurasikeun bakal lungsur ka euweuh.

Sadaya sambungan kana jasa éksternal, sapertos server antrian, pangkalan data, jasa cache, kedah sami pikeun lingkungan lokal sareng lingkungan pihak katilu / produksi. Dina basa sejen, iraha wae, ku cara ngarobah string sambungan, abdi tiasa ngaganti panggero ka base #1 kalawan base #2 tanpa ngarobah kodeu aplikasi. Atanapi, ningali payun, salaku conto, nalika skala jasa, anjeun henteu kedah netepkeun sambungan dina cara anu khusus pikeun server cache tambahan.

5. Ngawangun, ngaleupaskeun, ngajalankeun

Boga ngan versi ahir kode dina server, kalawan henteu kasempetan rolling deui release nu. Henteu kedah ngeusian rohangan disk. Saha waé anu nyangka yén aranjeunna tiasa ngaleupaskeun kode kana produksi kalayan kasalahan mangrupikeun programer anu goréng!

Sadaya tahapan panyebaran kedah dipisahkeun.

Boga kasempetan pikeun gulung deui. Ngadamel sékrési nganggo salinan aplikasi anu lami (parantos dirakit sareng siap perang) disimpen dina aksés gancang, supados upami aya kasalahan anjeun tiasa mulangkeun versi anu lami. Hartina, saratna aya polder Kaluaran jeung folder ayeuna, sarta sanggeus suksés deployment sarta assembly polder ayeuna dikaitkeun ku tumbu simbolis ka release anyar nu perenahna di jero Kaluaran kalawan ngaran konvensional nomer release.

Ieu dimana urang apal deployment Blue-Héjo, nu ngidinan Anjeun teu ngan pindah antara kode, tapi ogé pikeun pindah antara sagala sumberdaya komo lingkungan jeung kamampuhan pikeun gulung deui sagalana.

6. Prosés

Nyimpen data kaayaan aplikasi langsung dina aplikasi sorangan. Paké sesi dina RAM tina aplikasi sorangan. Anggo saloba-lobana babagi antara ladenan pihak katilu sabisa-bisa. Ngandelkeun kanyataan yén aplikasi ngan bisa boga hiji prosés jeung teu ngidinan pikeun skala.

Ngeunaan sési, nyimpen data ngan ukur dina cache anu dikontrol ku jasa pihak katilu (memcached, redis), janten sanaos anjeun gaduh 20 prosés aplikasi anu ngajalankeun, salah sahijina, saatos ngaksés cache, bakal tiasa teras damel sareng klien dina. kaayaan anu sami dimana pangguna damel sareng aplikasi dina prosés anu sanés. Kalayan pendekatan ieu, tétéla yén henteu paduli sabaraha salinan jasa pihak katilu anu anjeun anggo, sadayana bakal tiasa dianggo sacara normal sareng tanpa masalah aksés kana data.

7. Port ngariung

Ngan pangladén wéb anu kedah terang kumaha damel sareng jasa pihak katilu. Atanapi langkung saé, pasang jasa pihak katilu langsung di jero pangladén wéb. Contona, salaku modul PHP dina Apache.
Sadaya jasa anjeun kedah tiasa diaksés ku silih ngalangkungan aksés ka sababaraha alamat sareng port (localgost: 5432, localhost: 3000, nginx: 80, php-fpm: 9000), nyaéta, tina nginx kuring tiasa ngaksés php- fpm sareng ka postgres, sareng ti php-fpm ka postgres sareng nginx sareng saleresna tina unggal jasa kuring tiasa ngaksés jasa anu sanés. Ku cara ieu, viability sahiji layanan teu kabeungkeut ku viability sahiji layanan sejen.

8. Paralélisme

Gawé sareng hiji prosés, upami henteu sababaraha prosés moal tiasa akur sareng anu sanés!

Ninggalkeun rohangan pikeun skala. Docker ngagimbung saé pikeun ieu.
Docker Swarm mangrupikeun alat pikeun nyiptakeun sareng ngatur gugusan wadah boh antara mesin anu béda sareng sakumpulan wadah dina mesin anu sami.

Ngagunakeun ngagimbung, abdi tiasa nangtukeun sabaraha sumberdaya kuring bakal allocate kana unggal prosés jeung sabaraha prosés tina layanan anu sarua kuring baris ngajalankeun, sarta balancer internal, narima data dina port dibikeun, otomatis bakal proxy kana prosés. Ku kituna, ningali yén beban dina server geus ngaronjat, abdi tiasa nambahkeun leuwih prosés, kukituna ngurangan beban dina prosés nu tangtu.

9. Disposability

Entong nganggo antrian pikeun ngerjakeun prosés sareng data. Maéhan hiji prosés kedah mangaruhan sakabéh aplikasi. Upami salah sahiji jasa turun, sadayana turun.

Unggal prosés sareng jasa tiasa dipareuman iraha waé sareng ieu henteu mangaruhan jasa anu sanés (tangtosna, ieu sanés hartosna yén jasa éta henteu sayogi pikeun jasa anu sanés, tapi jasa anu sanés moal pareum saatos ieu). Kabéh prosés kudu terminated gracefully, ku kituna lamun aranjeunna terminated, euweuh data bakal ruksak sarta sistem bakal jalan leres mun anjeun ngahurungkeun deui. Nyaéta, sanaos upami aya terminasi darurat, data henteu kedah ruksak (mékanisme transaksi cocog di dieu, patarosan dina database tiasa dianggo ngan dina grup, sareng upami sahenteuna hiji pamundut ti grup gagal atanapi dieksekusi ku kasalahan, mangka euweuh query séjén ti grup pamustunganana gagal dina kanyataanana).

10. ngembangkeun aplikasi / parity operasi

Produksi, pementasan sareng versi lokal aplikasi kedah béda. Dina produksi kami nganggo kerangka Yii Lite, sareng lokal Yii, supados tiasa dianggo langkung gancang dina produksi!

Kanyataanana, sadaya panyebaran sareng damel sareng kode kedah aya dina lingkungan anu ampir sami (urang henteu ngobrol ngeunaan hardware fisik). Ogé, sagala pagawe ngembangkeun kudu bisa nyebarkeun kode ka produksi lamun perlu, sarta teu sababaraha departemén devops dilatih husus, nu ngan berkat kakuatan husus bisa ngangkat aplikasi kana produksi.

Docker ogé mantuan kami ku ieu. Upami sadaya titik sateuacana dititénan, ngagunakeun docker bakal ngalaksanakeun prosés nyebarkeun lingkungan boh dina produksi sareng dina mesin lokal pikeun ngalebetkeun hiji atanapi dua paréntah.

11. Log

Kami nyerat log kana file sareng pangkalan data! Kami henteu ngabersihan file sareng pangkalan data tina log. Hayu urang meuli hard drive kalawan 9000 Peta bait na éta rupa.

Sadaya log kedah dianggap salaku aliran acara. Aplikasi sorangan henteu kedah kalibet dina ngolah log. Log kedah kaluaran boh ka stdout atanapi dikirim via protokol sapertos udp, supados damel sareng log henteu nyiptakeun masalah pikeun aplikasi. graylog hadé pikeun ieu. Graylog nampi sadaya log via udp (protokol ieu henteu meryogikeun ngantosan réspon ngeunaan pakét anu suksés) henteu ngaganggu aplikasi dina cara naon waé sareng ngan ukur ngurus structuring sareng ngolah log. Logika aplikasi henteu robih pikeun dianggo sareng pendekatan sapertos kitu.

12. Tugas administrasi

Pikeun ngapdet data, basis data, jeung sajabana, anggo titik tungtung anu didamel sacara misah dina API, ngalaksanakeunana 2 kali berturut-turut bakal nyababkeun sadayana duplikat. Tapi anjeun teu bodo, anjeun moal klik dua kali, sarta kami henteu kedah migrasi.

Sadaya tugas administrasi kedah dilakukeun dina lingkungan anu sami sareng sadaya kode, dina tingkat pelepasan. Nyaéta, upami urang kedah ngarobih struktur pangkalan data, maka urang moal ngalakukeunana sacara manual ku cara ngarobih nami kolom sareng nambihan anu énggal ngalangkungan sababaraha alat manajemén database visual. Pikeun hal sapertos kitu, urang nyiptakeun skrip anu misah - migrasi, anu dieksekusi di mana waé sareng di sadaya lingkungan dina cara anu sami sareng hasil anu umum sareng kaharti. Pikeun sadaya tugas anu sanés, sapertos ngeusian proyék kalayan data, metodologi anu sami kedah dianggo.

Conto palaksanaan dina PHP, Laravel, Laradock, Docker-Compose

PS Sadaya conto dijieun dina MacOS. Kaseueuranana ogé cocog pikeun Linux. Pamaké Windows, hapunten kuring, tapi kuring parantos lami teu damel sareng Windows.

Hayu urang ngabayangkeun kaayaan dimana urang teu boga versi PHP dipasang dina PC urang jeung nanaon pisan.
Pasang versi panganyarna tina docker sareng docker-compose. (Ieu tiasa dipendakan dina Internét)

docker -v && 
docker-compose -v

Pangembangan aplikasi sareng panyebaran Biru-Héjo, dumasar kana metodologi Aplikasi Dua Belas-Faktor kalayan conto dina php sareng docker

1. Nempatkeun Laradock

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

Pangembangan aplikasi sareng panyebaran Biru-Héjo, dumasar kana metodologi Aplikasi Dua Belas-Faktor kalayan conto dina php sareng docker

Ngeunaan Laradock, kuring bakal nyarios yén éta mangrupikeun hal anu saé, anu ngandung seueur wadah sareng barang bantu. Tapi kuring moal nyarankeun ngagunakeun Laradock sapertos tanpa modifikasi dina produksi kusabab redundancy na. Éta langkung saé pikeun nyiptakeun wadah anjeun nyalira dumasar kana conto di Laradock, ieu bakal langkung dioptimalkeun, sabab teu aya anu peryogi sadayana anu aya dina waktos anu sami.

2. Konpigurasikeun Laradock pikeun ngajalankeun aplikasi urang.

cd laradock && 
cp env-example .env

Pangembangan aplikasi sareng panyebaran Biru-Héjo, dumasar kana metodologi Aplikasi Dua Belas-Faktor kalayan conto dina php sareng docker

2.1. Buka diréktori habr (folder indungna dimana laradock diklon) dina sababaraha editor. (Dina kasus PHPStorm kuring)

Dina tahap ieu kami ngan ukur masihan nami proyék.

Pangembangan aplikasi sareng panyebaran Biru-Héjo, dumasar kana metodologi Aplikasi Dua Belas-Faktor kalayan conto dina php sareng docker

2.2. Ngajalankeun gambar workspace. (Dina hal anjeun, gambar bakal butuh sababaraha waktu pikeun ngawangun)
Workspace mangrupikeun gambar anu disiapkeun khusus pikeun damel sareng kerangka atas nama pamekar.

Urang asup ka jero wadah ngagunakeun

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

Pangembangan aplikasi sareng panyebaran Biru-Héjo, dumasar kana metodologi Aplikasi Dua Belas-Faktor kalayan conto dina php sareng docker

2.3. Masang Laravel

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

Pangembangan aplikasi sareng panyebaran Biru-Héjo, dumasar kana metodologi Aplikasi Dua Belas-Faktor kalayan conto dina php sareng docker

2.4. Saatos instalasi, urang pariksa naha diréktori jeung proyék geus dijieun tur maéhan nyusun.

ls
exit
docker-compose down

Pangembangan aplikasi sareng panyebaran Biru-Héjo, dumasar kana metodologi Aplikasi Dua Belas-Faktor kalayan conto dina php sareng docker

2.5. Hayu urang balik deui ka PHPStorm tur nyetel jalur bener ka aplikasi laravel urang dina file .env.

Pangembangan aplikasi sareng panyebaran Biru-Héjo, dumasar kana metodologi Aplikasi Dua Belas-Faktor kalayan conto dina php sareng docker

3. Tambahkeun sakabéh kode ka Git.

Jang ngalampahkeun ieu, urang bakal nyieun Repository on Github (atawa mana sejenna). Hayu urang angkat ka diréktori habr di terminal sareng laksanakeun kodeu di handap ieu.

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

Hayu urang pariksa lamun sagalana aya dina urutan.

Pangembangan aplikasi sareng panyebaran Biru-Héjo, dumasar kana metodologi Aplikasi Dua Belas-Faktor kalayan conto dina php sareng docker

Pikeun genah, abdi nyarankeun ngagunakeun sababaraha panganteur visual pikeun Git, bisi kuring éta GitKraken. (di dieu aya tautan rujukan)

4. Hayu urang ngajalankeun!

Sateuacan ngamimitian, pastikeun teu aya anu ngagantung dina palabuhan 80 sareng 443.

docker-compose up -d nginx php-fpm

Pangembangan aplikasi sareng panyebaran Biru-Héjo, dumasar kana metodologi Aplikasi Dua Belas-Faktor kalayan conto dina php sareng docker

Janten, proyék kami diwangun ku 3 jasa anu misah:

  • nginx - pangladén wéb
  • php-fpm - php pikeun narima requests ti web server
  • workspace - php pikeun pamekar

Ayeuna, kami parantos ngahontal yén kami parantos nyiptakeun aplikasi anu nyumponan 4 poin tina 12, nyaéta:

1. Codebase - sadayana kodeu aya dina hiji gudang (catetan leutik: tiasa leres pikeun nambihan docker dina proyék laravel, tapi ieu henteu penting).

2. Depéndensi - Sadaya katergantungan urang sacara eksplisit ditulis dina application/composer.json sareng dina unggal Dockerfile unggal wadahna.

3. Jasa Ngadukung - Masing-masing jasa (php-fom, nignx, workspace) hirup sorangan sareng disambungkeun ti luar sareng nalika damel sareng hiji jasa, anu sanés moal kapangaruhan.

4. Proses dina prosés - unggal jasa mangrupikeun hiji prosés. Masing-masing jasa henteu ngajaga kaayaan internal.

5. Port ngariung

docker ps

Pangembangan aplikasi sareng panyebaran Biru-Héjo, dumasar kana metodologi Aplikasi Dua Belas-Faktor kalayan conto dina php sareng docker

Sakumaha urang tiasa tingali, unggal jasa dijalankeun dina port sorangan sareng tiasa diaksés ku sadaya jasa anu sanés.

6. Parallelism

Docker ngamungkinkeun urang pikeun ngahasilkeun sababaraha prosés jasa anu sami sareng balancing beban otomatis antara aranjeunna.

Hayu urang ngeureunkeun peti jeung ngajalankeun aranjeunna ngaliwatan bandéra --skala

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

Pangembangan aplikasi sareng panyebaran Biru-Héjo, dumasar kana metodologi Aplikasi Dua Belas-Faktor kalayan conto dina php sareng docker

Salaku tiasa urang tingali, salinan geus dijieun tina wadahna php-fpm. Urang teu perlu ngarobah nanaon dina gawé bareng wadahna ieu. Urang ogé terus ngakses eta dina port 9000, sarta Docker ngatur beban antara peti keur urang.

7. Disposability - unggal wadahna tiasa dipaéhan tanpa ngabahayakeun anu sanés. Ngeureunkeun atanapi ngabalikan deui wadahna moal mangaruhan operasi aplikasi salami peluncuran salajengna. Unggal wadah ogé tiasa diangkat iraha waé.

8. ngembangkeun aplikasi / parity operasi - sadaya lingkungan urang sami. Ku ngajalankeun sistem dina server dina produksi, anjeun moal kudu ngarobah nanaon dina paréntah Anjeun. Sadayana bakal dumasar kana Docker dina cara anu sami.

9. logging - sadaya log dina wadah ieu angkat ka stream sareng katingali dina konsol Docker. (dina hal ieu, kanyataanna, sareng wadah buatan bumi sanés, ieu tiasa waé upami anjeun henteu ngurus éta)

 docker-compose logs -f

Pangembangan aplikasi sareng panyebaran Biru-Héjo, dumasar kana metodologi Aplikasi Dua Belas-Faktor kalayan conto dina php sareng docker

Tapi aya anu nyekel yén nilai Default dina PHP sareng Nginx ogé nyerat log kana file. Pikeun minuhan 12 faktor, perlu Cicing off nulis log ka file dina konfigurasi unggal wadahna misah.

Docker ogé nyayogikeun kamampuan pikeun ngirim log sanés ngan ukur pikeun stdout, tapi ogé pikeun hal-hal sapertos graylog, anu ku kuring disebatkeun di luhur. Sareng di jero graylog, urang tiasa ngoperasikeun log sakumaha anu dipikahoyong sareng aplikasi urang moal aya perhatikeun ku cara naon waé.

10. Tugas administrasi - Sadaya tugas administrasi direngsekeun ku laravel berkat alat artisan persis anu dipikahoyong ku panyipta aplikasi 12 faktor.

Salaku conto, kuring bakal nunjukkeun kumaha sababaraha paréntah dieksekusi.
Urang lebet kana wadahna.

 
docker-compose exec workspace bash
php artisan list

Pangembangan aplikasi sareng panyebaran Biru-Héjo, dumasar kana metodologi Aplikasi Dua Belas-Faktor kalayan conto dina php sareng docker

Ayeuna urang tiasa nganggo paréntah naon waé. (Punten dicatet yén kami henteu ngonpigurasikeun database sareng cache, janten satengah tina paréntahna moal dieksekusi leres, sabab dirancang pikeun dianggo sareng cache sareng database).

Pangembangan aplikasi sareng panyebaran Biru-Héjo, dumasar kana metodologi Aplikasi Dua Belas-Faktor kalayan conto dina php sareng docker

11. Konfigurasi sareng 12. Ngawangun, ngaleupaskeun, ngajalankeun

Abdi hoyong ngahaturanan bagian ieu ka Blue-Green Deployment, tapi tétéla éksténsif teuing pikeun tulisan ieu. Kuring bakal nulis artikel misah ngeunaan ieu.

Dina nutshell, konsep ieu dumasar kana sistem CI / CD kawas Jenkins и Gitlab CI. Dina duanana, Anjeun bisa nyetel variabel lingkungan pakait sareng lingkungan husus. Sasuai, dina kaayaan ieu, titik c bakal kaeusi Konfigurasi.

Jeung titik ngeunaan Ngawangun, ngaleupaskeun, ngajalankeun direngsekeun ku diwangun-di fungsi jeung ngaran pipa.

pipa ngidinan Anjeun pikeun ngabagi prosés panyebaran kana sababaraha tahapan, nyorot tahapan assembly, sékrési sareng palaksanaan. Ogé dina Pipeline, anjeun tiasa nyiptakeun cadangan, sareng naon waé. Ieu alat kalawan poténsi limitless.

Kode aplikasi aya di Github.
Tong hilap pikeun ngamimitian submodule nalika ngakloning gudang ieu.

PS: Sadaya pendekatan ieu tiasa dianggo sareng utilitas sareng basa program anu sanés. Hal utama nyaéta yén hakekatna henteu béda.

sumber: www.habr.com

Tambahkeun komentar