αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž“αž·αž„αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž–αžŽαŸŒαžαŸ€αžœαž”αŸƒαžαž„ αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαž”αŸ‹αž–αžΈαžšαž€αžαŸ’αžαžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž§αž‘αžΆαž αžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„ php αž“αž·αž„ docker

αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž“αž·αž„αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž–αžŽαŸŒαžαŸ€αžœαž”αŸƒαžαž„ αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαž”αŸ‹αž–αžΈαžšαž€αžαŸ’αžαžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž§αž‘αžΆαž αžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„ php αž“αž·αž„ docker

αž‘αžΈαž˜αž½αž™αž‘αŸ’αžšαžΉαžŸαŸ’αžαžΈαžαž·αž…αžαž½αž…αŸ” αžαžΎβ€‹αž˜αžΆαž“β€‹αžšαžΏαž„β€‹αž’αŸ’αžœαžΈβ€‹αž€αžΎαžαž‘αžΎαž„ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαž”αŸ‹αž–αžΈαžšαž€αžαŸ’αžαžΆ?

αž“αŸ…αž€αŸ’αž“αž»αž„αž–αžΆαž€αŸ’αž™αžŸαžΆαž˜αž‰αŸ’αž‰ αž―αž€αžŸαžΆαžšαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž…αž“αžΆαž‘αžΎαž„αžŠαžΎαž˜αŸ’αž”αžΈαžŸαž˜αŸ’αžšαž½αž›αžŠαž›αŸ‹αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ SaaS αž‡αž½αž™αžŠαŸ„αž™αž€αžΆαžšαž‡αžΌαž“αžŠαŸ†αžŽαžΉαž„αžŠαž›αŸ‹αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ αž“αž·αž„αžœαž·αžŸαŸ’αžœαž€αžš DevOps αž’αŸ†αž–αžΈαž”αž‰αŸ’αž αžΆ αž“αž·αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžŠαŸ‚αž›αž‡αž½αž”αž”αŸ’αžšαž‘αŸ‡αž‰αžΉαž€αž‰αžΆαž”αŸ‹αž”αŸ†αž•αž»αžαž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‘αŸ†αž“αžΎαž”αŸ”

αž―αž€αžŸαžΆαžšαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŠαŸ„αž™αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž“αŸƒαžœαŸαž‘αž·αž€αžΆ Heroku αŸ”

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Twelve-Factor App αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž…αŸ†αž–αŸ„αŸ‡αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αžŸαžšαžŸαŸαžšαž‡αžΆαž—αžΆαžŸαžΆαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŽαžΆαž˜αž½αž™ αž“αž·αž„αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αžΆαžšαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαž“αŸƒαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž‚αžΆαŸ†αž‘αŸ’αžš (αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™ αž‡αž½αžšαžŸαžΆαžš αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αŸ”αž›αŸ”)αŸ”

αžŠαŸ„αž™αžŸαž„αŸ’αžαŸαž”αž’αŸ†αž–αžΈαž€αžαŸ’αžαžΆαžŠαŸ‚αž›αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαž“αŸαŸ‡αž•αŸ’αž’αŸ‚αž€αž›αžΎαŸ–

  1. αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž€αžΌαžŠ - αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž€αžΌαžŠαž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αžαžΆαž˜αžŠαžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αŸ†αžŽαŸ‚ - αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž…αŸ’αžšαžΎαž“αŸ”
  2. αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™ - αž”αŸ’αžšαž€αžΆαžŸαž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹ αž“αž·αž„αž‰αŸ‚αž€αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™
  3. αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹β€‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ - αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš
  4. αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž‚αžΆαŸ†αž‘αŸ’αžš - αž–αž·αž…αžΆαžšαžŽαžΆαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž‚αžΆαŸ†αž‘αŸ’αžšαž‡αžΆαž’αž“αž’αžΆαž“αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™
  5. αž€αžŸαžΆαž„, αžŠαŸ„αŸ‡αž›αŸ‚αž„, αžšαžαŸ‹ - αž”αŸ†αž”αŸ‚αž€αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αžŠαŸ†αž‘αžΎαž„ αž“αž·αž„αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž™αŸ‰αžΆαž„αžαžΉαž„αžšαŸ‰αžΉαž„
  6. αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš - αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‚αŸ’αž˜αžΆαž“αžšαžŠαŸ’αž‹αž˜αž½αž™ αž¬αž…αŸ’αžšαžΎαž“αŸ”
  7. αž€αžΆαžšαž—αŸ’αž‡αžΆαž”αŸ‹αž…αŸ’αžšαž€ - αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž“αžΆαŸ†αž…αŸαž‰αžαžΆαž˜αžšαž™αŸˆαž€αžΆαžšαž…αž„αž…αŸ’αžšαž€
  8. αž—αžΆαž–αžŸαŸ’αžšαž”αž‚αŸ’αž“αžΆ - αž’αŸ’αžœαžΎαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŠαŸ„αž™αž”αŸ’αžšαžΎαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš
  9. αž–αž·αž€αžΆαžšαž—αžΆαž– - αž”αž„αŸ’αž€αžΎαž“αž—αžΆαž–αž‡αžΏαž‡αžΆαž€αŸ‹αž‡αžΆαž’αžαž·αž”αžšαž˜αžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžšαž αŸαžŸ αž“αž·αž„αž€αžΆαžšαž”αž·αž‘αžŸαŸ’αž’αžΆαž
  10. αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ/αž—αžΆαž–αžŸαŸ’αž˜αžΎαž‚αŸ’αž“αžΆαž“αŸƒαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš - αžšαž€αŸ’αžŸαžΆαž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸ αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž› αž“αž·αž„αž”αžšαž·αž™αžΆαž€αžΆαžŸαž•αž›αž·αžαž€αž˜αŸ’αž˜αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž±αŸ’αž™αžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαžαžΆαž˜αžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“αŸ”
  11. αž€αžΆαžšαž€αžΆαž”αŸ‹αžˆαžΎ - αž˜αžΎαž›αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž‡αžΆαžŸαŸ’αž‘αŸ’αžšαžΈαž˜αž“αŸƒαž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸ
  12. αž€αž·αž…αŸ’αž…αž€αžΆαžšαžšαžŠαŸ’αž‹αž”αžΆαž› - αž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαž„αžΆαžšαžšαžŠαŸ’αž‹αž”αžΆαž›/αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžŠαŸ„αž™αž”αŸ’αžšαžΎαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αž·αžŸαŸαžŸ

αž’αŸ’αž“αž€αž’αžΆαž…αž‘αž‘αž½αž›αž”αžΆαž“αž–αŸαžαŸŒαž˜αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž’αŸ†αž–αžΈαž€αžαŸ’αžαžΆαž‘αžΆαŸ†αž„ 12 αž–αžΈαž”αŸ’αžšαž—αž–αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

αžαžΎαž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž–αžŽαŸŒαžαŸ€αžœαž”αŸƒαžαž„αž‚αžΊαž‡αžΆαž’αŸ’αžœαžΈ?

αž€αžΆαžšβ€‹αžŠαžΆαž€αŸ‹β€‹αž–αž„αŸ’αžšαžΆαž™β€‹αžαŸ€αžœβ€‹αž”αŸƒαžαž„β€‹αž‚αžΊβ€‹αž‡αžΆβ€‹αžœαž·αž’αžΈβ€‹αžŸαžΆβ€‹αžŸαŸ’αžšαŸ’αžβ€‹αž“αŸƒβ€‹αž€αžΆαžšβ€‹αž•αŸ’αžαž›αŸ‹β€‹αž‡αžΌαž“β€‹αž“αžΌαžœβ€‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈβ€‹αž˜αž½αž™β€‹αž‘αŸ… αž•αž›αž·αžαž€αž˜αŸ’αž˜ αžαžΆαž˜αžšαž”αŸ€αž”αžŠαŸ‚αž›αž’αžαž·αžαž·αž‡αž“αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž˜αž·αž“αžƒαžΎαž‰αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŽαžΆαž˜αž½αž™αž“αŸ…αž›αžΎαž•αŸ’αž“αŸ‚αž€αžšαž”αžŸαŸ‹αž‚αžΆαžαŸ‹αŸ” αž˜αŸ’αž™αŸ‰αžΆαž„αžœαž·αž‰αž‘αŸ€αž αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αžΆαž˜αž½αž™αžŸαžΌαž“αŸ’αž™ αž–αŸαž›αžœαŸαž›αžΆαžšαž„αž…αžΆαŸ†.

αž‚αŸ’αžšαŸ„αž„αž€αžΆαžšαžŽαŸαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™ BG αž”αž»αžšαžΆαžŽαž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αž€αŸ’αž“αž»αž„αžšαžΌαž”αž—αžΆαž–αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ”

αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž“αž·αž„αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž–αžŽαŸŒαžαŸ€αžœαž”αŸƒαžαž„ αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαž”αŸ‹αž–αžΈαžšαž€αžαŸ’αžαžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž§αž‘αžΆαž αžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„ php αž“αž·αž„ docker

  • αž“αŸ…αž–αŸαž›αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž˜αžΆαž“αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž…αŸ†αž“αž½αž“ 2 αžŠαŸ‚αž›αž˜αžΆαž“αž›αŸαžαž€αžΌαžŠαžŠαžΌαž…αž‚αŸ’αž“αžΆ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž‚αž˜αŸ’αžšαŸ„αž„ αž αžΎαž™αž˜αžΆαž“αžšαŸ‰αŸ„αžαž‘αŸαžš (αžαž»αž›αŸ’αž™αž—αžΆαž–) αŸ”
  • αžšαŸ‰αŸ„αžαž‘αŸαžšαžŠαŸ†αž”αžΌαž„αžŠαžΉαž€αž“αžΆαŸ†αžŸαŸ†αžŽαžΎαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‘αŸ…αž€αžΆαž“αŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž˜αž½αž™ (αž”αŸƒαžαž„).
  • αž“αŸ…αž–αŸαž›αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž˜αŸ’αžαž„αž‘αŸ€αž αž‚αž˜αŸ’αžšαŸ„αž„αž‘αžΆαŸ†αž„αž˜αžΌαž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž•αŸ’αžŸαŸαž„αž‘αŸ€αž (αžαŸ€αžœ) αžŠαŸ‚αž›αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ†αžŽαžΎαžŽαžΆαž˜αž½αž™αž‘αžΎαž™αŸ”
  • αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž›αŸαžαž€αžΌαžŠαž”αžΎαž€ αžαŸ€αžœ αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„ αžšαŸ‰αŸ„αžαž‘αŸαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžαžΌαžšαž–αžΈ αž”αŸƒαžαž„ αž“αŸ…αž›αžΎ αžαŸ€αžœ αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαŸ”
  • αž₯αž‘αžΌαžœαž“αŸαŸ‡αž’αžαž·αžαž·αž‡αž“αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžƒαžΎαž‰αž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αžΌαžŠαžŠαŸ‚αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αžΆαž˜αž½αž™ αž“αŸƒαž–αžŽαŸŒαžαŸ€αžœαŸ” αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž”αž˜αŸ’αžšαžΎ
  • αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αŸαž›αžαŸ’αž›αŸ‡ αž”αŸƒαžαž„ αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž”αž˜αŸ’αžšαžΎαž‡αžΆαž…αŸ’αž”αžΆαž”αŸ‹αž…αž˜αŸ’αž›αž„αž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžŠαŸ‚αž›αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž˜αž·αž“αž‡αŸ„αž‚αž‡αŸαž™αž‘αŸ… αžαŸ€αžœ server αž αžΎαž™αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž˜αžΆαž“αž€αžΆαžšαž”αžšαžΆαž‡αŸαž™ αž“αž·αž„αž€αŸ†αž αž»αžŸ αžšαŸ‰αŸ„αžαž‘αŸαžšαž”αŸ’αžαžΌαžšαž›αŸ†αž αžΌαžšαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžαŸ’αžšαž‘αž”αŸ‹αž‘αŸ…αžœαž·αž‰αŸ” αž”αŸƒαžαž„ αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžŠαŸ‚αž›αž˜αžΆαž“αž€αŸ†αžŽαŸ‚αžŸαŸ’αžαŸαžšαž—αžΆαž–αž…αžΆαžŸαŸ‹ αž αžΎαž™αž›αŸαžαž€αžΌαžŠαžαŸ’αž˜αžΈαžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‰αžΎαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž–αž·αž“αž·αžαŸ’αž™αž‘αžΎαž„αžœαž·αž‰ αž“αž·αž„αžŸαžΆαž€αž›αŸ’αž”αž„αŸ”
  • αž αžΎαž™αž“αŸ…αž…αž»αž„αž”αž‰αŸ’αž…αž”αŸ‹αž“αŸƒαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αžαžΆαž˜αžšαž”αŸ€αž”αžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ” αž”αŸƒαžαž„ αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαŸ” αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αžœαžΆ αžšαŸ‰αŸ„αžαž‘αŸαžšαž”αŸ’αžαžΌαžšαž›αŸ†αž αžΌαžšαžŸαŸ†αžŽαžΎαžαŸ’αžšαž‘αž”αŸ‹αž‘αŸ…αžœαž·αž‰αŸ” αž”αŸƒαžαž„ αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαŸ”

αžœαžΆαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž˜αžΎαž›αž‘αŸ…αž›αŸ’αž’αžŽαžΆαžŸαŸ‹ αž αžΎαž™αž“αŸ… glance αžŠαŸ†αž”αžΌαž„αž˜αž·αž“αž‚αž½αžšαž˜αžΆαž“αž”αž‰αŸ’αž αžΆαž’αŸ’αžœαžΈαž‡αžΆαž˜αž½αž™αžœαžΆαž‘αŸαŸ”
αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαž™αžΎαž„αžšαžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž–αž·αž—αž–αž‘αŸ†αž“αžΎαž”αž‡αž˜αŸ’αžšαžΎαžŸαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž”αŸ’αžαžΌαžšαžšαžΌαž”αžšαžΆαž„αž€αžΆαž™αžŠαžΌαž…αžŠαŸ‚αž›αž”αžΆαž“αž…αž„αŸ’αž’αž»αž›αž”αž„αŸ’αž αžΆαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αž‚αŸ’αžšαŸ„αž„αž€αžΆαžšαžŽαŸαž”αž»αžšαžΆαžŽαž˜αž·αž“αžŸαž˜αž“αžΉαž„αž™αžΎαž„αž‘αŸαŸ” αž€αžαŸ‹αžαŸ’αžšαžΆαž–αŸαžαŸŒαž˜αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αŸαž›αž“αŸαŸ‡ αž™αžΎαž„αž“αžΉαž„αžαŸ’αžšαž›αž”αŸ‹αž‘αŸ…αžœαžΆαž“αŸ…αž–αŸαž›αž€αŸ’αžšαŸ„αž™αŸ”

αžŠαŸ†αž”αžΌαž“αŸ’αž˜αžΆαž“αž›αŸ’αž’αž“αž·αž„αž’αžΆαž€αŸ’αžšαž€αŸ‹

αž€αžΆαžšαž˜αž·αž“αž‘αž‘αž½αž›αžαž»αžŸαžαŸ’αžšαžΌαžœαŸ– αž§αž‘αžΆαž αžšαžŽαŸαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž”αž„αŸ’αž αžΆαž‰αž–αžΈαž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹/αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αŸ’αžšαžΎ αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ’αžšαžΎαž‡αž˜αŸ’αžšαžΎαžŸαžŽαžΆαž˜αž½αž™αžŠαŸ‚αž›αž˜αžΆαž“αž˜αž»αžαž„αžΆαžšαžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαŸ”

αž§αž‘αžΆαž αžšαžŽαŸαž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž“αžΉαž„αž”αŸ’αžšαžŸαž–αŸ’αžœαž‚αŸ’αž“αžΆαž‡αžΆαž˜αž½αž™αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž‚αŸαž αž‘αŸ†αž–αŸαžš (αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž€αžΆαžšαž—αŸ’αž‰αžΆαž€αŸ‹αž•αŸ’αž’αžΎαž›αž˜αž½αž™) αž‡αžΆαž˜αž½αž™ PHP αž“αž·αž„ Docker αŸ”

αž€αžαžΆαžαžŽαŸ’αžŒαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„αžŸαžΆαž˜αž‰αŸ’αž‰αž“αŸƒαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αžαŸ’αžαžΆαžŠαŸ„αž™αž”αŸ’αžšαžΎαž§αž‘αžΆαž αžšαžŽαŸαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž…αž„αŸ‹αž‘αž‘αž½αž›αž”αžΆαž“αž‘αŸ’αžšαžΉαžŸαŸ’αžαžΈαž”αž“αŸ’αžαŸ‚αž˜αž›αžΎαž”αŸ’αžšαž’αžΆαž“αž”αž‘αž“αŸαŸ‡ αžŸαžΌαž˜αž’αŸ’αžœαžΎαžαžΆαž˜αžαŸ†αžŽαžαžΆαž„αž›αžΎαž‘αŸ…αž€αžΆαž“αŸ‹αž”αŸ’αžšαž—αž–αžŠαžΎαž˜αŸ”

1. αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž€αžΌαžŠ

αž”αŸ’αžšαžΎ FTP αž“αž·αž„ FileZilla αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž αŸ„αŸ‡αž―αž€αžŸαžΆαžšαž‘αŸ…αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž˜αŸ’αžαž„αž˜αž½αž™αŸ— αž€αž»αŸ†αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž€αžΌαžŠαž“αŸ…αž€αž“αŸ’αž›αŸ‚αž„αžŽαžΆαž€αŸ’αžšαŸ…αž–αžΈαž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž•αž›αž·αžαž€αž˜αŸ’αž˜αŸ”

αž‚αž˜αŸ’αžšαŸ„αž„αž“αŸαŸ‡αž‚αž½αžšαžαŸ‚αž˜αžΆαž“αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž€αžΌαžŠαžαŸ‚αž˜αž½αž™ αž–αŸ„αž›αž‚αžΊαž€αžΌαžŠαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž”αžΆαž“αž˜αž€αž–αžΈαž›αŸαžαž˜αž½αž™αŸ” Git αžƒαŸ’αž›αžΆαŸ†αž„αŸ” αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ (αž€αžΆαžšαž•αž›αž·αž, αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›, test1, test2...) αž”αŸ’αžšαžΎαž€αžΌαžŠαž–αžΈαžŸαžΆαžαžΆαž“αŸƒαžƒαŸ’αž›αžΆαŸ†αž„αž‘αžΌαž‘αŸ…αž˜αž½αž™αŸ” αžœαž·αž’αžΈαž“αŸαŸ‡αž™αžΎαž„αžŸαž˜αŸ’αžšαŸαž…αž”αžΆαž“αž“αžΌαžœαž—αžΆαž–αžŸαŸŠαžΈαžŸαž„αŸ’αžœαžΆαž€αŸ‹αž‚αŸ’αž“αžΆαž“αŸƒαž€αžΌαžŠαŸ”

2. αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™

αž‘αžΆαž‰αž™αž€αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αžαžαžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž‘αŸ…αž«αžŸαž“αŸƒαž‚αž˜αŸ’αžšαŸ„αž„αŸ” αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αžŠαŸ„αž™αžŸαžΆαž˜αž‰αŸ’αž‰αžŠαŸ„αž™αž•αŸ’αž‘αŸαžšαž›αŸαžαž€αžΌαžŠαžαŸ’αž˜αžΈαž‘αŸ…αžαžαž‡αžΆαž˜αž½αž™αž€αŸ†αžŽαŸ‚αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž“αŸƒαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αŸ” αžŠαŸ†αž‘αžΎαž„αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜ 20 αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αžαž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ”

αž‚αž˜αŸ’αžšαŸ„αž„αž˜αž½αž™αž‚αž½αžšαžαŸ‚αž˜αžΆαž“αž”αž‰αŸ’αž‡αžΈαž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αžŠαŸ‚αž›αž’αžΆαž…αž™αž›αŸ‹αž”αžΆαž“αž™αŸ‰αžΆαž„αž…αŸ’αž”αžΆαžŸαŸ‹ (αžŠαŸ„αž™αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™ αžαŸ’αž‰αž»αŸ†αž€αŸαž˜αžΆαž“αž“αŸαž™αžαžΆαž”αžšαž·αžŸαŸ’αžαžΆαž“αžŠαŸ‚αžš)αŸ” αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžαŸ’αžšαžΌαžœαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž™αŸ‰αžΆαž„αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹ αž“αž·αž„αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αŸ”
αž…αžΌαžšαž™αžΎαž„αž™αž€αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ‚αž„ ΠΈ Dockers.

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ‚αž„ - αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αž‰αŸ’αž…αž”αŸ‹αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αžŠαŸ†αž‘αžΎαž„αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž“αŸ…αž€αŸ’αž“αž»αž„ PHP αŸ” αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ‚αž„αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž€αŸ†αžŽαŸ‚αž™αŸ‰αžΆαž„αžαžΉαž„αžšαŸ‰αžΉαž„ αž¬αžšαž›αž»αž„ αž αžΎαž™αž€αŸ†αžŽαžαŸ‹αž–αž½αž€αžœαžΆαž™αŸ‰αžΆαž„αž…αŸ’αž”αžΆαžŸαŸ‹αŸ” αžœαžΆαž’αžΆαž…αž˜αžΆαž“ 20 αž‚αž˜αŸ’αžšαŸ„αž„αž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆαž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ αž αžΎαž™αž“αžΈαž˜αž½αž™αŸ—αž“αžΉαž„αž˜αžΆαž“αž”αž‰αŸ’αž‡αžΈαž€αž‰αŸ’αž…αž”αŸ‹ αž“αž·αž„αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžŠαŸ„αž™αž―αž€αžšαžΆαž‡αŸ’αž™αŸ”

Dockers - αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž€αŸ†αžŽαžαŸ‹ αž“αž·αž„αž‰αŸ‚αž€αž”αžšαž·αž™αžΆαž€αžΆαžŸαžŠαŸ‚αž›αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αžΉαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ” αžŠαžΌαž…αŸ’αž“αŸ„αŸ‡αž αžΎαž™ αžŠαžΌαž…αž‚αŸ’αž“αžΆαž“αžΉαž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ‚αž„αžŠαŸ‚αžš αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž αŸ’αž˜αžαŸ‹αž…αžαŸ‹αž‡αžΆαž„αž“αŸαŸ‡αž‘αŸ…αž‘αŸ€αž αž™αžΎαž„αž’αžΆαž…αž€αŸ†αžŽαžαŸ‹αžαžΆαžαžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž’αŸ’αžœαžΈαŸ” αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž€αŸ†αžŽαŸ‚αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αžšαž”αžŸαŸ‹ PHP αžŠαŸ†αž‘αžΎαž„αžαŸ‚αž€αž‰αŸ’αž…αž”αŸ‹αžŠαŸ‚αž›αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αž˜αŸ’αžšαŸ„αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αžŠαŸ„αž™αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž”αž“αŸ’αžαŸ‚αž˜αž’αŸ’αžœαžΈαž”αž“αŸ’αžαŸ‚αž˜αŸ” αž αžΎαž™αžŸαŸ†αžαžΆαž“αŸ‹αž”αŸ†αž•αž»αžαžŠαŸ„αž™αž˜αž·αž“αž‡αŸ’αžšαŸ€αžαž‡αŸ’αžšαŸ‚αž€αž‡αžΆαž˜αž½αž™αž€αž‰αŸ’αž…αž”αŸ‹ αž“αž·αž„αž”αžšαž·αžŸαŸ’αžαžΆαž“αž“αŸƒαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“ αž“αž·αž„αž‚αž˜αŸ’αžšαŸ„αž„αž•αŸ’αžŸαŸαž„αŸ—αž‘αŸ€αžαŸ” αž“αŸ„αŸ‡αž‚αžΊαž‚αž˜αŸ’αžšαŸ„αž„αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžŠαŸ‚αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαžΆαž˜αžšαž™αŸˆ Docker αž’αžΆαž…αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αž‰αŸ’αž…αž”αŸ‹αžŽαžΆαž˜αž½αž™ αž“αž·αž„αž”αžšαž·αž™αžΆαž€αžΆαžŸαžαž»αžŸαž‚αŸ’αž“αžΆαž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αŸ”

3. αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž‡αžΆαžαŸαžšαžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠαŸ” αž‰αŸ‚αž€αžαŸαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžŸαžΆαž€αž›αŸ’αž”αž„ αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž•αž›αž·αžαŸ” αž—αŸ’αž‡αžΆαž”αŸ‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžΆαžŸαŸ’αžšαŸαž™αž›αžΎαž”αžšαž·αžŸαŸ’αžαžΆαž“αžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαž’αžΆαž‡αžΈαžœαž€αž˜αŸ’αž˜αž“αŸƒαž‚αž˜αŸ’αžšαŸ„αž„αžŠαŸ„αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžŸαž·αž“αž”αžΎαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŸαžΆαž„αžŸαž„αŸ‹αŸ”

αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ - αž“αŸαŸ‡αž‚αžΊαž‡αžΆαžœαž·αž’αžΈαžαŸ‚αž˜αž½αž™αž‚αžαŸ‹αžŠαŸ‚αž›αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž‚αž˜αŸ’αžšαŸ„αž„αž‚αž½αžšαžαŸ‚αžαž»αžŸαž‚αŸ’αž“αžΆαŸ” αžαžΆαž˜αž§αžαŸ’αžŠαž˜αž‚αžαž· αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‚αž½αžšαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž’αžαŸαžšαž”αžšαž·αžŸαŸ’αžαžΆαž“ (env vars)αŸ”

αž“αŸ„αŸ‡αž‚αžΊαž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž’αŸ’αž“αž€αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž―αž€αžŸαžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‡αžΆαž…αŸ’αžšαžΎαž“ .config.prod .config.local αž αžΎαž™αž”αŸ’αžαžΌαžšαžˆαŸ’αž˜αŸ„αŸ‡αž–αž½αž€αžœαžΆαž“αŸ…αž–αŸαž›αžŠαžΆαž€αŸ‹αž±αŸ’αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‘αŸ… .config (αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžŸαŸ†αžαžΆαž“αŸ‹αžŠαŸ‚αž›αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™) - αž“αŸαŸ‡αž“αžΉαž„αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž‘αŸ αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈ αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ αž–αŸαžαŸŒαž˜αžΆαž“αž–αžΈαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž“αžΉαž„αž˜αžΆαž“αž‡αžΆαžŸαžΆαž’αžΆαžšαžŽαŸˆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αž αžΎαž™αž‘αž·αž“αŸ’αž“αž“αŸαž™αž–αžΈαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž•αž›αž·αžαž€αž˜αŸ’αž˜αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαž˜αŸ’αžšαž”αžŸαž˜αŸ’αžšαž½αž›αŸ” αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžαŸ’αžšαžΌαžœαžαŸ‚αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™ (CI/CD) αž“αž·αž„αž”αž„αŸ’αž€αžΎαžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αžšαž·αžŸαŸ’αžαžΆαž“αž•αŸ’αžŸαŸαž„αŸ—αž‚αŸ’αž“αžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αžαž˜αŸ’αž›αŸƒαžαž»αžŸαŸ—αž‚αŸ’αž“αžΆαžŠαŸ‚αž›αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αžšαž·αžŸαŸ’αžαžΆαž“αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™αž“αŸ…αž–αŸαž›αžŠαžΆαž€αŸ‹αž±αŸ’αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αŸ”

4. αžŸαŸαžœαžΆαž—αžΆαž‚αžΈαž‘αžΈαž”αžΈ

αžαŸ’αžšαžΌαžœαž—αŸ’αž‡αžΆαž”αŸ‹αž™αŸ‰αžΆαž„αžαžΉαž„αžšαŸ‰αžΉαž„αž‘αŸ…αž“αžΉαž„αž”αžšαž·αžŸαŸ’αžαžΆαž“ αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αžŠαžΌαž…αž‚αŸ’αž“αžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž”αžšαž·αž™αžΆαž€αžΆαžŸαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αŸ”

αž‡αžΆαž€αžΆαžšαž–αž·αž αž…αŸ†αžŽαž»αž…αž“αŸαŸ‡αžαŸ’αžšαž½αžαž›αžΎαž‚αŸ’αž“αžΆαž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž…αŸ†αžŽαž»αž…αž’αŸ†αž–αžΈαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹ αž–αžΈαž–αŸ’αžšαŸ„αŸ‡αž”αžΎαž‚αŸ’αž˜αžΆαž“αž…αŸ†αžŽαž»αž…αž“αŸαŸ‡αž‘αŸ αž‘αž·αž“αŸ’αž“αž“αŸαž™αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž’αž˜αŸ’αž˜αžαžΆαž˜αž·αž“αž’αžΆαž…αž’αŸ’αžœαžΎαž”αžΆαž“αž‘αŸ αž αžΎαž™αž‡αžΆαž‘αžΌαž‘αŸ… αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž“αžΉαž„αž’αŸ’αž›αžΆαž€αŸ‹αž…αž»αŸ‡αž‚αŸ’αž˜αžΆαž“αž’αŸ’αžœαžΈαžŸαŸ„αŸ‡αŸ”

αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‘αŸ…αž€αžΆαž“αŸ‹αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αžαžΆαž„αž€αŸ’αžšαŸ… αžŠαžΌαž…αž‡αžΆαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž‡αž½αžš αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™ αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ αžαŸ’αžšαžΌαžœαžαŸ‚αžŠαžΌαž…αž‚αŸ’αž“αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‘αžΆαŸ†αž„αž”αžšαž·αžŸαŸ’αžαžΆαž“αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ αž“αž·αž„αž”αžšαž·αžŸαŸ’αžαžΆαž“αž—αžΆαž‚αžΈαž‘αžΈαž”αžΈ/αž•αž›αž·αžαž€αž˜αŸ’αž˜αŸ” αž˜αŸ’αž™αŸ‰αžΆαž„αžœαž·αž‰αž‘αŸ€αž αž“αŸ…αž–αŸαž›αžŽαžΆαž˜αž½αž™ αžαžΆαž˜αžšαž™αŸˆαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžαŸ’αžŸαŸ‚αžαž—αŸ’αž‡αžΆαž”αŸ‹ αžαŸ’αž‰αž»αŸ†αž’αžΆαž…αž‡αŸ†αž“αž½αžŸαž€αžΆαžšαž αŸ…αž‘αŸ…αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž›αŸαž 1 αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž›αŸαž 2 αžŠαŸ„αž™αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž›αŸαžαž€αžΌαžŠαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ” αž¬αž˜αžΎαž›αž‘αŸ…αžαžΆαž„αž˜αž»αž αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αž“αŸ…αž–αŸαž›αž’αŸ’αžœαžΎαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜ αž’αŸ’αž“αž€αž“αžΉαž„αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αžαžΆαž˜αžœαž·αž’αžΈαž–αž·αžŸαŸαžŸαžŽαžΆαž˜αž½αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸαŸ”

5. αž€αžŸαžΆαž„, αžŠαŸ„αŸ‡αž›αŸ‚αž„, αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·

αž˜αžΆαž“αžαŸ‚αž€αŸ†αžŽαŸ‚αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž“αŸƒαž€αžΌαžŠαž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡ αžŠαŸ„αž™αž˜αž·αž“αž˜αžΆαž“αž±αž€αžΆαžŸαž”αž„αŸ’αžœαž·αž›αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž‘αžΎαž„αžœαž·αž‰αž“αŸ„αŸ‡αž‘αŸαŸ” αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž”αŸ†αž–αŸαž‰αž‘αŸ†αž αŸ†αžαžΆαžŸαž‘αŸαŸ” αž’αŸ’αž“αž€β€‹αžŽαžΆβ€‹αžŠαŸ‚αž›β€‹αž‚αž·αžβ€‹αžαžΆβ€‹αž’αžΆαž…β€‹αž”αž‰αŸ’αž…αŸαž‰β€‹αž€αžΌαžŠβ€‹αž…αžΌαž›β€‹αž•αž›αž·αžαž€αž˜αŸ’αž˜β€‹αžŠαŸ„αž™β€‹αž˜αžΆαž“β€‹αž€αŸ†αž αž»αžŸβ€‹αž‚αžΊβ€‹αž‡αžΆβ€‹αž’αŸ’αž“αž€β€‹αžŸαžšαžŸαŸαžšβ€‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈβ€‹αž˜αž·αž“β€‹αž›αŸ’αž’!

αž‚αŸ’αžšαž”αŸ‹αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αž“αŸƒαž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αžαŸ’αžšαžΌαžœαžαŸ‚αž”αŸ†αž”αŸ‚αž€αž…αŸαž‰αž–αžΈαž‚αŸ’αž“αžΆαž‘αŸ…αžœαž·αž‰αž‘αŸ…αž˜αž€αŸ”

αž˜αžΆαž“αž±αž€αžΆαžŸαžœαž·αž›αžαŸ’αžšαž‘αž”αŸ‹αž˜αž€αžœαž·αž‰αŸ” αž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž…αŸ’αž”αžΆαž”αŸ‹αž…αž˜αŸ’αž›αž„αž…αžΆαžŸαŸ‹αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ (αž”αžΆαž“αž”αŸ’αžšαž˜αžΌαž›αž•αŸ’αžαž»αŸ†αžšαž½αž…αž αžΎαž™ αž“αž·αž„αžαŸ’αžšαŸ€αž˜αžαŸ’αž›αž½αž“αž‡αžΆαžŸαŸ’αžšαŸαž…αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αŸ’αžšαž™αž»αž‘αŸ’αž’) αžŠαŸ‚αž›αž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαžšαž αŸαžŸ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž˜αžΆαž“αž€αŸ†αž αž»αžŸ αž’αŸ’αž“αž€αž’αžΆαž…αžŸαŸ’αžŠαžΆαžšαž€αŸ†αžŽαŸ‚αž…αžΆαžŸαŸ‹αž”αžΆαž“αŸ” αž“αŸ„αŸ‡αž‚αžΊαžαžΆαž˜αž›αž€αŸ’αžαžαžŽαŸ’αžŒαž˜αžΆαž“αžαžαž―αž€αžŸαžΆαžš αž…αŸαž‰αž•αŸ’αžŸαžΆαž™ αž“αž·αž„αžαžαž―αž€αžŸαžΆαžš αž“αžΆβ€‹αž–αŸαž›β€‹αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž αžΎαž™β€‹αž”αž“αŸ’αž‘αžΆαž”αŸ‹β€‹αž–αžΈβ€‹αž€αžΆαžšβ€‹αžŠαžΆαž€αŸ‹β€‹αž–αž„αŸ’αžšαžΆαž™β€‹αž“αž·αž„β€‹αž€αžΆαžšβ€‹αž•αŸ’αž‚αž»αŸ†β€‹αžαžβ€‹αžŠαŸ„αž™β€‹αž‡αŸ„αž‚αž‡αŸαž™ αž“αžΆβ€‹αž–αŸαž›β€‹αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“ αž—αŸ’αž‡αžΆαž”αŸ‹αžŠαŸ„αž™αžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹αž“αž·αž˜αž·αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαž‘αŸ…αž“αžΉαž„αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αžαŸ’αž˜αžΈαžŠαŸ‚αž›αžŸαŸ’αžαž·αžαž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„ αž…αŸαž‰αž•αŸ’αžŸαžΆαž™ αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžˆαŸ’αž˜αŸ„αŸ‡αžŸαžΆαž˜αž‰αŸ’αž‰αž“αŸƒαž›αŸαžαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αŸ”

αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αž™αžΎαž„αž…αž„αž…αžΆαŸ†αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž–αžŽαŸŒαžαŸ€αžœ-αž”αŸƒαžαž„ αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ‚αž”αŸ’αžαžΌαžšαžšαžœαžΆαž„αž€αžΌαžŠαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ‚αž˜αž‘αžΆαŸ†αž„αž’αžΆαž…αž”αŸ’αžαžΌαžšαžšαžœαžΆαž„αž’αž“αž’αžΆαž“αž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αž“αž·αž„αžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚αž”αžšαž·αžŸαŸ’αžαžΆαž“αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαžœαž·αž›αžαŸ’αžšαž‘αž”αŸ‹αž˜αž€αžœαž·αž‰αž“αžΌαžœαž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αŸ”

6. αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš

αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αž›αž½αž“αžœαžΆαž•αŸ’αž‘αžΆαž›αŸ‹αŸ” αž”αŸ’αžšαžΎαžœαž‚αŸ’αž‚αž“αŸ…αž€αŸ’αž“αž»αž„ RAM αžšαž”αžŸαŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αž›αž½αž“αž―αž„αŸ” αž”αŸ’αžšαžΎαž€αžΆαžšαž…αŸ‚αž€αžšαŸ†αž›αŸ‚αž€αž±αŸ’αž™αž”αžΆαž“αž…αŸ’αžšαžΎαž“αžšαžœαžΆαž„αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž—αžΆαž‚αžΈαž‘αžΈαž”αžΈαžαžΆαž˜αžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“αŸ” αž–αžΉαž„αž•αŸ’αž’αŸ‚αž€αž›αžΎαž€αžΆαžšαž–αž·αžαžŠαŸ‚αž›αžαžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžΆαž…αž˜αžΆαž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαŸ‚αž˜αž½αž™αž αžΎαž™αž˜αž·αž“αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αžœαžΎαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“αž‘αŸαŸ”

αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αžœαž‚αŸ’αž‚ αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αžαŸ‚αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αžŠαŸ‚αž›αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžŠαŸ„αž™αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž—αžΆαž‚αžΈαž‘αžΈαž”αžΈ (memcached, redis) αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž’αŸ’αž“αž€αž˜αžΆαž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αŸ†αž“αž½αž“ 20 αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αŸαžŠαŸ„αž™ αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž–αž½αž€αž‚αŸαžŠαŸ‚αž›αž”αžΆαž“αž…αžΌαž›αž”αŸ’αžšαžΎαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž“αžΉαž„αž’αžΆαž…αž”αž“αŸ’αžαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž’αžαž·αžαž·αž‡αž“αž“αŸ…αž€αŸ’αž“αž»αž„ αžŸαŸ’αžαžΆαž“αž—αžΆαž–αžŠαžΌαž…αž‚αŸ’αž“αžΆαžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αŸ†αž–αž»αž„αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ” αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸαŸ‡ αžœαžΆαž”αŸ’αžšαŸ‚αžαžΆαž˜αž·αž“αžαžΆαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž—αžΆαž‚αžΈαž‘αžΈαž”αžΈαž…αŸ†αž“αž½αž“αž”αŸ‰αž»αž“αŸ’αž˜αžΆαž“αž‘αŸ αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž“αžΉαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αžΆαž’αž˜αŸ’αž˜αžαžΆ αž“αž·αž„αž˜αž·αž“αž˜αžΆαž“αž”αž‰αŸ’αž αžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαž‘αž·αž“αŸ’αž“αž“αŸαž™αŸ”

7. αž€αžΆαžšαž…αž„αž…αŸ’αžšαž€

αž˜αžΆαž“αžαŸ‚αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž‚αŸαž αž‘αŸ†αž–αŸαžšαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αžŠαŸ‚αž›αžŠαžΉαž„αž–αžΈαžšαž”αŸ€αž”αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž—αžΆαž‚αžΈαž‘αžΈαž”αžΈαŸ” αž¬αž”αŸ’αžšαžŸαžΎαžšαž‡αžΆαž„αž“αŸαŸ‡ αžŠαŸ†αž‘αžΎαž„αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž—αžΆαž‚αžΈαž‘αžΈαž”αžΈαžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž‚αŸαž αž‘αŸ†αž–αŸαžšαŸ” αž§αž‘αžΆαž αžšαžŽαŸαžŠαžΌαž…αž‡αžΆαž˜αŸ‰αžΌαžŒαž»αž› PHP αž“αŸ…αž€αŸ’αž“αž»αž„ Apache αŸ”
αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžαŸ‚αž’αžΆαž…αž…αžΌαž›αž”αŸ’αžšαžΎαž”αžΆαž“αž‚αŸ’αž“αžΆαž‘αŸ…αžœαž·αž‰αž‘αŸ…αž˜αž€αžαžΆαž˜αžšαž™αŸˆαž€αžΆαžšαž…αžΌαž›αž‘αŸ…αž€αžΆαž“αŸ‹αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ αž“αž·αž„αž…αŸ’αžšαž€αž˜αž½αž™αž…αŸ†αž“αž½αž“ (localgost:5432, localhost:3000, nginx:80, php-fpm:9000) αž“αŸ„αŸ‡αž‚αžΊαž–αžΈ nginx αžαŸ’αž‰αž»αŸ†αž’αžΆαž…αž…αžΌαž›αž”αŸ’αžšαžΎαž”αžΆαž“αž‘αžΆαŸ†αž„ php-fpm αž“αž·αž„αž‘αŸ…αž€αžΆαž“αŸ‹ postgres αž“αž·αž„αž–αžΈ php-fpm αž‘αŸ… postgres αž“αž·αž„ nginx αž αžΎαž™αžαžΆαž˜αž–αž·αžαž–αžΈαžŸαŸαžœαžΆαž“αžΈαž˜αž½αž™αŸ— αžαŸ’αž‰αž»αŸ†αž’αžΆαž…αž…αžΌαž›αž”αŸ’αžšαžΎαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ” αžαžΆαž˜αžœαž·αž’αžΈαž“αŸαŸ‡ αž›αž‘αŸ’αž’αž—αžΆαž–αž‡αŸ„αž‚αž‡αŸαž™αž“αŸƒαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž˜αž½αž™αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αž„αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž“αžΉαž„αž›αž‘αŸ’αž’αž—αžΆαž–αž‡αŸ„αž‚αž‡αŸαž™αž“αŸƒαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž˜αž½αž™αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž‘αŸαŸ”

8. αž—αžΆαž–αžŸαŸ’αžšαž”αž‚αŸ’αž“αžΆαŸ”

αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž˜αž½αž™ αž”αžΎαž˜αž·αž“αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž‘αŸ αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αžΆαž…αŸ’αžšαžΎαž“αž“αžΉαž„αž˜αž·αž“αž’αžΆαž…αž‘αžΆαž€αŸ‹αž‘αž„αž‚αŸ’αž“αžΆαž”αžΆαž“αž‘αŸ!

αž‘αž»αž€αž€αž“αŸ’αž›αŸ‚αž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αžœαžΎαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“αŸ” Docker swarm αž‚αžΊαž›αŸ’αž’αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαžΏαž„αž“αŸαŸ‡αŸ”
Docker Swarm αž‚αžΊαž‡αžΆαž§αž”αž€αžšαžŽαŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αž„αŸ’αž€αžΎαž αž“αž·αž„αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž…αž„αŸ’αž€αŸ„αž˜αž€αž»αž„αžαžΊαž“αŸαžš αž‘αžΆαŸ†αž„αžšαžœαžΆαž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆ αž“αž·αž„αž’αž»αž„αž‡αžΆαž…αŸ’αžšαžΎαž“αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžαŸ‚αž˜αž½αž™αŸ”

αžŠαŸ„αž™αž”αŸ’αžšαžΎ swarm αžαŸ’αž‰αž»αŸ†αž’αžΆαž…αž€αŸ†αžŽαžαŸ‹αžαžΆαžαžΎαž’αž“αž’αžΆαž“αž”αŸ‰αž»αž“αŸ’αž˜αžΆαž“αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž”αŸ‚αž„αž…αŸ‚αž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αžΈαž˜αž½αž™αŸ— αž“αž·αž„αž…αŸ†αž“αž½αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸƒαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αžŠαžΌαž…αž‚αŸ’αž“αžΆαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž αžΎαž™αžαž»αž›αŸ’αž™αž—αžΆαž–αžαžΆαž„αž€αŸ’αž“αž»αž„αžŠαŸ‚αž›αž‘αž‘αž½αž›αž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αŸ…αž›αžΎαž…αŸ’αžšαž€αžŠαŸ‚αž›αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αž“αžΉαž„αž•αŸ’αžαž›αŸ‹αž”αŸ’αžšαžΌαž€αžŸαŸŠαžΈαžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž‘αŸ…αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αžŠαŸ„αž™αž˜αžΎαž›αžƒαžΎαž‰αžαžΆαž€αžΆαžšαž•αŸ’αž‘αž»αž€αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž”αžΆαž“αž€αžΎαž“αž‘αžΎαž„ αžαŸ’αž‰αž»αŸ†αž’αžΆαž…αž”αž“αŸ’αžαŸ‚αž˜αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αž αžŠαŸ„αž™αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž“αŸ…αž›αžΎαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αŸ”

9. αž–αž·αž€αžΆαžšαž—αžΆαž–

αž€αž»αŸ†αž”αŸ’αžšαžΎαž‡αž½αžšαžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž“αž·αž„αž‘αž·αž“αŸ’αž“αž“αŸαž™αŸ” αž€αžΆαžšαžŸαž˜αŸ’αž›αžΆαž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž˜αž½αž™αž‚αž½αžšαžαŸ‚αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹αžŠαž›αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‘αžΆαŸ†αž„αž˜αžΌαž›αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž˜αž½αž™αž’αŸ’αž›αžΆαž€αŸ‹αž…αž»αŸ‡ αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž“αžΉαž„αž’αŸ’αž›αžΆαž€αŸ‹αž…αž»αŸ‡αŸ”

αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž“αž·αž„αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž“αžΈαž˜αž½αž™αŸ—αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž·αž‘αž“αŸ…αž–αŸαž›αžŽαžΆαž€αŸαž”αžΆαž“ αž αžΎαž™αž“αŸαŸ‡αž˜αž·αž“αž‚αž½αžšαž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹αžŠαž›αŸ‹αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž‘αŸ (αž‡αžΆαž€αžΆαžšαž–αž·αžαžŽαžΆαžŸαŸ‹ αž“αŸαŸ‡αž˜αž·αž“αž˜αžΆαž“αž“αŸαž™αžαžΆαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž“αŸαŸ‡αž“αžΉαž„αž˜αž·αž“αž’αžΆαž…αž”αŸ’αžšαžΎαž”αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž“αŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž“αžΉαž„αž˜αž·αž“αž”αž·αž‘αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž“αŸαŸ‡)αŸ” αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžαŸ’αžšαžΌαžœαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž…αž”αŸ‹αžŠαŸ„αž™αžšαž›αžΌαž“ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž–αž½αž€αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž…αž”αŸ‹ αž“αŸ„αŸ‡αž‚αŸ’αž˜αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŽαžΆαž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αžαžΌαž…αžαžΆαžαž‘αŸ αž αžΎαž™αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž“αžΉαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αžΆαž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αžΎαž€αžœαžΆαž›αžΎαž€αž€αŸ’αžšαŸ„αž™αŸ” αž“αŸ„αŸ‡αž‚αžΊ αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž˜αžΆαž“αž€αžΆαžšαž”αž‰αŸ’αž…αž”αŸ‹αž‡αžΆαž”αž“αŸ’αž‘αžΆαž“αŸ‹αž€αŸαžŠαŸ„αž™ αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αž·αž“αž‚αž½αžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αžαžΌαž…αžαžΆαžαž‘αŸ (αž™αž“αŸ’αžαž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž‚αžΊαžŸαž˜αžšαž˜αŸ’αž™αž“αŸ…αž‘αžΈαž“αŸαŸ‡ αžŸαŸ†αžŽαž½αžšαž€αŸ’αž“αž»αž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαŸ‚αž‡αžΆαž€αŸ’αžšαž»αž˜αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡ αž αžΎαž™αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αŸ‰αžΆαž„αž αŸ„αž…αžŽαžΆαžŸαŸ‹αžŸαŸ†αžŽαž½αžšαž˜αž½αž™αž–αžΈαž€αŸ’αžšαž»αž˜αž”αžšαžΆαž‡αŸαž™ αž¬αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž‡αžΆαž˜αž½αž™ error, αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž˜αž·αž“αž˜αžΆαž“αžŸαŸ†αžŽαž½αžšαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž–αžΈαž€αŸ’αžšαž»αž˜αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž”αžšαžΆαž‡αŸαž™αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž–αž·αž).

10. αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ/αž—αžΆαž–αžŸαŸ’αž˜αžΎαž‚αŸ’αž“αžΆαž“αŸƒαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš

αž€αžΆαžšαž•αž›αž·αž αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž› αž“αž·αž„αž€αŸ†αžŽαŸ‚αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΌαžœαžαŸ‚αžαž»αžŸαž‚αŸ’αž“αžΆαŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž•αž›αž·αž αž™αžΎαž„αž”αŸ’αžšαžΎαž€αŸ’αžšαž”αžαŸαžŽαŸ’αžŒ Yii Lite αž“αž·αž„αž€αŸ’αž“αž»αž„αžŸαŸ’αžšαž»αž€ Yii αžŠαžΎαž˜αŸ’αž”αžΈαž±αŸ’αž™αžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΏαž“αž€αŸ’αž“αž»αž„αž•αž›αž·αžαž€αž˜αŸ’αž˜!

αžαžΆαž˜αž–αž·αž αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™ αž“αž·αž„αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž€αžΌαžŠαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‚αž½αžšαžαŸ‚αžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αž“αž»αž„αž”αžšαž·αž™αžΆαž€αžΆαžŸαžŠαžΌαž…αž‚αŸ’αž“αžΆαž”αŸαŸ‡αž”αž·αž‘ (αž™αžΎαž„αž˜αž·αž“αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαž•αŸ’αž“αŸ‚αž€αžšαžΉαž„αžšαžΌαž”αžœαŸαž“αŸ’αžαž‘αŸ)αŸ” αžŠαžΌαž…αž‚αŸ’αž“αžΆαž“αŸαŸ‡αž•αž„αžŠαŸ‚αžš αž”αž»αž‚αŸ’αž‚αž›αž·αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαžŽαžΆαž˜αž½αž™αž‚αž½αžšαžαŸ‚αž’αžΆαž…αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž€αžΌαžŠαž‘αŸ…αž•αž›αž·αžαž€αž˜αŸ’αž˜αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž…αžΆαŸ†αž”αžΆαž…αŸ‹ αž αžΎαž™αž˜αž·αž“αž˜αŸ‚αž“αž“αžΆαž™αž€αžŠαŸ’αž‹αžΆαž“αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž–αž·αžŸαŸαžŸαž˜αž½αž™αž…αŸ†αž“αž½αž“αžŠαŸ‚αž›αž”αžΆαž“αž‘αž‘αž½αž›αž€αžΆαžšαž”αžŽαŸ’αžαž»αŸ‡αž”αžŽαŸ’αžαžΆαž›αž–αž·αžŸαŸαžŸαž“αŸ„αŸ‡αž‘αŸ αžŠαŸ‚αž›αž˜αžΆαž“αžαŸ‚αž’αžšαž‚αž»αžŽαžŠαž›αŸ‹αž€αž˜αŸ’αž›αžΆαŸ†αž„αž–αž·αžŸαŸαžŸαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αžŠαŸ‚αž›αž’αžΆαž…αž›αžΎαž€αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž•αž›αž·αžαž€αž˜αŸ’αž˜αž”αžΆαž“αŸ”

Docker αž€αŸαž‡αž½αž™αž™αžΎαž„αž€αŸ’αž“αž»αž„αžšαžΏαž„αž“αŸαŸ‡αžŠαŸ‚αžšαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž…αŸ†αžŽαž»αž…αž˜αž»αž“αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαžŸαž„αŸ’αž€αŸαžαžƒαžΎαž‰ αž€αžΆαžšαž”αŸ’αžšαžΎ docker αž“αžΉαž„αž“αžΆαŸ†αž˜αž€αž“αžΌαžœαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸƒαž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž”αžšαž·αžŸαŸ’αžαžΆαž“αž‘αžΆαŸ†αž„αž›αžΎαž€αžΆαžšαž•αž›αž·αž αž“αž·αž„αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžŠαžΎαž˜αŸ’αž”αžΈαž”αž‰αŸ’αž…αžΌαž›αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž˜αž½αž™ αž¬αž–αžΈαžšαŸ”

11. αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»

αž™αžΎαž„αžŸαžšαžŸαŸαžšαž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž‘αŸ…αž―αž€αžŸαžΆαžš αž“αž·αž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™! αž™αžΎαž„αž˜αž·αž“αžŸαž˜αŸ’αž’αžΆαžαž―αž€αžŸαžΆαžš αž“αž·αž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž–αžΈαž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž‘αŸαŸ” αžαŸ„αŸ‡αž‘αž·αž‰ hard drive αžŠαŸ‚αž›αž˜αžΆαž“ 9000 Peta bytes αž αžΎαž™αžœαžΆαž›αŸ’αž’αžŽαžΆαžŸαŸ‹αŸ”

αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‚αž½αžšαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αžΆαžαŸ‹αž‘αž»αž€αžαžΆαž‡αžΆαžŸαŸ’αž‘αŸ’αžšαžΈαž˜αž“αŸƒαž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαž˜αž½αž™αŸ” αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αž›αž½αž“αžœαžΆαž˜αž·αž“αž‚αž½αžšαž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’αž“αžΉαž„αž€αžΆαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž‘αŸαŸ” αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž‚αž½αžšαžαŸ‚αž…αŸαž‰αž‡αžΆ stdout αž¬αž•αŸ’αž‰αžΎαžαžΆαž˜αžšαž™αŸˆαž–αž·αž’αžΈαž€αžΆαžšαžŠαžΌαž…αž‡αžΆ udp αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž€αžΆαžšαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž˜αž·αž“αž”αž„αŸ’αž€αžΎαžαž”αž‰αŸ’αž αžΆαžŽαžΆαž˜αž½αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αŸ„αŸ‡αž‘αŸαŸ” greylog αž‚αžΊαž›αŸ’αž’αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαžΏαž„αž“αŸαŸ‡αŸ” Graylog αž‘αž‘αž½αž›αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžαžΆαž˜αžšαž™αŸˆ udp (αž–αž·αž’αžΈαž€αžΆαžšαž“αŸαŸ‡αž˜αž·αž“αžαž˜αŸ’αžšαžΌαžœαž±αŸ’αž™αžšαž„αŸ‹αž…αžΆαŸ†αž€αžΆαžšαž†αŸ’αž›αžΎαž™αžαž”αž’αŸ†αž–αžΈαž€αžΆαžšαž‘αž‘αž½αž›αž€αž‰αŸ’αž…αž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αžŠαŸ„αž™αž‡αŸ„αž‚αž‡αŸαž™) αž˜αž·αž“αž‡αŸ’αžšαŸ€αžαž‡αŸ’αžšαŸ‚αž€αž‡αžΆαž˜αž½αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαžΆαž˜αž˜αž’αŸ’αž™αŸ„αž”αžΆαž™αžŽαžΆαž˜αž½αž™αž‘αžΎαž™ αž αžΎαž™αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ αž“αž·αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž˜αž·αž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž”αŸ‚αž”αž“αŸαŸ‡αž‘αŸαŸ”

12. αž€αž·αž…αŸ’αž…αž€αžΆαžšαžšαžŠαŸ’αž‹αž”αžΆαž›

αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž‘αž·αž“αŸ’αž“αž“αŸαž™ αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αŸ”αž›αŸ” αž”αŸ’αžšαžΎαž…αŸ†αžŽαž»αž…αž”αž‰αŸ’αž…αž”αŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αž“αŸ…αž€αŸ’αž“αž»αž„ API αžŠαŸ„αž™αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αžœαžΆ 2 αžŠαž„αž‡αžΆαž”αŸ‹αž‚αŸ’αž“αžΆαž“αžΉαž„αž“αžΆαŸ†αž±αŸ’αž™αž’αŸ’αžœαžΈαŸ—αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŸαŸ’αž‘αž½αž“αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž’αŸ’αž“αž€αž˜αž·αž“αž›αŸ’αž„αž„αŸ‹αž‘αŸ αž’αŸ’αž“αž€αž“αžΉαž„αž˜αž·αž“αž…αž»αž…αž–αžΈαžšαžŠαž„αž‘αŸ αž αžΎαž™αž™αžΎαž„αž˜αž·αž“αžαŸ’αžšαžΌαžœαž€αžΆαžšαž€αžΆαžšαž’αŸ’αžœαžΎαž…αŸ†αžŽαžΆαž€αžŸαŸ’αžšαž»αž€αž‘αŸαŸ”

αž€αž·αž…αŸ’αž…αž€αžΆαžšαžšαžŠαŸ’αž‹αž”αžΆαž›αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‚αž½αžšαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž€αŸ’αž“αž»αž„αž”αžšαž·αž™αžΆαž€αžΆαžŸαžŠαžΌαž…αž‚αŸ’αž“αžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΌαžŠαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž€αž˜αŸ’αžšαž·αžαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αŸ” αž“αŸ„αŸ‡αž‚αžΊαž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž“αŸƒαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™ αž“αŸ„αŸ‡αž™αžΎαž„αž“αžΉαž„αž˜αž·αž“αž’αŸ’αžœαžΎαžœαžΆαžŠαŸ„αž™αžŠαŸƒαžŠαŸ„αž™αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžˆαŸ’αž˜αŸ„αŸ‡αž‡αž½αžšαžˆαžš αž“αž·αž„αž”αž“αŸ’αžαŸ‚αž˜αž’αžΆαžαž»αžαŸ’αž˜αžΈαžαžΆαž˜αžšαž™αŸˆαž§αž”αž€αžšαžŽαŸαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž˜αžΎαž›αžƒαžΎαž‰αž˜αž½αž™αž…αŸ†αž“αž½αž“αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαžΏαž„αž”αŸ‚αž”αž“αŸαŸ‡ αž™αžΎαž„αž”αž„αŸ’αž€αžΎαžαžŸαŸ’αž‚αŸ’αžšαžΈαž”αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€ - αž€αžΆαžšαž’αŸ’αžœαžΎαž…αŸ†αžŽαžΆαž€αžŸαŸ’αžšαž»αž€ αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž‚αŸ’αžšαž”αŸ‹αž‘αžΈαž€αž“αŸ’αž›αŸ‚αž„ αž“αž·αž„αž‚αŸ’αžšαž”αŸ‹αž˜αž‡αŸ’αžˆαžŠαŸ’αž‹αžΆαž“αžαžΆαž˜αžšαž”αŸ€αž”αžŠαžΌαž…αž‚αŸ’αž“αžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž›αž‘αŸ’αž’αž•αž›αž‘αžΌαž‘αŸ… αž“αž·αž„αž’αžΆαž…αž™αž›αŸ‹αž”αžΆαž“αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž·αž…αŸ’αž…αž€αžΆαžšαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αžŠαžΌαž…αž‡αžΆαž€αžΆαžšαž”αŸ†αž–αŸαž‰αž‚αž˜αŸ’αžšαŸ„αž„αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž‘αž·αž“αŸ’αž“αž“αŸαž™ αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž‚αž½αžšαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαŸ”

αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž§αž‘αžΆαž αžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„ PHP, Laravel, Laradock, Docker-Compose

PS αž§αž‘αžΆαž αžšαžŽαŸαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž‘αžΎαž„αž“αŸ…αž›αžΎ MacOS αŸ” αž–αž½αž€αž‚αŸαž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž€αŸαžŸαž˜αžšαž˜αŸ’αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž›αžΈαž“αž»αž…αž•αž„αžŠαŸ‚αžšαŸ” αž’αŸ’αž“αž€β€‹αž”αŸ’αžšαžΎ Windows αž’αžαŸ‹αž‘αŸ„αžŸβ€‹αž±αŸ’αž™β€‹αžαŸ’αž‰αž»αŸ† αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αžαŸ’αž‰αž»αŸ†β€‹αž˜αž·αž“β€‹αž”αžΆαž“β€‹αž’αŸ’αžœαžΎβ€‹αž€αžΆαžšβ€‹αž‡αžΆαž˜αž½αž™ Windows αž™αžΌαžšβ€‹αž˜αž€β€‹αž αžΎαž™αŸ”

αž…αžΌαžšαžŸαŸ’αžšαž˜αŸƒαž˜αžΎαž›αžŸαŸ’αžαžΆαž“αž—αžΆαž–αžŠαŸ‚αž›αž™αžΎαž„αž˜αž·αž“αž˜αžΆαž“αž€αŸ†αžŽαŸ‚ PHP αžŽαžΆαž˜αž½αž™αžŠαŸ‚αž›αž”αžΆαž“αžŠαŸ†αž‘αžΎαž„αž“αŸ…αž›αžΎαž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαžšαž”αžŸαŸ‹αž™αžΎαž„ αž αžΎαž™αž‚αŸ’αž˜αžΆαž“αž’αŸ’αžœαžΈαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ”
αžŠαŸ†αž‘αžΎαž„αž€αŸ†αžŽαŸ‚αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž”αŸ†αž•αž»αžαž“αŸƒ docker αž“αž·αž„ docker-compose αŸ” (αž“αŸαŸ‡αž’αžΆαž…αžšαž€αž”αžΆαž“αž“αŸ…αž›αžΎαž’αŸŠαžΈαž“αž’αžΊαžŽαž·αž)

docker -v && 
docker-compose -v

αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž“αž·αž„αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž–αžŽαŸŒαžαŸ€αžœαž”αŸƒαžαž„ αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαž”αŸ‹αž–αžΈαžšαž€αžαŸ’αžαžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž§αž‘αžΆαž αžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„ php αž“αž·αž„ docker

1. αžŠαžΆαž€αŸ‹ αž‘αžΆαžšαŸ‰αžΆαžŠαž€αŸ‹

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

αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž“αž·αž„αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž–αžŽαŸŒαžαŸ€αžœαž”αŸƒαžαž„ αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαž”αŸ‹αž–αžΈαžšαž€αžαŸ’αžαžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž§αž‘αžΆαž αžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„ php αž“αž·αž„ docker

αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„ Laradock αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž“αž·αž™αžΆαž™αžαžΆαžœαžΆαž‡αžΆαžšαž”αžŸαŸ‹αžαŸ’αžšαž‡αžΆαž€αŸ‹αžαŸ’αž›αžΆαŸ†αž„αžŽαžΆαžŸαŸ‹αžŠαŸ‚αž›αž˜αžΆαž“αž’αž»αž„αž“αž·αž„αžšαž”αžŸαŸ‹αž‡αŸ†αž“αž½αž™αž‡αžΆαž…αŸ’αžšαžΎαž“αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž˜αž·αž“αžŽαŸ‚αž“αžΆαŸ†αž±αŸ’αž™αž”αŸ’αžšαžΎ Laradock αž”αŸ‚αž”αž“αŸαŸ‡αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž€αžΆαžšαž€αŸ‚αž”αŸ’αžšαŸ‚αž“αŸ…αž€αŸ’αž“αž»αž„αž•αž›αž·αžαž€αž˜αŸ’αž˜αž‘αŸ αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αžœαžΆαž›αŸ‚αž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαžαž‘αŸ…αž‘αŸ€αžαŸ” αžœαžΆαž‡αžΆαž€αžΆαžšαž”αŸ’αžšαžŸαžΎαžšαž‡αžΆαž„αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž’αž»αž„αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž§αž‘αžΆαž αžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„ Laradock αžœαžΆαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž±αŸ’αž™αž”αŸ’αžšαžŸαžΎαžšαž‡αžΆαž„αž˜αž»αž“ αž–αžΈαž–αŸ’αžšαŸ„αŸ‡αž‚αŸ’αž˜αžΆαž“αž“αžšαžŽαžΆαž˜αŸ’αž“αžΆαž€αŸ‹αžαŸ’αžšαžΌαžœαž€αžΆαžšαž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αžŠαŸ‚αž›αž˜αžΆαž“αž“αŸ…αž–αŸαž›αžαŸ‚αž˜αž½αž™αž“αŸ„αŸ‡αž‘αŸαŸ”

2. αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ Laradock αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž”αžŸαŸ‹αž™αžΎαž„αŸ”

cd laradock && 
cp env-example .env

αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž“αž·αž„αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž–αžŽαŸŒαžαŸ€αžœαž”αŸƒαžαž„ αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαž”αŸ‹αž–αžΈαžšαž€αžαŸ’αžαžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž§αž‘αžΆαž αžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„ php αž“αž·αž„ docker

្.៑. αž”αžΎαž€αžαž habr (αžαžαž˜αŸαžŠαŸ‚αž› laradock αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ’αž›αžΌαž“) αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αž·αž–αž“αŸ’αž’αž˜αž½αž™αž…αŸ†αž“αž½αž“αŸ” (αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈ PHPStorm αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†)

αž“αŸ…αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αž“αŸαŸ‡ αž™αžΎαž„αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αžŠαžΆαž€αŸ‹αžˆαŸ’αž˜αŸ„αŸ‡αž‚αž˜αŸ’αžšαŸ„αž„αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ”

αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž“αž·αž„αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž–αžŽαŸŒαžαŸ€αžœαž”αŸƒαžαž„ αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαž”αŸ‹αž–αžΈαžšαž€αžαŸ’αžαžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž§αž‘αžΆαž αžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„ php αž“αž·αž„ docker

្.្. αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžšαžΌαž”αž—αžΆαž–αž€αž“αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎαž€αžΆαžšαŸ” (αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αžšαžΌαž”αž—αžΆαž–αž“αžΉαž„αž…αŸ†αžŽαžΆαž™αž–αŸαž›αžαŸ’αž›αŸ‡αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαžΆαž„αžŸαž„αŸ‹)
αž€αž“αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎαž€αžΆαžšαž‚αžΊαž‡αžΆαžšαžΌαž”αž—αžΆαž–αžŠαŸ‚αž›αž”αžΆαž“αžšαŸ€αž”αž…αŸ†αž‡αžΆαž–αž·αžŸαŸαžŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž€αŸ’αžšαž”αžαŸαžŽαŸ’αžŒαž€αŸ’αž“αž»αž„αž“αžΆαž˜αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαŸ”

αž™αžΎαž„αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž’αž»αž„αžŠαŸ„αž™αž”αŸ’αžšαžΎ

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

αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž“αž·αž„αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž–αžŽαŸŒαžαŸ€αžœαž”αŸƒαžαž„ αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαž”αŸ‹αž–αžΈαžšαž€αžαŸ’αžαžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž§αž‘αžΆαž αžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„ php αž“αž·αž„ docker

្.៣. αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ Laravel

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

αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž“αž·αž„αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž–αžŽαŸŒαžαŸ€αžœαž”αŸƒαžαž„ αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαž”αŸ‹αž–αžΈαžšαž€αžαŸ’αžαžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž§αž‘αžΆαž αžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„ php αž“αž·αž„ docker

្.ៀ. αž”αž“αŸ’αž‘αžΆαž”αŸ‹β€‹αž–αžΈβ€‹αžŠαŸ†αž‘αžΎαž„β€‹αžšαž½αž… αž™αžΎαž„β€‹αž–αž·αž“αž·αžαŸ’αž™β€‹αž˜αžΎαž›β€‹αžαžΆβ€‹αžαžΎβ€‹αžαžβ€‹αžŠαŸ‚αž›β€‹αž˜αžΆαž“β€‹αž‚αž˜αŸ’αžšαŸ„αž„β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž”αž„αŸ’αž€αžΎαžβ€‹αž‘αžΎαž„β€‹αž αžΎαž™β€‹αž¬β€‹αž’αžαŸ‹β€‹αŸ”

ls
exit
docker-compose down

αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž“αž·αž„αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž–αžŽαŸŒαžαŸ€αžœαž”αŸƒαžαž„ αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαž”αŸ‹αž–αžΈαžšαž€αžαŸ’αžαžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž§αž‘αžΆαž αžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„ php αž“αž·αž„ docker

្.αŸ₯. αž…αžΌαžšαž™αžΎαž„αžαŸ’αžšαž›αž”αŸ‹αž‘αŸ… PHPStorm αž αžΎαž™αž€αŸ†αžŽαžαŸ‹αž•αŸ’αž›αžΌαžœαžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž‘αŸ…αž€αžΆαž“αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ laravel αžšαž”αžŸαŸ‹αž™αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžš .env αŸ”

αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž“αž·αž„αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž–αžŽαŸŒαžαŸ€αžœαž”αŸƒαžαž„ αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαž”αŸ‹αž–αžΈαžšαž€αžαŸ’αžαžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž§αž‘αžΆαž αžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„ php αž“αž·αž„ docker

3. αž”αž“αŸ’αžαŸ‚αž˜αž€αžΌαžŠαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‘αŸ… Git αŸ”

αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžŠαžΌαž…αž“αŸαŸ‡αž™αžΎαž„αž“αžΉαž„αž”αž„αŸ’αž€αžΎαžαžƒαŸ’αž›αžΆαŸ†αž„αž“αŸ…αž›αžΎ Github (αž¬αž€αž“αŸ’αž›αŸ‚αž„αž•αŸ’αžŸαŸαž„αž‘αŸ€αž) αŸ” αžαŸ„αŸ‡αž‘αŸ…αžαž habr αž“αŸ…αž€αŸ’αž“αž»αž„ terminal αž αžΎαž™αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΌαžŠαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ”

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

αž…αžΌαžšαž™αžΎαž„αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžαžΆαžαžΎαž’αŸ’αžœαžΈαŸ—αž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αžŸαŸ’αžαž·αžαž€αŸ’αž“αž»αž„αž›αŸ†αžŠαžΆαž”αŸ‹αž¬αž’αžαŸ‹

αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž“αž·αž„αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž–αžŽαŸŒαžαŸ€αžœαž”αŸƒαžαž„ αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαž”αŸ‹αž–αžΈαžšαž€αžαŸ’αžαžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž§αž‘αžΆαž αžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„ php αž“αž·αž„ docker

αžŠαžΎαž˜αŸ’αž”αžΈαž—αžΆαž–αž„αžΆαž™αžŸαŸ’αžšαž½αž› αžαŸ’αž‰αž»αŸ†αžŸαžΌαž˜αžŽαŸ‚αž“αžΆαŸ†αž±αŸ’αž™αž”αŸ’αžšαžΎαž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αžŠαŸ‚αž›αž˜αžΎαž›αžƒαžΎαž‰αž˜αž½αž™αž…αŸ†αž“αž½αž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Git αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† GitKraken. (αž“αŸαŸ‡αž‚αžΊαž‡αžΆαžαŸ†αžŽαž™αŸ„αž„)

4. αžαŸ„αŸ‡αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜!

αž˜αž»αž“αž–αŸαž›αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ αžαŸ’αžšαžΌαžœαž”αŸ’αžšαžΆαž€αžŠαžαžΆαž‚αŸ’αž˜αžΆαž“αž’αŸ’αžœαžΈαž–αŸ’αž™αž½αžšαž“αŸ…αž›αžΎαž…αŸ’αžšαž€ 80 αž“αž·αž„ 443 αž‘αŸαŸ”

docker-compose up -d nginx php-fpm

αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž“αž·αž„αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž–αžŽαŸŒαžαŸ€αžœαž”αŸƒαžαž„ αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαž”αŸ‹αž–αžΈαžšαž€αžαŸ’αžαžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž§αž‘αžΆαž αžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„ php αž“αž·αž„ docker

αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž αžΎαž™ αž‚αž˜αŸ’αžšαŸ„αž„αžšαž”αžŸαŸ‹αž™αžΎαž„αž˜αžΆαž“αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜ 3 αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αž–αžΈαž‚αŸ’αž“αžΆαŸ–

  • nginx - αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž‚αŸαž αž‘αŸ†αž–αŸαžš
  • php-fpm - php αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‘αž‘αž½αž›αžŸαŸ†αžŽαžΎαž–αžΈαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž‚αŸαž αž‘αŸ†αž–αŸαžš
  • αž€αž“αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎαž€αžΆαžš - php αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ

αž“αŸ…αž–αŸαž›αž“αŸαŸ‡ αž™αžΎαž„αžŸαž˜αŸ’αžšαŸαž…αž”αžΆαž“αžαžΆ αž™αžΎαž„αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž˜αž½αž™αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž“αžΉαž„ 4 αž…αŸ†αžŽαž»αž…αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜ 12 αž‚αžΊ:

1. αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž€αžΌαžŠ - αž€αžΌαžŠαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„αž˜αž½αž™ (αž…αŸ†αžŽαžΆαŸ†αžαžΌαž…αŸ– αžœαžΆαž’αžΆαž…αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜ docker αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž‚αž˜αŸ’αžšαŸ„αž„ laravel αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž˜αž·αž“αžŸαŸ†αžαžΆαž“αŸ‹αž‘αŸ)αŸ”

2. αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™ - αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžšαž”αžŸαŸ‹αž™αžΎαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαž™αŸ‰αžΆαž„αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ application/composer.json αž“αž·αž„αž€αŸ’αž“αž»αž„ Dockerfile αž“αžΈαž˜αž½αž™αŸ—αž“αŸƒαž€αž»αž„αžαžΊαž“αŸαžšαž“αžΈαž˜αž½αž™αŸ—αŸ”

3. αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž‚αžΆαŸ†αž‘αŸ’αžš - αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž“αžΈαž˜αž½αž™αŸ— (php-fom, nignx, workspace) αžšαžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž‡αžΈαžœαž·αžαžšαž”αžŸαŸ‹αžαŸ’αž›αž½αž“ αž αžΎαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž—αŸ’αž‡αžΆαž”αŸ‹αž–αžΈαžαžΆαž„αž€αŸ’αžšαŸ… αž αžΎαž™αž“αŸ…αž–αŸαž›αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž˜αž½αž™ αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž“αžΉαž„αž˜αž·αž“αžšαž„αž•αž›αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹αž‘αŸαŸ”

4. αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš - αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž“αžΈαž˜αž½αž™αŸ—αž‚αžΊαž‡αžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž˜αž½αž™αŸ” αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž“αžΈαž˜αž½αž™αŸ—αž˜αž·αž“αžšαž€αŸ’αžŸαžΆαžŸαŸ’αžαžΆαž“αž—αžΆαž–αž•αŸ’αž‘αŸƒαž€αŸ’αž“αž»αž„αž‘αŸαŸ”

5. αž€αžΆαžšαž—αŸ’αž‡αžΆαž”αŸ‹αž…αŸ’αžšαž€

docker ps

αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž“αž·αž„αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž–αžŽαŸŒαžαŸ€αžœαž”αŸƒαžαž„ αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαž”αŸ‹αž–αžΈαžšαž€αžαŸ’αžαžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž§αž‘αžΆαž αžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„ php αž“αž·αž„ docker

αžŠαžΌαž…αžŠαŸ‚αž›αž™αžΎαž„αž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰ αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž“αžΈαž˜αž½αž™αŸ—αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸ…αž›αžΎαž…αŸ’αžšαž€αžšαž”αžŸαŸ‹αžœαžΆ αž αžΎαž™αž’αžΆαž…αž…αžΌαž›αž”αŸ’αžšαžΎαž”αžΆαž“αž…αŸ†αž–αŸ„αŸ‡αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ”

6. αž—αžΆαž–αžŸαŸ’αžšαž”αž‚αŸ’αž“αžΆ

Docker αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž™αžΎαž„αž”αž„αŸ’αž€αžΎαžαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αžΆαž…αŸ’αžšαžΎαž“αž“αŸƒαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αžŠαžΌαž…αž‚αŸ’αž“αžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αžαž»αž›αŸ’αž™αž—αžΆαž–αž€αžΆαžšαž•αŸ’αž‘αž»αž€αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αžšαžœαžΆαž„αž–αž½αž€αžœαžΆαŸ”

αž…αžΌαžšαž™αžΎαž„αž”αž‰αŸ’αžˆαž”αŸ‹αž€αž»αž„αžαžΊαž“αŸαžš αž αžΎαž™αžšαžαŸ‹αžœαžΆαžαžΆαž˜αž‘αž„αŸ‹αž‡αžΆαžαž· --αžαŸ’αž“αžΆαž

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

αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž“αž·αž„αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž–αžŽαŸŒαžαŸ€αžœαž”αŸƒαžαž„ αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαž”αŸ‹αž–αžΈαžšαž€αžαŸ’αžαžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž§αž‘αžΆαž αžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„ php αž“αž·αž„ docker

αžŠαžΌαž…αžŠαŸ‚αž›αž™αžΎαž„αž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰ αž…αŸ’αž”αžΆαž”αŸ‹αž…αž˜αŸ’αž›αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαž php-fpm container αŸ” αž™αžΎαž„αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž’αŸ’αžœαžΈαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž’αž»αž„αž“αŸαŸ‡αž‘αŸαŸ” αž™αžΎαž„αž€αŸαž”αž“αŸ’αžαž…αžΌαž›αž”αŸ’αžšαžΎαžœαžΆαž“αŸ…αž›αžΎαž…αŸ’αžšαž€ 9000 αž αžΎαž™ Docker αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αžΆαžšαž•αŸ’αž‘αž»αž€αžšαžœαžΆαž„αž€αž»αž„αžαžΊαž“αŸαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž™αžΎαž„αŸ”

7. αž–αž·αž€αžΆαžšαž—αžΆαž– - αž€αž»αž„αžαžΊαž“αŸαžšαž“αžΈαž˜αž½αž™αŸ—αž’αžΆαž…αžŸαž˜αŸ’αž›αžΆαž”αŸ‹αžŠαŸ„αž™αž˜αž·αž“αž”αž„αŸ’αž€αž‚αŸ’αžšαŸ„αŸ‡αžαŸ’αž“αžΆαž€αŸ‹αžŠαž›αŸ‹αž’αŸ’αž“αž€αžŠαž‘αŸƒαŸ” αž€αžΆαžšαž”αž‰αŸ’αžˆαž”αŸ‹ αž¬αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž€αž»αž„αžαžΊαž“αŸαžšαž‘αžΎαž„αžœαž·αž‰αž“αžΉαž„αž˜αž·αž“αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹αžŠαž›αŸ‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ†αž‘αž»αž„αž–αŸαž›αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αžΆαž”αž“αŸ’αžαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž“αŸ„αŸ‡αž‘αŸαŸ” αž’αž»αž„αž“αžΈαž˜αž½αž™αŸ—αž€αŸαž’αžΆαž…αž›αžΎαž€αž”αžΆαž“αž‚αŸ’αžšαž”αŸ‹αž–αŸαž›αž•αž„αžŠαŸ‚αžšαŸ”

8. αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ/αž—αžΆαž–αžŸαŸ’αž˜αžΎαž‚αŸ’αž“αžΆαž“αŸƒαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš - αž”αžšαž·αžŸαŸ’αžαžΆαž“αžšαž”αžŸαŸ‹αž™αžΎαž„αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‚αžΊαžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ” αžŠαŸ„αž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž“αŸ…αž€αŸ’αž“αž»αž„αž•αž›αž·αžαž€αž˜αŸ’αž˜ αž’αŸ’αž“αž€αž“αžΉαž„αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž’αŸ’αžœαžΈαž“αŸ…αž€αŸ’αž“αž»αž„αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž‘αŸαŸ” αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž“αžΉαž„αž•αŸ’αž’αŸ‚αž€αž›αžΎ Docker αžαžΆαž˜αžšαž”αŸ€αž”αžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ”

9. αž€αžΆαžšαž€αžΆαž”αŸ‹αžˆαžΎ β€” αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž»αž„αžαžΊαž“αŸαžšαž‘αžΆαŸ†αž„αž“αŸαŸ‡αž…αžΌαž›αž‘αŸ…αž€αžΆαž“αŸ‹αž€αžΆαžšαž•αŸ’αžŸαžΆαž™ αž αžΎαž™αž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž»αž„αžŸαžΌαž› Docker αŸ” (αž€αŸ’αž“αž»αž„β€‹αž€αžšαžŽαžΈβ€‹αž“αŸαŸ‡ αžαžΆαž˜β€‹αž–αž·αžβ€‹αž‡αžΆαž˜αž½αž™β€‹αž’αž»αž„β€‹αž•αž›αž·αžβ€‹αž“αŸ…β€‹αž•αŸ’αž‘αŸ‡β€‹αž•αŸ’αžŸαŸαž„β€‹αž‘αŸ€αž αž“αŸαŸ‡β€‹αž”αŸ’αžšαž αŸ‚αž›β€‹αž‡αžΆβ€‹αž˜αž·αž“β€‹αž˜αŸ‚αž“β€‹αž‡αžΆβ€‹αž€αžšαžŽαžΈβ€‹αž‘αŸβ€‹αž”αŸ’αžšαžŸαž·αž“β€‹αž”αžΎβ€‹αž’αŸ’αž“αž€β€‹αž˜αž·αž“β€‹αž”αžΆαž“β€‹αžαŸ‚αžšαž€αŸ’αžŸαžΆβ€‹αžœαžΆ)

 docker-compose logs -f

αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž“αž·αž„αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž–αžŽαŸŒαžαŸ€αžœαž”αŸƒαžαž„ αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαž”αŸ‹αž–αžΈαžšαž€αžαŸ’αžαžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž§αž‘αžΆαž αžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„ php αž“αž·αž„ docker

αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αžΆαž“αž€αžΆαžšαž…αžΆαž”αŸ‹αž”αžΆαž“αžαžΆαžαž˜αŸ’αž›αŸƒαž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αž“αŸ…αž€αŸ’αž“αž»αž„ PHP αž“αž·αž„ Nginx αž€αŸαžŸαžšαžŸαŸαžšαž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž‘αŸ…αž―αž€αžŸαžΆαžšαž˜αž½αž™αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ†αž–αŸαž‰αž€αžαŸ’αžαžΆαž‘αžΆαŸ†αž„ ៑្ αž‚αžΊαž…αžΆαŸ†αž”αžΆαž…αŸ‹ αž•αŸ’αžαžΆαž…αŸ‹ αžŸαžšαžŸαŸαžšαž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž‘αŸ…αž―αž€αžŸαžΆαžšαž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž“αŸƒαž€αž»αž„αžαžΊαž“αŸαžšαž“αžΈαž˜αž½αž™αŸ—αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αŸ”

Docker αž€αŸαž•αŸ’αžαž›αŸ‹αž“αžΌαžœαžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž•αŸ’αž‰αžΎαž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ‚αžŠαžΎαž˜αŸ’αž”αžΈ stdout αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αž‘αŸαž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ‚αž˜αž‘αžΆαŸ†αž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαžΏαž„αžŠαžΌαž…αž‡αžΆ graylog αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž”αžšαžΆαž”αŸ‹αžαžΆαž„αž›αžΎαŸ” αž αžΎαž™αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„ greylog αž™αžΎαž„αž’αžΆαž…αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αžαžΆαž˜αžŠαŸ‚αž›αž™αžΎαž„αž–αŸαž‰αž…αž·αžαŸ’αž αž αžΎαž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž”αžŸαŸ‹αž™αžΎαž„αž“αžΉαž„αž˜αž·αž“αž€αžαŸ‹αžŸαŸ†αž‚αžΆαž›αŸ‹αžœαžΆαžαžΆαž˜αž˜αž’αŸ’αž™αŸ„αž”αžΆαž™αžŽαžΆαž˜αž½αž™αž‘αžΎαž™αŸ”

10. αž€αž·αž…αŸ’αž…αž€αžΆαžšαžšαžŠαŸ’αž‹αž”αžΆαž› - αžšαžΆαž›αŸ‹αž€αž·αž…αŸ’αž…αž€αžΆαžšαžšαžŠαŸ’αž‹αž”αžΆαž›αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαŸ„αž™ laravel αž’αžšαž‚αž»αžŽαž…αŸ†αž–αŸ„αŸ‡αž§αž”αž€αžšαžŽαŸαžŸαž·αž”αŸ’αž”αž€αžšαž™αŸ‰αžΆαž„αž–αž·αžαž”αŸ’αžšαžΆαž€αžŠ αžŠαžΌαž…αžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αžαŸ’αžαžΆ 12 αž…αž„αŸ‹αž”αžΆαž“αŸ”

αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž”αž„αŸ’αž αžΆαž‰αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž˜αž½αž™αž…αŸ†αž“αž½αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αŸ”
αž™αžΎαž„αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž’αž»αž„αŸ”

 
docker-compose exec workspace bash
php artisan list

αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž“αž·αž„αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž–αžŽαŸŒαžαŸ€αžœαž”αŸƒαžαž„ αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαž”αŸ‹αž–αžΈαžšαž€αžαŸ’αžαžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž§αž‘αžΆαž αžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„ php αž“αž·αž„ docker

αž₯αž‘αžΌαžœαž“αŸαŸ‡αž™αžΎαž„αž’αžΆαž…αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŽαžΆαž˜αž½αž™αŸ” (αžŸαžΌαž˜αž…αŸ†αžŽαžΆαŸ†αžαžΆαž™αžΎαž„αž˜αž·αž“αž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™ αž“αž·αž„αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž‘αŸ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž–αžΆαž€αŸ‹αž€αžŽαŸ’αžαžΆαž›αž“αŸƒαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž“αžΉαž„αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž‘αŸ αž–αŸ’αžšαŸ„αŸ‡αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž…αž“αžΆαž‘αžΎαž„αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ αž“αž·αž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™)αŸ”

αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž“αž·αž„αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž–αžŽαŸŒαžαŸ€αžœαž”αŸƒαžαž„ αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαž”αŸ‹αž–αžΈαžšαž€αžαŸ’αžαžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž§αž‘αžΆαž αžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„ php αž“αž·αž„ docker

11. αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ αž“αž·αž„ ៑αŸ₯០០ αŸ” αž€αžŸαžΆαž„, αžŠαŸ„αŸ‡αž›αŸ‚αž„, αžšαžαŸ‹

αžαŸ’αž‰αž»αŸ†αž…αž„αŸ‹αž§αž‘αŸ’αž‘αž·αžŸαž•αŸ’αž“αŸ‚αž€αž“αŸαŸ‡αž‘αŸ… Blue-Green Deployment αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž”αŸ’αžšαŸ‚αž‘αŸ…αž‡αžΆαž‘αžΌαž›αŸ†αž‘αžΌαž›αžΆαž™αž–αŸαž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αŸ” αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αžŸαžšαžŸαŸαžšαž’αžαŸ’αžαž”αž‘αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αž’αŸ†αž–αžΈαžšαžΏαž„αž“αŸαŸ‡αŸ”

αžŸαžšαž»αž”αž˜αž€ αž‚αŸ†αž“αž·αžαž‚αžΊαž•αŸ’αž’αŸ‚αž€αž›αžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’ CI/CD αžŠαžΌαž…αž‡αžΆ Jenkins ΠΈ Gitlab CI. αž“αŸ…αž€αŸ’αž“αž»αž„αž‘αžΆαŸ†αž„αž–αžΈαžš αž’αŸ’αž“αž€αž’αžΆαž…αž€αŸ†αžŽαžαŸ‹αž’αžαŸαžšαž”αžšαž·αžŸαŸ’αžαžΆαž“αžŠαŸ‚αž›αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž”αžšαž·αžŸαŸ’αžαžΆαž“αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™αŸ” αžŠαžΌαž…αŸ’αž“αŸ„αŸ‡αž αžΎαž™αž€αŸ’αž“αž»αž„αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž“αŸαŸ‡αž…αŸ†αžŽαž»αž… c αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ†αž–αŸαž‰ αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’.

αž“αž·αž„αž…αŸ†αžŽαž»αž…αž’αŸ†αž–αžΈ αž€αžŸαžΆαž„, αžŠαŸ„αŸ‡αž›αŸ‚αž„, αžšαžαŸ‹ αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαŸ„αž™αž˜αž»αžαž„αžΆαžšαžŠαŸ‚αž›αž—αŸ’αž‡αžΆαž”αŸ‹αž˜αž€αž‡αžΆαž˜αž½αž™αžˆαŸ’αž˜αŸ„αŸ‡ αž”αŸ†αž–αž„αŸ‹αž”αž„αŸ’αž αžΌαžš.

αž”αŸ†αž–αž„αŸ‹αž”αž„αŸ’αž αžΌαžš αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž”αŸ‚αž„αž…αŸ‚αž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž‡αžΆαžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αž‡αžΆαž…αŸ’αžšαžΎαž“ αžŠαŸ„αž™αž‚αžΌαžŸαž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž–αžΈαžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αž“αŸƒαž€αžΆαžšαž‡αž½αž”αž”αŸ’αžšαž‡αž»αŸ† αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™ αž“αž·αž„αž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αŸ” αž•αž„αžŠαŸ‚αžšαž“αŸ…αž€αŸ’αž“αž»αž„ Pipeline αž’αŸ’αž“αž€αž’αžΆαž…αž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€ αž“αž·αž„αž–αž·αžαž‡αžΆαž’αŸ’αžœαžΈαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ” αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž§αž”αž€αžšαžŽαŸαžŠαŸ‚αž›αž˜αžΆαž“αžŸαž€αŸ’αžαžΆαž“αž»αž–αž›αž‚αŸ’αž˜αžΆαž“αžŠαŸ‚αž“αž€αŸ†αžŽαžαŸ‹αŸ”

αž›αŸαžαž€αžΌαžŠαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αžΊαž“αŸ… Github.
αž€αž»αŸ†αž—αŸ’αž›αŸαž…αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž˜αŸ‰αžΌαžŒαž»αž›αžšαž„αž“αŸ…αž–αŸαž›αž€αŸ’αž›αžΌαž“αžƒαŸ’αž›αžΆαŸ†αž„αž“αŸαŸ‡αŸ”

PS: αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸαŸ‡αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž‡αžΆαž˜αž½αž™αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž•αŸ’αžŸαŸαž„αŸ— αž“αž·αž„αž—αžΆαžŸαžΆαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ” αžšαžΏαž„αž…αŸ†αž”αž„αž‚αžΊαžαžΆαžαŸ’αž›αžΉαž˜αžŸαžΆαžšαž˜αž·αž“αžαž»αžŸαž‚αŸ’αž“αžΆαž‘αŸαŸ”

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹