á áľáá˝ á˛á᪠áĽááááᢠáá áá á¨á áľáŤ áááą ááááŤáśá˝ áá°áá áŞáŤ ?
á ááá á áááá, áá á°ááľ á¨SaaS á áááŹá˝áá˝á áĽáľááľá ááááá á¨á°áá°á áá, ááá˘áá˝ áĽá DevOps áááá˛áśá˝ á áááá á áááŹá˝áá˝ áĽáľááľ ááľáĽ áĽá áá á¨ááŤááĽáá¸áá á˝ááŽá˝ áĽá áááśá˝ áĽáá˛áŤáá á ááľá¨á áá¨áłá.
á°ááą á¨á°áá á¨á á ááŽáŠ ááľá¨á ááá˘áá˝ ááá˘
á¨á áľáŤ áááľ ááá°á áá°áá áŞáŤ áá´ á ááááá á¨ááŽááŤá á ááŁáĽ ááá á á°áá áĽá á¨áśáľá°á ááá áľáá á áááááśá˝á (áá¨á ááśá˝á ᣠá¨áááĽááľ áá¨ááá˝á ᣠáá¸ááŤáá˝á ᣠááá°.) á áá áá áá áá°áá á áá˝ááá˘
áá áá´ á¨á°áá°á¨á°áŁá¸á áľááŤáłá¸á ááááŤáśá˝ á á ááŠ
- áŽáľ á¤á - á ááľ ááá á¨áá¨áłá°á áŽáľ á¤á - áĽá áá°ááŤáľ
- áĽáááá˝ - áĽááá˝á á ááá áŤáłáá áĽá áŤáááá˘
- áá á - á áá°áľ áá áá á¨áľá áŤáľáááĄ
- á¨áśáľá°á ááá á áááááśá˝ (á¨áá áŁá á፠á áááááśá˝) - á¨áľáá á áááááśá˝á áĽáá° á°á°áŞ ááĽááśá˝ ááŤá
- áááᥠᣠáááá ᣠáŤááą - á¨áááŁáł á°á¨ááá˝á á áĽáĽá áááŤáŠ áĽá áŤááą
- áá°áśá˝ - á áááŹá˝áá áĽáá° á ááľ ááá áĽá ááá á áᣠáá°áśá˝ áŤááą
- áá°áĽ áá°á - á áááááśá˝á á áá°áĽ áá°áŞáŤ á áŠá áá° áá ááá
- áľááŠááľ - áá°áá áŞáŤáá á áá°áśá˝ áŤáľááááľá˘
- áá°áá¨á - á ááŁá á áá áĽá á ááŤáá ááááľ á áľá°áááááľá áŤáłáľá
- á¨áá°áá áŞáŤ áááľ/áŚááŹá˝á áĽáááł - á¨áĽáľááľáŁ á¨ááá áľ áĽá á¨áááľ á áŤáŁá˘áá˝á á á°áťá áá á á°ááłáłá áŤáľáááľ
- áááŁáľ - ááááĄá áĽáá° á¨ááľá°áśá˝ á á¨áľ ááŤááľá˘
- á¨á áľá°áłá°á á°ááŁáŤáľ - á á ááľ áá áá°áśá˝ á¨á áľá°áłá°á / á¨á áľá°áłá°á áľáŤáá˝á áŤá¨ááá
á 12 áą ááááŤáśá˝ áá á¨á áá áá¨á áááááľ á¨áá¨á°ááľá áááŽá˝ áááá¨áąá˘
-
áŚáá´áá ááá - ááá ἠá áá áľ -
áľá habr á˝áá. á áľáŤ áááľ-ááá°á áá°áá áŞáŤ - á áľáŤ áááľ-ááá°á áá°áá áŞáŤ - áŚáá´áá áľááá -
áľá habr á˝áá. á 7 Factor áá°áá áŞáŤ ááľáĽ 12 á¨áá°á áááŽá˝ - áĽááąá áááťáťá 12 áąá áááŽá˝ á á˛áľ áĽááłá˘
á°ááŤá-á á¨ááá´ áá°ááŤáľ áááľáá?
á°ááŤá-á á¨ááá´ áá°ááŤáľ áááá¨áťá á¨ááľá¨áľ ááááľ ááᢠáááľ á¨áá¨á¨áťá á°áá á á áĽáą á áŠá ááá áááŚá˝á áĽááłáŤá á ááŤáľá˝á ááááľ. á áá á áááá áááá¨áťá á¨áᎠáá áá°ááŤáľ ááᢠá¨áá áá.
á¨ááłááá BG Deploy áĽá áľ á¨áłá˝ áŤááá ááľá áááľááá˘
- á áááťá áá á áľááá á ááľ á áááľ áŽáľáŁ á áááŹá˝áᣠááŽáááľ áŤáá¸á 2 á áŤáá á ááááŽá˝ á á áĽá áŤáá°á (ááá á°áŞ) á áá˘
- áŤáá°áŠ ááááŞáŤ áá áááá áĽáŤááá˝ áá° á ááą á áááá áááŤá (á á¨ááá´).
- áĽáá°áá áááá á ááŤáľáááá áľ ááᣠááŽáááą á áá á áá á áááá áá á°áááá (á°ááŤá) á á áá áá áááááá áĽáŤááá˝á á¨ááŤáľá°áááľá˘
- á áŽáľ á áá á°ááŤá á áááአáá á áá á°áááá ᣠáŤáá°á ᨠáááá¨á áľáĽáá á°á°áĽáśáłáᢠá á¨ááá´á˘ áá á°ááŤá á áááá.
- á áá ááá á°áá áá˝ á¨áŽáąá áá¤áľ ᨠáá áŤáŤáᢠá°ááŤá á áááá.
- áá°áá°á ááᣠá á¨ááá´ á áááአáŤáá°áłáŤááľ áĽáŤ á˘áá á áĽáá° ááľáŹ áŤááááá á°ááŤá á áááá áĽá áĽáá˝áśá˝ áĽá áľá á°áśá˝ áŤá áŤáá°á á¨á°á áááá áá°áľ áá° áá áááá áá á á¨ááá´ á áááá á¨á áŽáá á¨á°á¨áá áľáŞáľ áá ᣠáĽá á á˛áą áŽáľ ááááł áĽá ááá¨áŤ áááŤáá˘
- áĽá á áá°áą áá¨á¨áť áá, á á°ááłáłá ááááľ á°áááá á á¨ááá´ á áááá. áĽá áŤáááá á áá áŤáá°á á¨áĽáŤááá áá°áľ áá° áá áááá áá á á¨ááá´ á áááá.
ááá ááá á áŁá áĽáŠ áááľáá áĽá á á áá°áá áĽááł áá ááá á˝ááŽá˝ áááŠá áľ á áááŁá.
áá á¨áááá¨á á ááááá ááá ááľáĽ áľááá ᣠá áĽááłáá áĽá
áľ ááľáĽ áĽáá°á°ááá¸á á á áŤáá ááááἠáŤáá á ááŤá ááĽá á ááľááááᢠáá¨ááá áá áá ááááᥠᣠá áá áĽááááłááá˘
ááĽá áĽá áĽáŠ ááá
ááľá°áŁá áŤá¨áá á áłá˝ áŤááľ ááłááá˝ áĽá á¨áá áááŁá¸áá áááááŤáá˝ / áá´áá˝ áŤáłáŤá ᣠá°ááłáłá á°ááŁá áŤáá¸áá áááááá á ááŤáŽá˝ áá á áá áá áá áá˝ááá˘
á áĽááááš ááłááá˝ á¨áľá áááľ (áá á¨ááŤáľá°áá ááá) ᨠPHP áĽá Docker áá áááááá˘
á¨áłá˝ áŁááľ á ááážá˝ ááľáĽ á á°áá°á ááłááá˝ áá á¨ááááŤáśá˝á á á ááá á á°ááá¨á° ááá á°ááŁáŤá ááá፠á á, á áá áááľ áá á°á¨á᪠ááľá ááłáĽ áááááľ á¨ááá, á¨áá áŤááľá á áááá˝ áá° ááá ááá áááá¨áą.
1. Codebase
áááá˝á áá° á ááááŽá˝ á ááľ á á ááľ áááľáá á¤áá˛á áĽá ááááá á°á ááᣠá¨ááá¨áť á áááá á áľá°áá á¨áľá áŚáł áŽáľ á áłáľáááĽá˘
á ááľ ááŽáááľ áá áá á ááľ áá á áŽáľ áá á¨áľ ááá¨á áááŁá ᣠáááľá ᣠááá áŽáľ á¨á ááľ á¨áᣠááᢠGit áá¨ááť. á°áá¨áŽá˝ (áááľáŁ ááá áľáŁ test1ᣠtest2 ...) á¨á ááľ á¨á፠áá¨ááť á áááŤá á áááŤá áŽáľ áá áááᢠáľááá , á¨áŽáľ ááĽááľ áĽááłáŤáá.
2. áĽáááá˝
áááá á¤á°-ááťáááľ á á áááá˝ ááľáĽ á ááĽáł áá° ááŽáááą áĽáŠ áŤáááąá˘ á á˛áąá áŽáľ á áá áŤáá á¨á¤á°-áá˝áááľ áľáŞáľ áá áá° á ááá á ááľá°ááá á ááá ááťáťáŤáá˝á áŤáľááᢠááá˝ 20 á áááááśá˝ á áá°áŠá áľ á á áľá°ááá á áááá áá áááá á áľááá áááááŤáá˝á á ááĽáł áŤáľáááĄá˘
ááŽáááą áá áá á ááá
áá¨áł á¨áá˝á á¨áĽááá˝ áááá ááá¨á áááŁá (á áĽááὠᣠáĽá á°áá á áŤáŁá˘á ááá´ áá)ᢠááá áĽááá˝ á ááá
áááá˝ áĽá áááá á ááŁá¸áá˘
áĽáá° ááłá áĽááá°áľ á¨ááá á°áŤá˛ и Docker.
á¨ááá á°áŤá˛ - á PHP ááľáĽ á¤á°-áá˝áááľ áĽáá˛áá á¨ááŤáľá˝áá á¨áĽá á á áľá°áłáłáŞá˘ á áááŁáŞ áľáŞáśá˝á á áĽáĽá ááá á áľááá á ááááá˝ áĽá á ááá˝ áĽáá˛áááš á˝ááł áá°áĽááłáᢠá á áááአáá 20 á¨á°ááŤáŠ ááŽáááśá˝ ááአáá˝ááᣠáĽá áĽáŤááłááłá¸á á¨ááá ááť á¨áá ááŹáá˝ áĽá á¤á°-ááťáááľ á¨áá áááá áááŤá¸ááá˘
Docker - áááá¨áťá á¨áá°áŤá áľá á áŤáŁá˘ áĽáá˛áááš áĽá áĽáá˛ááá á¨ááŤáľá˝áá áááááŤá˘ á áá áá á¨áľ, áá áĽáá° á áááŁáŞ, áá á¨á áá á áĽáááľ, á áááŹá˝á áá áĽáá°áá°áŤ ááá°á áĽáá˝ááá. á¨á°áá°á ᨠPHP áľáŞáľ ááá¨áĄáŁ ááá á°á¨á᪠ááá áłáá¨áአáááŽáááą áľáŤ á áľááá á¨áááľá ááŹáá˝ áĽáť ááŤáᢠáĽá á¨ááá á áá, á áĽá áá˝ áĽá á á áľá°ááá áá˝á áĽá á ááá˝ ááŽáááśá˝ á áŤáŁá˘ áá áŁáá áłáááĄ. áááľáᣠá áśáá°á á áŠá á¨áá°áŠ ááá ááŽáááśá˝ áááááá áĽá á áĽá áá ááá á¨á°ááŤáŠ á áŤáŁá˘áá˝á áá áá áá˝ááá˘
3. áááá
á áŽáą ááľáĽ áá áŽá˝á áĽáá° áááá˝ áŤá¨áášá˘ ááá¨áŤ á áááአá¨á°áᨠáááὠᣠááááľ á¨á°ááŠá˘ á¨áá°áá áŞáŤáá áľáŤ á á áŤáŁá˘á áá á áááľá¨áľ á ááŽáááą á¨á˘áááľ ááá ááľáĽ á ááĽáł á¨á°áááŁ.
áá á¨áśá˝ - áá á ááŽáááą áááááľ (áľááááľ) ááľáĽ áááŤá á¨áááŁá áĽá¸áá ááá áá. á ááłáĽ á°á¨áᣠáá á¨áśá˝ á á áŤáŁá˘ á°ááááŽá˝ (env vars) á áŠá ááá á ááŁá¸áá˘
áááľá ᣠááá áĽááłá áĽá á¨áá á¨áľ áááá˝á .config.prod .config.local á˘áŤá¨ááš áĽá á á°á°ááŠá áľ áá áá° .config (áá°áá áŞáŤá ááἠá¨ááŤááĽá áľ ááá áá á¨áľ) áĽáá°áá á˘á°á¨á - áá áľáááá á ááŤá¨áĽ á áááá ᣠááááŤáąá á áá á ááŁá á¨á ááĽáŽá˝ ááľáĽ áŤáá áá¨á áááá á¨áá°áá áŞáŤ ááá˘áá˝ á áá á¨ááá á˛áá á¨áááľ á áááአá¨á°ááá áá¨á ááŁáłáᢠááá áá áŽá˝ á ááĽáł á áá°ááŤáľ áľáááľ (á˛á á / á˛á˛) ááľáĽ áááἠá ááŁá¸á áĽá á á°á°ááŠá áľ áá áá ááľ á¨á°áá°á á áŤáŁá˘ á áľááá ááá á¨á°ááŤáŠ áĽá´áśá˝ áá°ááŤáŠ á áŤáŁá˘áá˝ ááá á á ááŁá¸áá˘
4. á¨áśáľá°á ááá á áááááśá˝ (á¨áá áŁá á፠á áááááśá˝)
á áŤáŁá˘á á áĽáĽáá áŤáľáŠáŁ áá°ááłáłá á áááááśá˝ á á°áá°á á áŤáŁá˘áá˝ á¨á°ááŤáŠ áááááśá˝á áá ááá˘
á áĽáááą áá ááĽá áľá áá áŽá˝ á¨ááĽá áá á áĽáĽá á¨á°á ááá áá ᣠááááŤáąá áá ááĽá á¨áá áá°á á á¨áá á ááἠáá°áŤ áľáááá˝á áĽá á á á ááá á¨áááá áĽáľá áá ááá˘
áĽáá° áá¨á á ááááŽá˝áŁ á¨ááἠááłáá˝áŁ áá¸á፠á áááááśá˝ áŤá ááŤá á áááááśá˝ áá áŤá ááá áááááśá˝ áá áŤáŁá˘á á áŤáŁá˘ áĽá ááśáľá°á ááá/á ááŤá˝ á áŤáŁá˘ á ááľ á áááľ ááá á ááŁá¸áᢠá áá á áááá á ááááá áá á¨áááá¨áťáá áŽáľ áłáááἠáĽáŞáá˝á áá° á¤á #1 á áá á¨áľ #2 ááá°áŤáľ á¨áááááľ áááąá áááἠáĽá˝áááᢠáááᣠáá° ááľ á áááá¨áľáŁ áááłáᣠá áááááąá á áááŤá áľ ááᣠáá°á¨á᪠áá¸á፠á áááá áááááąá á á°áá°á ááááľ áááá¨áľ á áŤáľááááá˘
5. ááááĄ, áááá, ááŽáĄ
á¨áá¨á¨áťáá á¨áŽáą áľáŞáľ áĽáť á á áááአáá áŤáľáááĄáŁ ááá áĽáľá áłááá áááąá áááś áááá¨áŁááᢠá¨á˛áľá áŚáł ááááľ á áŤáľáááá. áŽáąá á áľá á°áľ áá° ááŽáłáá˝á á á°áááá áĽá á¨ááŤáľáĽ á°á ááĽá ááŽááŤáá áá!
ááá á¨áá°ááŤáľ á°á¨ááá˝ áĽááľ á ááľ áááŁá á á ááŁá¸á.
áá°áá á¨ááááľ áĽáľá áááááľá˘ áľá á°áśá˝ áŤá á¨áľáŽáá áľáŞáľ áá°áá á¨á áľ áááááľ (ááľáááá á°á°áĽáľáŚ ááŚáááľ ááá) á¨áá°áá áŞáŤáá á¨áአá ááá˝ á ááĽááľ áŤááᢠáááľáᣠá áááłá áááł á áá á áᢠááááá áĽá á áá á¨á áá, áĽá á á°áłáŤ áááł á¨á°á°áአáĽá á¨á°á°á á°áĄ á áá, áá á°áŠ á¨á áá á ááľáĄ á¨áááá á á˛áą áááľ áá áŤáá ááłááŤá á ááá áá á¨á°áŤáŤá ááᢠááááá á¨áááááŤá ááĽá áááłá áľá áá.
á áŽáľ ááŤá¨á áááŤá¨áá áĽáť áłááá áááá ááĽáśá˝ áĽá á á¨áŁá˘áá˝ áĽááłá áłááá áááá ááá áá° áá á¨ááááľ á˝ááł áĽáá˛ááአá¨ááŤáľá˝áááľá á¨áĽá-á á¨ááá´ áá°ááŤáľá á¨áááľáłááľá áľ áŚáł ááá˘
6. áá°áśá˝
á¨áá°áá áŞáŤ áááł ááἠá ááĽáł á áá°áá áŞáŤá ááľáĽ áŤá¨áášá˘ á áá°áá áŞáŤá áŤá ááľáĽ ááá áááá˝á á°á ááᢠá áśáľá°á ááá á áááááśá˝ ááŤá¨á á á°áťá áá á á¨á°ááŤáá áá ááᢠá áááŹá˝á á ááľ áá°áľ áĽáť ááá¨á áľááá˝á ááŹáąá á áááááą áĽáááł áá áĽá°áŠáľá˘
ááá-áááá˝á á á°ááá¨á° áá¨áá á áśáľá°á ááá á áááááśá˝ á áááŁá á¨á áá¸á፠ááľáĽ áĽáť (memcached, redis) áŤá¨ááš áľááá 20 á áááŹá˝á áá°áśá˝ á˘á°áŠá áááá¸áá áá¸ááŤáá á¨áá°ááąáľ á á°ááłáłá áááł á¨á°áá áá áá ááľáŤáłá¸áá áááĽá áá˝áá. á°á ááá á áá áá°áľ ááľáĽ á¨áá°áá áŞáŤá áá á˛á°áŤ á¨áá á¨áᢠá áá á ááŤá¨áĽ ᣠááá áŤá á á¨áśáľá°á ááá á áááááśá˝ á ááá˝ á˘á áá ᣠááá ááá á áľááá áĽá á áá¨á á°á°áŤá˝ááľ áá á˝áá áłááá áĽáá°áá°áŤ á°ááá á˘
7. áá°áĽ áá°á
á¨áśáľá°á ááá á áááááśá˝ áá áĽáá´áľ áĽáá°áá°áŤ ááá
áŤáá áľ á¨áľá á áááá áĽáť ááᢠáĽá á á á ááá á¨áśáľá°á ááá á áááááśá˝á á áľá á áááá ááľáĽ ááłá°á á¨á°áťá ááᢠáááłá, á Apache ááľáĽ áĽáá° áá¤á˝á ááá.
áá° á ááłááľ á áľáŤáť áĽá áá°áĽ (localgost: 5432, localhost: 3000, nginx: 80, php-fpm: 9000) á áá°áá ááá á áááááśá˝á áĽááľ á ááłá¸á á°á°áŤá˝ ááá á ááŁá¸á, áááľá ᨠnginx áááąáá php-fpm áĽá ááááľ áĽá˝ááá. postgres, áĽá ᨠphp-fpm áá° postgres áĽá nginx, áĽá á¨áĽáŤááłááą á áááááľ áĽáŤáą, áá á áááááľ ááááľ áĽá˝ááá. áľááá
á¨á ááľ á áááááľ á¤á á¨áá á áááááľ á¤á áá á¨á°ááŤá á áá°ááá˘
8. áľááŠááľ
á¨á ááľ áá°áľ áá ááľáŠ, áĽá á áľáááľ áĽá áá°áśá˝ áĽááľ á ááľ áááŁáŁáľ á áá˝áá!
ááááá á ááŤáŠá áá°ááľá˘ á¨áśá¨á ááá ááá
á áŁá áĽáŠ áá.
áśá¨á áľááá á á°ááŤáŠ áá˝áá˝ áĽá á á ááľ áá˝á áá áŤá á¨áĽá ááŤá˘áŤ ááŤáŁáá˝á ááááá˝á áááá á áĽá áááľá°áłá°á ááłáŞáŤ ááá˘
áááá á áá áá ááĽáŤááłááą áá°áľ áá áŤá á ááĽáśá˝á áĽáá°áááľáĽ áĽá á°ááłáłá á áááááľ áá áŤá á áá°áśá˝á áĽáá°áá°áŤ ááá°á áĽá˝ááá ᣠáĽá á¨ááľáĽ ááá ᣠá á°á°á á áá°áĽ áá áá¨áá á¨ááá á ᣠááá°áśá˝ áá˛áŤáá áá°áááᢠáľááá , á á áááአáá áŤáá áááľ áĽáá°á¨áá¨, á°á¨á᪠áá°áśá˝á áá¨áá áĽá˝ááá, á áá á á á°áá°á áá°áśá˝ áá áŤááá áááľ ááááłá.
9. á áááťá
á¨áá°áśá˝ áĽá ááἠáá áááľáŤáľ áá¨ááá˝á á áá ááᢠá ááľ áá°áľá ááá°á á¨á á ááá áá°áá áŞáŤ á á áŤá áá á°á˝áĽá ááá¨á áááŁá. á ááľ á áááááľ á˘áááľ, ááá ááá ááááłá.
áĽáŤááłááą áá°áľ áĽá á áááááľ á ááááá áá áá á áá˝áá áĽá áá á ááá˝ á áááááśá˝ áá á°á˝áá ááłá°á á¨áá áľá (á áĽááἠáá á áááááą ááá á áááááľ á¨ááá°á¨áľá áľ áĽáááł á áá°áá ᣠáá á¨áá á áá áá á áááááľ á áá áá) . ááá áá°áśá˝ á ááľáł ááá¨áĽ á ááŁá¸á, áľááá á˛áá¨áĄ, ááἠá áááŤá áĽá á áááĽáá áá á˛á ፠áľáááą á áľááá áá°áŤá. áááľá ᣠá ááľ ááľáá¨áľ á áá¨á°áľá áľ áá áĽááłá áá¨áá áá á°á˝áá ááłá°á á¨áá áľá (á¨ááĽááľ áá´á áĽáá á°áľáá áá ᣠá¨ááἠááłá áĽáŤááá˝ á áĄáľá ááľáĽ áĽáť áá°áŤá ââââáĽá á˘áŤááľ á ááľ á¨áĄáľá áĽáŤá áŤáá°áłáŤ ááá á áľá á°áľ á¨á°áá¸á) , á¨á፠á¨áĄáľá áá áĽáŤá á áá¨á¨áť á á°ááŁá áá á áááá).
10. á¨áá°áá áŞáŤ áááľ / áŚááŹá˝á ááŞá˛
á¨áá°áá áŞáŤá áááľáŁ ááá áľ áĽá á áŤáŁá˘áŤá áľáŞáľ á¨á°áᨠááá á áá áľá˘ á áááľ ááľáĽáŁ á áááľ ááľáĽ á ááĽááľ áĽáá˛á ፠ᨠYii Lite áááá áĽá á á áá ááľáĽ ᪠á áá!
áĽáá° áĽáááą á¨áá, ááá áá°ááŤáśá˝ áĽá á¨áŽáľ áá á¨áá°áŠ áľáŤáá˝ á¨áá áá°á á°ááłáłá á áŤáŁá˘ ááá á ááŁá¸á (áĽá áľá á áŤáá áááľáá áĽá¨á°ááááá á áá°áá). áĽáá˛áá ááááá á¨áááľ á°áŤá°á á áľááá á¨áá áŽáľá áá° áááľ áá°ááŤáľ ááťá á áá áľ, áĽá á ááłááľ áአá¨á°áá á á˛áááľ á˛áááľáááľ á áá°áá, áá á á áአáĽááŤáŹ ááááŤáľ áááá¨áťáá á áááľ ááľáĽ áĽáť á¨á ááŤá°áá áá˝áá.
áśá¨áá á áá áá¨áłááᢠá áá°ááľ ááĽáŚá˝ ááᣠáśá¨áá á áá áá á áŤáŁá˘á á áááľ ááá áá á á áŤáŁá˘á áá˝á áá á¨áá°ááŤáľ áá°áľ á ááľ ááá áááľ áľáááá˝á áŤáľáááá˘
11. á¨áááἠááľáłááťáá˝ (áááἠááľáłááťáá˝)
áááἠááľáłááťáá˝á áá° áááá˝ áĽá á¨ááἠááł áĽáá˝ááá! áĽá áááá˝á áĽá á¨ááἠááłáá˝á á¨áááἠááľáłááťáá˝ á áá¸áłáᢠá9000 á¨ááł áŁááľ áĽá á°ááŚá˝ áááľ áľáŤááá áĽáť áĽáááá˘
ááá áááἠááľáłááťáá˝ áĽáá° á¨ááľá°áśá˝ áĽá¨áľ ááá አáááŁá. á áááŹá˝á áŤáą á¨áááἠááľáłááťáá˝á áááá á á¨áá áľáᢠá áááŹá˝á á áááἠááľáłááťáá˝ áá ááá á áááľ á˝áá áĽááłáááĽá ááááŚáš á stdout áá°á áľ á ááŁá¸á ááá áĽáá° udp áŁá ááŽáśáŽáá˝ ááá á ááŁá¸áᢠááŹááá ááá áĽáŠ áá°áŤáᢠááŹááá áááá áááἠááľáłááťáá˝ á udp ááá á (áá áá ááŽáśáŽá á áá áá áľá ááŹáą áľáŹáłá ááá ፠ááá˝ áá á á á áŤáľáááá) á ááá ááአá áá°áá áŞáŤá ááľáĽ áŁáá á áááŁá áĽá áááἠááľáłááťáá˝á á áááá áĽá á áááá á áá áĽáť á¨á°áłá°á ááᢠá¨áĽááá á ááŤá¨áŚá˝ áá áááľáŤáľ á¨áá°áá áŞáŤá á áááᎠá ááááĽá.
12. á¨á áľá°áłá°á á°ááŁáŤáľ
áá¨áá ᣠáłáłá¤á ᣠááá° ááááá ᣠá á¤áá á ááľáĽ á á°áᨠá¨á°áá ᨠá¨áá¨á¨áť ááĽáĽ áá áá ᣠá áááá á á°á¨áłáłá 2 áá áá° ááá ááá ááŁá áá°áá˝á áĽáááł áááŤáᢠáá ááá˝ á áá°áá˝áá, 2 áá á ááŤáá, áĽá áľá°áľ á áŤáľááááá.
ááá á¨á áľá°áłá°á á°ááŁáŤáľ áá áĽáá° ááá áŽáľ á á°ááłáłá á áŤáŁá˘ áá¨ááá á ááŁá¸áᣠá á°áááá á°á¨áᢠáááľá á¨ááἠááłáá ááá á áááἠáŤáľáááá á¨á ááśá˝á áľá á ááá¨á áĽá á á˛áľ á áá¨á á á ááłááľ á¨áĽááł á¨ááἠááł á áľá°áłá°á ááłáŞáŤáá˝ á ááŤáááľ á áĽá á áá°áááá. ááĽáá°áá ááááśáš áááŽá˝ áŁá¨á°ááŤáŠ áľááŞááśá˝á áĽáááĽáŤáá - ááá°áľ á ááá áŚáł áĽá á ááá á áŤáŁá˘áá˝ á á°ááłáłá á¨á°ááá° áĽá ááá¨áłáľ á¨ááťá áá¤áľá˘ áĽáá° ááŽáááľ á áá¨á ááááľ áá ááá˝ áĽáŤáá˝ áá á°ááłáłá áá´áá˝ áá°áá á á ááŁá¸áá˘
á¨áľáá ፠ááłá á PHPᣠLaravelᣠLaradockᣠDocker-Compose
PS ááá ááłááá˝ á MacOS áá á°á°ááááᢠá áĽááááš áááááľá áá°áŤáᢠáá ááłáŁ á¨áááśááľ á°á áááá˝áŁ áá á¨áááśá áá áá¨á á áá á áá°áŤááá˘
á áĽá áᲠáá ááá á ááᾠᨠPHP áľáŞáľ á¨ááá áĽá ááá ááá á¨áááá áľá áááł á áľáĄáľá˘
á¨á
áἠáááá á¨áśáá°á áĽá á¨áśáá°á á ááá
áľáŞáśá˝á ááŤáᢠ(áá
á ááľáá áá ááá áá˝áá)
docker -v &&
docker-compose -v
1. á áľáááĽá
git clone https://github.com/Laradock/laradock.git &&
ls
ááŤáśáá á á°ááá¨á°, áá
á áŁá áááá ááá áá áĽááá, á ááľáĄ áĽá ááŤáŁáá˝ áĽá á¨áłáľ áááŽá˝ áá°á á°áŁá. ááá áá ááŤáśá á áááľ ááľáĽ áŤá ááťáťáŤáá˝á ááá áá - á áľááá ááááŤáľ á áááá¨ááᢠá ááŤáśá ááľáĽ áŁá ááłááá˝ áá á ááááŽá á¨áĽá ááŤáŁáá˝áá ááá á á¨á°áťá áá, áľááá
áĽá áááťá¸áľ áááŤá, ááááŤáąá ááá áĽá፠áŤááá ááá áá á á ááľ áá á áŤáľááááá.
2. ááŤáśáá ááá°áá áŞáŤá˝á áĽáá˛á°áŤ ááááá˘
cd laradock &&
cp env-example .env
2.1. á ááááá á ááłá˘ ááľáĽ á¨habr áááŤá (ááŤáśá á¨á°á¨ááá áľá á¨ááá
á áá) ááááąá˘ (á áĽá PHPStorm ááłá)
á áá á°á¨á, á¨ááŽáááąá áľá áĽáť áĽááľáááŁáá.
2.2. á¨áľáŤ áŚáłá ááľá áĽááľáááŤáá. (á áĽááľá áááł, ááľááš áá°áá°á áá ááááŁá)
á¨áľáŤ áŚáł ááá˘áá á ááá¨á á¨áááá áá á áĽáŽ áááľáŤáľ áአá¨á°ááá ááľá ááá˘
áá° ááŤáŁá ááľáĽ áááĄ
docker-compose up -d workspace &&
docker-compose exec workspace bash
2.3. ááŤáŹá á ááŤá áá
composer create-project --prefer-dist laravel/laravel application
2.4. á¨á°áŤá á áá á¨ááŽáááą áá áŤáá áá፠ááá áŠá áĽáá¨áááŁáá áĽá ááľáá á ááá
á˘
ls
exit
docker-compose down
2.5. áá° PHPStorm á°ááá°á á .env ááá ááľáĽ áá° ááŤáŹá áá°áá áŞáŤá˝á áľáááááá ááááľ áĽááááááá˘
3. áááá áŽáľ áá° Git áŤááá˘
áá áá áááľá¨á á Github (áááá áá áŚáł) ââáá áá¨ááť áĽáááĽáŤááᢠáá° á°áááá áá° ááĽá áá፠áĽáááľá á¨áá¨á°ááá áŽáľ áĽááá˝áá˘
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
ááá ááá á áĽáááľ áááá áĽáá¨áááŁááá˘
ááááťá¸áľ áááľ á ááľ ááááľ á¨áĽááł á áááá˝ áĽáá˛á áá áĽáááŤáá ᣠá áĽá áááł áá
ááá˘
4. á áľááá!
á¨ááááá á ááľ á áááľ 80 áĽá 443 áá ááá á¨á°áá áá á ááá áĽáá°ááááľ áŤá¨áááĄá˘
docker-compose up -d nginx php-fpm
áľááá
á¨áĽá ááŽáááľ 3 á¨á°ááŤáŠ á áááááśá˝á áŤáá áá-
- nginx - á¨áľá á áááá
- php-fpm - á¨áľá á áááá áĽáŤááá˝á áááá á php
- á¨áľáŤ áŚáł - php áááá˘
á á áá áá ᨠ4 12 ááĽáŚá˝ áá á¨ááááľ á áááŹá˝á ááĽá¨áá áááľááĄ-
1. áŽáľ á¤á - ááá áŽáľ á á ááľ áá¨ááť ááľáĽ áá (áľáá˝ ááľáłááť: áá° ááŤáŹá ááŽáááľ ááľáĽ áśá¨á áááŁáľ áľááá ááá áá˝áá, ááá áá áá á áľááá á áá°áá).
2. áĽáááá˝ - ááá á¨áĽá áĽáááá˝ á áá°áá áŞáŤ/á áááŁáŞ.json áĽá á áĽáŤááłááą á¨áŽáá´ááá áśá¨áááá ááľáĽ á ááá á°á˝áááá˘
3. á¨áśáľá°á ááá á áááááśá˝ (á¨áá áŁá á፠á áááááśá˝) - áĽáŤááłááą á áááááľ (php-fom, nignx, workspace) á¨áŤáąá á áááľ áááŤá áĽá á¨áá á¨á°ááá áĽá á¨á ááą á áááááľ áá á˛á°áŤ áááá á áááłáá.
4. áá°áśá˝ áĽáŤááłááą á áááááľ á ááľ áá°áľ áá. áĽáŤááłááą á áááááľ ááľáŁá áááłá á áŤá¨áá˝á.
5. áá°áĽ áá°á
docker ps
áĽáá°ááá¨á, áĽáŤááłááą á áááááľ á áŤáą áá°áĽ áĽá¨á°áŤ áĽá áááá˝ á áááááśá˝ áá áááá.
6. áľááŠááľ
Docker á ááŤá¨áá¸á á ááśáá˛á áááľ áááŁá á áŤáá¸á á°ááłáłá á áááááśá˝á á ááŤáł áá°áśá˝á áĽááľáááĽá áŤáľá˝áááá˘
áŽáá´áááŽá˝á áŤáá áĽá á áŁáá˛áŤ áááአ--áá á
docker-compose down &&
docker-compose up -d --scale php-fpm=3 nginx php-fpm
áĽáá°ááá¨á, ᨠphp-fpm ááŤáŁ á
ááá˝ á ááľ. á¨áá
ááŤáŁ áá áááľáŤáľ ááá ááá áááἠá áŤáľááááá. áĽá á°áá áá°áĽ 9000 áá ááááľ áĽáááĽááá, áĽá Docker ááĽá á ááŤáŁáá˝ ááŤá¨á áŤááá áááľ áááŁá áŤá.
7. áá°áá¨á - áĽáŤááłááą ááŤáŁ áááá áłáááł ááá°á áá˝áá. ááŤáŁáá ááá ááá áĽáá°áá ááľááá á ááŁáŽáš ááľáááŞáŤáá˝ áá á¨áá°áá áŞáŤáá á á áŤá á áááłáá. áĽáŤááłááą ááŤáŁ á ááááá áá áááł áá˝áá.
8. á¨áá°áá áŞáŤ áááľ/áŚááŹá˝á áĽáááł ááá á áŤáŁá˘áŤá˝á á ááľ ááᢠáľáááąá á áááľ ááľáĽ á á áááአáá á áááľ á áľáĽááá˝á ááľáĽ ááá ááá áááἠá¨ááĽááľáᢠááá ááá á á°ááłáłá ááááľ á Docker áá á¨á°áá°á¨á° áááá.
9. áááŁáľ - á áĽááá áŽáá´áááŽá˝ ááľáĽ áŤááľ ááá áááἠááľáłááťáá˝ áá° áĽá¨áą áááą áĽá á Docker áŽááśá ááľáĽ ááłáŤáᢠ(á áá ááłá áá, á áĽáááą, á¨ááá˝ á¨á¤áľ áĽááá˝ áá, áŤáá°áá¨áŁá¨áĄáľ áááá áá˝áá)
docker-compose logs -f
ááá áá á PHP áĽá Nginx ááľáĽ áŤááľ ááŁáŞ áĽá´áśá˝ áĽáá˛á áááἠááľáłááťáá˝á áá° ááá ááá ááťáá¸á ááᢠ12 ááááŤáśá˝á áááááľ, áŤáľáááááłá á áŚáá á áĽáŤááłááą áŽáá´ááá áá
áŽá˝ ááľáĽ áááἠááľáłááťáá˝á áá° ááá áááá˘
áśá¨á áááἠááľáłááťáá˝á áááááľ áĽáť áłááá á¨áá áá ááľáłá¸á áĽáá° ááŤáŤ áá áááŽá˝á á¨ááá á˝ááłá áá°áŁáᢠáĽá á ááŹááá ááľáĽ áĽáá°áááá á áááἠááľáłááťáá˝ áĽáá°áŤáá áĽá áá°áá áŞáŤá˝á á ááá ááአá áŤáľá°ááááá˘
10. á¨á áľá°áłá°á á°ááŁáŤáľ - ááá á¨á áľá°áłá°á áľáŤáá˝ á¨12 ááá°á á áááŹá˝á ááŁáŞáá˝ áĽáá°áááá áá áá˛áľáą ááłáŞáŤ ááľáá áááŁáá á ááŤáŹá á°áá°ááá˘
áĽáá° ááłá, á ááłááľ áľáááá˝ áĽáá´áľ áĽáá°ááá¸á á áłáŤáá.
áá° ááŤáŁá ááľáĽ áĽáááŁáá.
docker-compose exec workspace bash
php artisan list
á áá áááááá áľááá áá áá áĽáá˝ááá. (áĽáŁáá á¨ááἠááłáá áĽá áá¸ááŤáá á áááááá, áľááá
áááš áľáááá˝ á áľááá á ááá¸áá, ááááŤáąá á¨áá¸á፠áĽá á¨ááἠááł áá áááľáŤáľ á¨á°áá°á áá¸á).
11. áá
á¨áśá˝ áĽá 12. áááᥠᣠáááá ᣠáŤááą
áá áá ááá áá°ááŤá-á á¨ááá´ áá°ááŤáľ ááá°á ááá áá á, ááá áá ááá á˝áá á áŁá áááá áá á°áááˇá. áľááá ááłá á¨á°áᨠá˝áá áĽá˝ááá.
á á áአᣠá˝áá°-ááłáĄ á á˛á á / á˛á˛ áľáááśá˝ áá á¨á°áá á¨á° ááᢠááá¨áá и Gitlab CI. á áááąá ááľáĽ, á¨á ááľ á¨á°áá°á á áŤáŁá˘ áá á¨á°áŤáŤá á¨á áŤáŁá˘ á°ááááŽá˝á áááááľ áá˝áá. á áá áá á¨áľáŁ á áá áááłáŁ ááĽá á áá á¨áśá˝.
áĽá áľá ááĽáĄ áááᥠᣠáááá ᣠáŤááą á á°á áŠáľ á áááąá áááááŤáá˝ ááľáĽ á áĽáŽ á á°á°áŤá á°ááŁáŤáľ á°ááľáˇá á§áá§á.
á§áá§á á¨áá°áĽá°áĽ, á¨áááá፠áĽá á¨á áááá á°á¨ááá˝á á ááááľ á¨áá°ááŤáľ áá°áąá áá° áĽá á°á¨ááá˝ ááá¨ááá áŤáľá˝áááłá. áĽáá˛áá á ááááááá ááľáĽ, ááľáŹáá˝á ááá á áá˝áá, áĽá á áĽááἠáááááá ááá. áá ááłáŞáŤ áá°áĽ á¨áá˝ á á á á áá.
á¨áááá¨áťá áŽáľ á ááˇáá˘
áá
áá áá¨ááť á áááá áľ áá áááľ áááá ááľááááá á áááąá˘
PS: áĽááá
áá á ááŤá¨áŚá˝ á¨ááááá ááá˝ áááááŤáá˝ áĽá á¨ááŽááŤá ááááá˝ áá áá áá áá˝ááᢠááá ááá ááá ááá á áááŤáá.
ááá: hab.com