á¨áŞáááąá áááŁá áááá ἠááłáĽ á áááŁáá á áááłáá°á á˛ááźá ᨠInventos "á¨áááľ áĽá á¨áá¨áŤ áá°áľ á¨áśá¨á + ááľáἠCI"
á Docker + Gitlab CI áá á¨á°áá°á¨á° á¨áĽáľááľ áĽá á¨áá°á áá°áľá á°ááŁáŤá áááľá¨á áá áĽá¨ááአáŤá áĽá áá áá°á¨áłá áĽáŤááá˝á áá áááᢠá¨áľ áááá? áĽáá´áľ áá°áŤááľ ááťáá? áĽáá´áľ ááá¨á ááťáá?
áá ááᣠáĽáŠ áá ááááŤáąá áśá¨á áĽá ááľáἠá˛á áá á áá áá áľá áááľ áĽá á¨áá°á áá°áľ á á°ááᨠááááľ ááááŤáᢠáŞáááą áŤáą á¨2017 ááᢠáĽá áĽáá°ááľá á á¨áá ááᣠáá°á¨áłá ᣠáᴠᣠááłáĽ ᣠá¨á á ááá áááľ ááá áá˝ááá˘
áá áŤáľáŁá áĽáŁáŤá˝á á¨áľáᡠá áłá˝á˘
áľá á áááłáá°á á˛ááźá ááᢠá Inventos áá á¨áá°áŤáᢠáśá¨áá áľááá áá áŤááá áááľ áĽá á áŠáŁááŤá ááľáĽ áŁá ááŽáááśá˝ áá ááľ á ááľ áĽáá´áľ á°ááŁáŤá áĽáá°ááá°áá áĽáááááłááá˘
á¨ááá áľ á ááŤá¨áĽ áááľáĄ áśá¨á áĽá ááľáἠá˛á á á áá áá á¨áĽáľááľ áá°áľá˘
áľá áśá¨á ááá°áá ááááᏠááᢠá ááááŞáŤá áŞáááľ áá Docker in Development á ááᢠáá˝áá˝ áá áĽáť áá á á¨á°á ááááᢠáśá¨áá á¨á°á áá á°áŤá°áá˝ ááĽá á¨2-3 á°áá˝ áá áᢠááľ á ááľ, áááľ á°áá áĽá áľáá˝ áá° ááľ á°ááá. áá° áĽá á ááá
á áá áŞáááľ ááľáĽ áá áááá? áá á áááľ áŹá áĽáá°á°á á°áĽáᣠáá á áááľ á˝ááŽá˝á áĽáá°ááłá áááłá˝áá áĽááŤááááᢠá ááá áŚáł ááá á ááá á¨á ááá áá áĽáá˛ááĽá á°áá áśááłáá˘
ááááŤá˝ááĄ- á áĽáá˝á ááááľ á¨ááá˝ááá ááá áá áá°áĽ á áľááá˘
áá á˝ááŽá˝ áĽá¨ááłá áá?
á á ááľ áŠáŁá፠ááľáĽ áĽá áĄáľáá˝ á˛ááŠ, ááŽááŤáá á¨á፠áááá፠áá. ááŽááŤáá á¨á ááľ ááŽáááľ á ááĽáś áá°áá°á áá ááá ááŽáááľ á¨áá°áĽá áľ á°á¨ááá˝ á áá˘
á¨ááŽááŤá á áľáŤáá á ááĽááľ áĽáá˛á¨áłá á¨ááŽáááąá ááá áŽáľ ááá¨áľ áĽá á áŤáŁá˘áá á á°áťá ááĽááľ ááľááá áŤáľááááá, áá á á¨áá á ááŽáááľ á˝ááŽá˝ ááááłáľ á¨á áá áĽáá˛áááłááľ áŤáľá˝ááá.
áĽááá áá, á¨áŁáś á¨áááŠ, á¨ááŤá á ááŽáááą ááľáĽ áľáá˝ á°ááśá˝ á á. áĽáá´áľ áááá áĽáá°ááťá áá¨á á¨áááá ááľáŽ áá á°áŞáá˝ áĽáť ááᢠá°áŤá°áá˝ á á ááľ ááá á áááľ áááľ ááľáĽ á¨áľáŤ áŚáłá¸áá á áŤáłá¸á áŤáááá. áá áá áááá á áśá¨áá á°á áááá˘
á¨áááĽáá ááááŤáľ á áááľ ááľáĽ á¨á áá áśá˝ áá°á áááľ áá. á áĽá áááľáŁ ááá˘áá˝ áááá á áľááŤáá áááľáłáᢠá áĽáŤááłááą á ááľá°áá ááłá, áĽá á፠ááĽáˇá, áááłá, vasya.dev. á¨áĽáą ááĽá á¨á°ááá á áá¨á¤áą ááľáŤ áá, á¨áĽáą á፠petya.dev áá. áá áá á¨á፠áľá á áá áá áľá¨-áá˝ ááá á ááłááľ á¨áľáááąá á áŤá áŤááááá˘
áľáááą á˛áŤáľá áĽá áĽááá á¨á፠áľáá˝ áá° áá áŽá˝ ááľáĽ áááŁáľ á˛áááŠ, á¨ááŤá á¨áááľ á áŤáŁá˘ áááľ áááłá áĽá á¨áŁá˘áŤá ááááľ áĽáá°áá ááťáá.
á áá¨á ááľ á
áá
áśá˝á á°ááłáłá ááᢠá ááľ á°á á á°á
áááľ áá á áá¨áá
á áĽá á áŁáś root á¨ááá áá áá°áŤáᢠá ááŤá á°á¨á MySQL á ááľ á°á á¨ááá áá á áá á¨ááá áá 123 áá á°áááˇáᢠáĽá áá áłáłá¤á áá
á áĽáá° ááá˘á ááá áááľ áĽá¨á°ááá ááᢠá ááľ á°á á áľá°áŤáááᣠá¨áá á°á á ááááŠá á ááľá°áŤá¨ááᢠá ááľ ááááľ á¨áá¨áŤ áá
á¨áľ áľááᣠáá´áá˝ áá áŠá˘ .gitignore
áĽá áĽáŤááłááą ááᢠá¨ááἠááłáá ááŤá áá á¨á áľ. áá
á ááááá á áľá¸á᪠á áľáááłáᢠá¨ááá˝ áááŽá˝ á á°á¨á᪠áľá á¨ááἠááł ááľáłááľ á áľááá áá. áłáłá¤á áááá á áá áľáŁ á¨ááá áá áááŁáľ á áá áľáŁ á°á áá ááááἠá áá áľáŁ á áá á¨áĽ ááá á á áá áľáŁ ááá°.
ááá á˝áá á¨á°ááŤáŠ á¨á¤á°-ááťá ááľ áľáŞáśá˝ ááᢠáĽááá áá ááᢠá¨á°ááŤáŠ ááŽáááśá˝ áá á˛á°áŤ áá¨á°áłá. á¨á ááľáľ áááľ á ááľ (á¨2017 - ed. note) á¨ááᨠá¨Legacy ááŽáááľ á áᢠá á°ááá¨á áľ ááᣠá MySQL 5.5 ááááᢠá°á¨á᪠áááá ᨠMySQL áľáŞáśá˝á ááá°áá á á¨ááááááŁá¸á áááá ááŽáááśá˝ á á, áááłá, 5.7 ááá á¨á፠á áá (á 2017 - ed. note)
ᨠMySQL áá á¨áá°áŤ ááááá á°á áĽááá á¤á°-ááťáááľ áĽááááśá˝á áĽáá°ááŤáᥠáŤáááᢠ2 áá á¨áśá˝á á ááľ áá ááŽáĽ á áŁá á áľá¸á᪠áá. á˘áŤááľáŁ á¨áľáŽ á°áá áá˝ á¨á á˛áą áłáłá¤á áá ááááááľ á˝áá á ááŁá¸áᢠáá á°áá á ááŤáł á˝ááŽá˝á áááĽáŤá.
á¨áááĽáá á˝áá á ááľ ááᢠá á áŤáŁá˘á áá˝á áá á˛á°áŤ, á¨á áŤáŁá˘ ááĽáśá˝á, á áŤáŁá˘áŤá áááá˝á, á áŤáŁá˘áŤá áŤá áá ááá. áá˝ááŽá˝ áááľá á áááá á áľ áá ááá ááľá°ááĽá á¨áá¨áááá á á ááľ áá˝á áá á áá áŤá áĽáááł áááá ááľáĽ áá. áááłá á ááŽáłáá˝á 3 ááľáĽ á¨áá á áááá á˛áá¨á áĽá ááá˘á áááá˝á áá° áľáá áááŤá á˛áŤáľááἠáĽá á¨á፠nginx ááĽáŤáá ááá˝ áááľá áľ áááá˝á áááľáłáᢠáĽáá˛á ááááą áŽáľ áá° ááŽáłáá˝á á˛áᣠááá ᨠ3 á ááááŽá˝ á á ááą áá áĽááłá ááááťáá˘
á¨áááᎠá°ááŞáľ á á áŁáŤ á áá áĽáŤá°á ááᢠáľááá á áááŹá˝ááťá˝áá áĽááľ á ááłá˝á á¨áááá áá° á ááłááľ áľááá˝ á áŤááľ áľáá¨áááᢠáá áá°áá°á áľáŤáá˝ áľáŤáá˝ á´áááááá˝á áĽáá˛ááᥠáŤáľá˝áááłá. áĽáá˛áá á ááá˘áá˝ ááŤá¨á áĽáŤá áĽá áááááśá˝á áĽááľáłáŤáá ááá áľáááá˘
Frondend-ááá˘áŁ á JS áá áĽáŤá°áᣠá Backend áá ááá á°á˝áĽá á¨ááá áááľ ááťááᢠá¨áááá ááᢠá á°áŤáᣠá áĽá áááł Ruby on Rails áĽá á Frondend áá áŁáá á áááŁáᢠáááááą á¨áá¨áááá á¤áá áá á áá áá ááá˘
áĽáá° áááťáŁ á Docker áĽááᣠá Staging áá ááĽáśá˝á áĽáá°áá áĽá á áá ááá á˝áááᢠáĽáŤááłááą ááŽááᾠᣠá áአáá᳠ᣠá¨á°áá°á á ááĽáŽá˝á áááááᢠá á áŤáᣠáá á¨áášáá á°áá¨á ááá°áĽ áĽá áá¨áĽáť ááááᣠááá á ááłááľ á áááľ á°áááá á áŤáŁá˘ áĽá ááŽáááśá˝á áááŤáľ á áľááá áá áᣠáĽáá° á¤á°-ááťáááą áĽáŞáľáŁ áĽááľá ááľ á°á˝áá ááŤáłáľáŠ áá˝ááá˘
ááłáŞáŤáá˝. áá áĽáá áááá?
- áśá¨á áŤáąá˘ Dockerfile á¨á ááľ áá°áá áŞáŤ áĽááááśá˝á ááááťáá˘
- Docker-compose á¨áĽáá Docker á áááŹá˝áá˝ áĽááśášá á¨ááŤá°áŁáľáĽ áĽá á ááá˘
- á¨ááá áŽáąá ááá¨áá¸áľ GitLab áĽáá ááááá˘
- ááľáááľ áá á°áľ GitLab-CI áĽáá ááááá˘
áŞáááą áááľ áááá˝ á ááľ.
á¨ááááŞáŤá ááá áśá¨á á ááá˘áá˝ áá˝áá˝ áá áĽáá´áľ áĽáá°áá°áŤ ááááŤáá˘
ááá°áá ááá ᨠGitLab áá áĽáá´áľ ááľá°ááĽá áĽááłááĽáᣠáá°ááá˝á áĽáá´áľ áĽáá°ááááľ áĽá áá° Staging áĽáá´áľ áĽáá°ááááá ááááŤáá˘
áśá¨á á áľááá á¨áááľá áááá˝ ááááá˝ (ááá á ááŤá¨áĽá á áá áá) á¨ááá
áľ á´áááá áá. áá
Dockerfile ááłá ááᢠáĽáá
á¨áŚáá´ááá Ruby:2.3.0 Docker ááľá áĽáá°áááááľ áĽáááááᢠá¨á°áŤáá Ruby áľáŞáľ 2.3 ááá. á áľááááá á¨áááŁáł á¤á°-áá˝áááľ áĽá NodeJS áĽáááááá. áá፠áĽáá°áá áá áĽááááááᢠ/app
. á¨áá°áá áŞáŤáá áá፠áĽáá° á¨áľáŤ áá፠áŤáá
áŠáľá˘ á áá
áá፠ááľáĽ á¨áááááá á ááľá°á Gemfile áĽá Gemfile.lock áĽááľáááŁááᢠá¨á፠áá
á á¨áĽááááľ ááľá á¨ááá ááŽáááśá˝á áĽááááŁáá. áŽáá´ááአá ááŤá áá°áĽ 3000 áááľááľ ááá áĽáá°ááá áĽáááááá. á¨ááŽáááľ á
áá áľáááá á¨áá¸áá, á áááŹá˝á á¨á°ááá¸áá áľááá áááľáŹáľ áĽá áááľáŹáľ ááááŤá.
áá á¨áśáá°á á ááá ááá á ááľá°á ááłá ááᢠá áá áááł, á áááľ ááŤáŁáá˝ ááŤá¨á áááááľ áĽááłá áĽááłáŤáá. áá á ááĽáł á áá¨á ááľ á áááááľ áĽá á áľá á áááááľ ááľáĽ áá. á¨áĽá á¨áľá áá°áá áŞáŤ á á áĽááááš áááłáá˝ áá¨áá ááá¨áá¸áľ áĽáá° á¨ááᣠáľáá á ááłááľ ááááľ á¨ááἠááł áŤáľáááá¸ááᢠMySQL áĽá¨á°á ááá áľááá ááłáá ᨠMySQL áá áá - ááá áá áá á¨ááἠááł (PostgreSQL, Redis) áĽááłáá áá á¨áá¨áááá ááá ááá á¨áá.
á¨áŚáá´ááá ááá ᨠDocker hub ᨠMySQL 5.7.14 ááľáá áŤáááá áááŚá˝ áĽáááľáłáá. ááľá áá°áá áŞáŤá˝á áááááľ á¨áááá ááľá á áá áŤáá áá፠áĽáá°á áľáŁááᢠá ááááŞáŤá á áá áá áľ ááĽá ááľá áá°á áľá ááᢠá¨á፠áĽá áĽáá á¨áááá˝ááá áľááá áŤáľáŹáłá. áá° áá á¨á°áááľáᣠá áá á áŠá á¨ááľáááŞáŤá áľááá áĽáá°á°ááḠáĽááŤááᢠáá á áŠá˘ á¨á°áťá á áááááľ ááᢠá ááá°áá ááłá áá áĽáá˝áŤáá. áá áľáĽáá áĽáá° ááááłá˝á ááá áĽáá° á°ááŁáŤá˝á á¨áááá° ááá áá˝ááá˘
á áŽáá´ááá áá°áĽ áá á¨3000 áĽáľá¨ 3000 áŁáá á¨ááᢠááľá°ááá áá˝á áá áá°áĽ ááľá°ááá áĽááłááĽá áĽááááááᢠáá á ááĽáł á Docker ááľáĽ á¨á°áŤá°á°áá iptables áĽá áá´áá á áá áá á áŤáľ-á°á áá¨ááááá˘
ááá˘á áĽáá°á ááą áááááá á¨á á á á áľáŤáť ááľá¨áľ áá˝ááᥠáááłáᥠ127.0.0.1 á¨áá˝á á áŤáŁá˘áŤá ááá ááŤá á áá á áľáŤáť ááá˘
á¨áá¨á¨áťá ááľáá á¨áľá¨-áá˝ ááŤáŁá á á˛á˘ ááŤáŁá áá á¨á°áá°á¨á° áá. á¨áἠáŽáá´ááአááááŞáŤ áĽáá áľáá áŤáŁ docker-compose á ááááŞáŤ á¨ááἠááłáá áŤáľááá¨ááᢠááľááá á áá¨á ááą ááááŞáŤ áá (á áĽááṠᣠááŤáŁá á¨á°ááᨠá áá! áá á¨áá¨á ááąá áááááľ á áŤá¨áááĽá) á áááŹá˝áá ááááŤá ᣠá¨áĽá á¨áááŁá˘
áá á¨áá¨á ááą áŤáá°ááł áľá á°áśá˝á áŤáľáááłá áĽá á¨áá¨á ááąá áľááá ááĽáśá˝á áááĽáŁá ᣠáľáááá áááá˝ ááŽáááśá˝ ááĽáśá˝á áá áŤá°ááá á˘
á ááŽáááą áá á¨áá¨á ááľ (áłáłá¤á) á á áááá áá áá°á áá. áááá ááá˘áὠᨠMySQL áľáŞáľ áĽááľá°áŤááááᢠáá áľáŞáśá˝ á˛ááŤáŠ áá¨á°áą á¨áá˝á á ááłááľ áľá á°áśá˝á áŤáľáááłáᣠá ááŁáĽáŁ áá á¨áľáŁ ááŁáŞ á áá áśá˝ á˛áá¨áŠá˘ áá á¨ááἠááł, ááá˘áŤ, á¨ááá áá á¨á°ááá° á¨á áľá°ááá áľá áĽáá˛áááš áŤáľá˝áááłá. áá°á áĽáá á¨áá áŠáľ á¨áá á¨áľ áááá˝ ááľáĽ áŤááľ á¨áľá áĽá áááśá˝ ááŤá á áŤááľ áĽá¨áŤá á ááá˘
ááááľ á áŤáŁá˘ á¨á áá áĽáŠ áá á¨áľá ááá áá áĽáľá á áá ᣠáá á á¨ááŁáŞá á¨á°áᨠááááᢠMySQL á ááŁáŞááľ áá°áŤá áá˝áá˝ á°áá áŻá áĽá á¨áłáĽá áá áŤáá á ááťá¸á á áŁá á°áŤá ááá˘
áśá¨á á¨áááááá áĽáľá PythonᣠRubyᣠNodeJSᣠPHP á áľá°ááá áĽááľáľá áá ááá áľáááᢠá ááľ ááááľ áľáŞáľ á áľá°áłáłáŞá á¨áá áá ááááľá áĽááľáááłááᢠáá°á á˛á, Ruby á ááŽáááą áá á áááľá¨áľ áľáŞáąá áĽáá˛ááአá¨ááŤáľá˝áááľá ᨠrpm áĽá á á°á á áá. áĽáá˛áá ááśá¨á áŽáá´ááá ááľáá áááŁáá áŽáąá á á°ááá á áááł ááááá áĽá á¨áĽáááá˝ áá á áĽáŽ áĽáá˛á°áŤá áŤáľá˝ááᢠá¨áááąá á¨á áľá°ááááá áĽá á¨áŽáąá á á ááá¨áłáľ ááá á˝áá á¨ááĽááᢠáľáŞáąá ááááá á¨áľáŽáá ááŤáŁ ááááą áĽá á á˛áąá ááŤáŁáá á¨á áŤáľáááľá˘ á¨áá á˝áá á¨á°áá á¨, á á˛áąá ááŤáŁáá áá ááľá¨á, á¨áľáŽáá ááŤáŁ á¨á ááľá¨á áĽáá˝ááá.
ááľáá á¨á°ááᣠá áá á áááąá áááľ áĽá áááľ ááľáĽ áŤááľ ááŤáŁáá˝ á°ááłáłá áááá. áá á á°áá ááľááá áááśá˝ áĽáááľ áá.
á Frontend JavaScipt áĽá NodeJS áĽáá ááááá˘
á áá á ReacJS áá á¨áá¨á¨áťáá ááŽáááľ á ááᢠááá˘á á ááŤáŁá ááľáĽ áŤááá ááá áá áŽáŚ áľáŠáľ-áłáá ááŤáá á áá áá á áłáĽáŻáá˘
á ááá á á¨JavaScipt á¨áá°áĽá°á˘áŤ á°ááŁá á°áááŻá áĽá áá° áľáłá˛ááľ á¨á°á ááá¨á áŽáľ á nginx áá ᣠááĽáśá˝ á áŠá áá°áŁáá˘
áĽáá á¨áá¨á¨áťáá ááŽáááłá˝áá áĽá áľ á°áĽáťáá.
áá á°ááŁáŤáľ á°ááľá°áá? á°áááłáá˝ ááłáŞáŤáá˝ á¨ááááá áľ áľáááľ ááááŁáľ áŤáľááááá. ááἠááá áá. á ááą á ááŤá á¨áá ááłáááŤáá˝á áá°áá ááŁáŞáŤ ááá ááá˘
ááá áá á á°á¨áá?
á áááŹá˝áá áĽáá° áĽááá áááá˝ á¨áááááᥠá¨á áľá°áłáłáŞá ááá á JS ááᣠá¨áááŁá áááᣠá Ruby on Rails áľá á REST á áááá˝ á áŠá áá°áŤáᢠá¨áááŁá ááá á¨áá¨á ááą áá áááááᢠá¨ááá á¨á áá¤áľ áá°áá áá áá°áŁá. á¨á áľá°áłáłáŞá ááá á¨ááᣠáĽá á¨áłáłá¤á áá á REST á áááá˝ á áŠá áááááá˘
á¨áá ááłáááŤáá˝á áááá áŤáľáááá áá áᢠá¨á፠á ááľ áá° ááŁáá ááľá¨áŽá˝ ááłáááŤáá˝á á¨ááľá¨áľ áááááľ áŤáá áľá áá´ á°ááŁáŤá á¨ááŤá°áá ááŽáááľ áá á¨áá˘
á¨áá¨á°ááá áĽá áľ á ááá á°áá-á¨á áłáš ááľáĽ áŤáá áŚááŹá°á á¨á áľá°áłáłáŞ ááá áá ááááá, á¨á áľá°áłáłáŞ ááá á¨áááŁá áá ááááá, á°ááŁáŠ á¨áááľ ááľáłáááŤáá˝á ááá áá.
á¨áá ááłáááŤáá˝ á NodeJS ááľáĽ á¨á°á°áá ᨠáá á áŤá áá ááľá°ááĽá áááĽáŤáá˘
áá¨ááá˝ á°áááĽá°áá á¨ááŤá ááłáááŤáá˝ áĽáá° áľááłá¸á áááŤáá˘
áááľ á¨ááἠááłáá˝ áĽáá á°áłáᢠá á áá áá, á Docker áĽááłáł, á ááá ááአáĽááľ á ááľ á¨áááááą 2 áááá°á á¨ááἠááłáá˝á áĽáá áááá. á á°á¨ááŞá, á¨á፠áááŁá á ááłá¨ áá¨áĽ á áá¸á, áĽá á áŤáá áá¨á á ááá˘á áá˝á áá á á°ááŤáŠ áááŤáá˝ ááľáĽ á°á¨áá˝áˇá.
á°ááłáłá ááá áá á ááĽá. áŽáľá áĽáá°áá áá áá á áľááá á¨ááá áĽáá áá ááá˘
áá°á á˛á á á¤á°-áá˝áááľ ááá áŽáľá áĽáá°áá áľááá áá á¨á°ááááá ᣠá áá ááłá ááľáĽ ᣠááá ááłáááŤáá˝ ááá˝ á¨áá°áĽ á áááááłá˝á áĽáá° áá á áááá áĽáá°áá áĽá á áá ááááᢠá¤áá á áŤáááŁáᢠáĽá á á˛áą áĽáľááłá˝á ááľááá á¨áĽáą áá áááááá˘
á ááŤá ááᣠᨠNodeJS áľáŞáľ 4 áĽáá áá áá áᢠá áá (á 2017 - ed. note) á á áἠáá á¨á°á°á¨á áĽáľááśá˝ ᨠNodeJS áľáŞáľ 7 áĽáá áááá. á áłá˛áľ á¨á¤á°-ááťá ááľ áľáŞáśá˝á áááłá°á á á á˛áľ á áŤááľ ááľáĽ ááá á˝áá á¨ááá˘
á áľááá á¨ááᣠá¨áá á¨ááłáá፠á ááááᾠᨠNodeJS áĽáŞáąá áĽáá°áá áá°áľ áĽá áááłáľ áá˝ááá˘
áĽá á¨á¤áá á á°áłááááľá áá á á á¨áťáá á¨áá áá°á áĽá á áá á áááľ ááá˝ ááŽáááśá˝ áá°áŤáľ ááťááá˘
áśá¨áá ááá¨áá áá áŤáľáááááłá? á áľááááášá áĽááááśá˝ á¨áááá˝ Dockerfile áá° áá¨ááťá˝á áĽáá¨ááŤáá ᢠá áá ááłá, ááááš á ááááŤáłáááľ á¨á°á¨ááá áá¸á. áá áá á°áá á¨á áľá°ááᣠááᢠáľáĽáľáĽ ááá˘
á á˛áľ ááŽáááľ áľáááĽá, Dockerfile áĽáááĽáŤáá, á¨áááááá áľá-áá áłá (Python, Ruby, NodeJS) áĽáááááá. á docker-compose ááľáĽ, á áľááááá áĽááááľ ááááťá - á¨ááἠááł. á¨áĽáá°áá á áááľ áĽá á¨áĽáá°áá á áááľ áľáŞáľ á¨ááἠááł áĽáá°ááŤáľáááá áĽáááááá, áĽá፠áĽá áĽá፠ááἠáŤá¨ááš.
á¨áááááłááľ á áááááľ ááá á¨áĽ á¨á°áᨠáśáľá°á ááŤáŁ ᨠnginx áá áĽáá ááááᢠáľááá˝á ááľáá ááťáá. Backend á á áľá-ááá áá á ááľáĽ áŤáľáááŁá¸áá, áĽáąá á°áá á nginx ááŤáŁ ááľáĽ á°ááá, áá á á¨áááááἠáá°áŁá.
ᨠnginx, mysql áá á¨áľá ááá¨áá¸áľ, á áľááá á¨áááľá áá áŽá˝ á¨ááá¨áá˝á áľ Docker á ááá á¨áá¨áá. á ááľ ááᢠá áá˝á áá á¨ááľ ááá áá¨ááť á˛áŤá°ááᣠá áľááľá áá áŤáŁá˘ áááľ ááá á¨áá ááŽáááľ á ááᢠá¨áľááá áá°áĽ ááá áá ááááľ ááźáśá˝ áĽáá°áá°áá አááá áĽáŤá á¨áá.
á ááá á, áĽá á áŤááľ á áá: á áľá°áłáłáŞ, áá¨á-á¤áá á, á¨áá ááłáááŤáá˝.
áá á áá ááááá áá áá¨ááť áá áá áá á áśá¨ááŤáááľ-á á áĽáá áĽáá áŤáááᢠá á áá áá á¨áĽáŤááłááą á áŤá á ááľ áĽá áá¨ááťáá˝á áĽáá áááá. áĽááą á ááááŤáłáááľ á¨á°áአáá¸á - á GitLab ááľáĽ á áá áááľáá ᣠáá á ááá˘á áá˝á áá ᣠáá ááľ á¨á°áá°á ááŽáááľ á ááᢠá ááľ á°á¨á áá°áłá˝ á¨ááŁáአá áŤááľ áá¸á.
áá á¨áśáá°áŽá˝ áá°áá áŞáŤ áááśá˝ ááłá ááᢠáĽáá˛áá áááá á áŤááľ ááľá°ááĽá á¨ááŤáľááááľá áá áŽá˝ á¨ááááá áľá á¨áśá¨á áá፠áĽáá áĽáááŁááᢠááŽáááąá áĽáá´áľ ááľáŹáľ áĽáá°ááťá á á áአá¨áááá˝ README.md á áá˘
áĽáá áá áááľ áśá¨á-á áťáťá áááá˝á á°ááŁáŤá á áľááááᢠáá á¨áá°á¨áá á á°á¨ááá˝ áááŽáĽ áá. á ááľ ááᢠá¨ááá áá á˛á°áŤ á¨áá ááłáááŤáá˝ á áŤáľáááááᣠá ááá áśá¨á-á áťáťá áááá ááááŤá áĽá á áá áá á¨áľ ááĽáą ááááŁáá˘
á¨áá˝ ááłáááŤáá˝ áá ááááľ áŤáľááá áśá¨á-áááá á.yaml áĽá docker-compose-push.yaml á°ááá¨ááá˘
docker-compose.yaml áĽá docker-compose-push.yaml á áá ááľáĽ áľááá á ááľ áá á áááŁá á ááłá¨ áá¨áĽ á áŤáľ-á°á ááá áŤáá˘
á¨á áŤá áááá˝ ááááŤ. áá ááááá˝ áľáĽáľáĽ áááááľ áŤáá á¨á áá á¨áá ááá ááᢠáĽáá áá á áľá°áá ááá á á? áĽáá áá áááááá ááá áĽááľá°ááááá.
áá nginx á¨ááŤááľ ááá á¨áá Docker ááľá áĽá á Docker áśáŹáľ áá á¨ááŤáłáἠáá°áá áŞáŤ ááᢠá°ááááᣠááŤáŁáá˝ á˛á አáĽá á˛á áᣠᨠnginx áá á¨áľá áŤáľáłáᢠáááá˝á á áŤáŤá á áśáľá°á á°á¨á á¨á፠áľáá˝ áĽáá°áŤáŤááá˘
ááááľ á áŤáŁá˘áŁ á¨.dev domain - api.informer.devá áĽáá ááááᢠá¨.dev á፠áŤáá¸á á áááŹá˝áá˝ á ááá˘á á¨ááľáĽ áá˝á áá ááááá˘
á á°á¨ááŞá, áá áŽá˝ áá° áĽáŤááłááą ááŽáááľ áá°áááá áĽá ááá ááŽáááśá˝ á á ááľ áá ááááŤá.
á áľááá ááአá°áá áá á¨áĽá á áłá˝ áá ááá áá° ááá á¨ááá áá á áľ ááłáŞáŤ ááá˘
á¨á፠áľá ááá á¨áľááá ááŤáŁ ááááľ áĽááłáá áľ áááľááá˘
áá áľá°áłáłáŞ JS á¨áá°á á nginx ááá áá˝ááᢠáá nginx ááá áá˝ááᣠáĽáąá á¤áá áá á¨áá°áĽáŁ ááá static filesᣠá nginx á ááľá á°áá ááá á¨á°á°áĄá˘
áľáá áĽáá°ááŤáłá¨á áŽáá´áááŽáš á á¨áášáá ááľááá á¨á°ááá áĽá á¨ááŽáá˛á ááᣠá¨á°á°á á áá¸áá˘
á ááá˘á áá˝á áá á áááá á ááá ááŤáŁáá ááľá¨áľ áá˝áá, ááá áá á ááá á°á¨á áá áá á áá ááá. ááĽá°á ááłá¨áť á á°ááŁá á áŤáľááááá˘
áá°áá áŞáŤáá áááá ἠá¨áľááá ááłá áá¨áľ á ááĽááľ? á áĽá á áľá°áŤá¨áľ áĽáŠ ááłá á MySQL áŚáá´ááá á¨áśáá°á ááľá ááá˘
á áŁá ááłá ááᢠáĽá áľáŞáśá˝ á áᢠááá áá á°ááŁáŤáą á°á¨á᪠á¨áĽáľááľ áá°áľ ááľáĽ áááą á¨áá˝á áĽá ááááśá˝á ááá¸áá áŤáľá˝áááłá. áá áŤá á áĽá ááá áĽáá´áľ áĽáá°áááá áŤáá, áĽáŤáľá á áá°áá á áá ááá á˝áá á ááááĽááľá áĽáŹ á áľáŁáá.
Hub.docker.com áĽááá áá áá° github.com á¨áááľáą á áááá˝á áááááŁáá á ááľáá áĽáŤáľá ááááŁáľ á¨áá˝áá áľ áĽáŹ áá¨á áááá˘
á á°á¨ááŞá á áá áá¨ááť ááľáĽ áááááŞáŤ á áá áĽá áá°á¨á᪠á¨áá°áá áŞáŤ ááľááá áááááľ áŤáá docker-endpoint.sh áľááŞááľ á áá˘
á á°á¨ááŞá á áá ááłá ááľáĽ á¨á áŤáŁá˘ á°ááááŽá˝á á áá áá á¨áááá á˝ááł á á. áá á áŽáá´ááá á˛á°áŤ ááá á áśáá°á áŽáááľ (docker-compose) á ááŤáááľ á¨á áŤáŁá˘á á°ááááááľ á áááá˝áŁ MySQL áá ááá á¨ááááááá áá ááá°á áśá¨á áŁáś á¨ááá áá áááááľ á ááĽá áááľ áĽáá˝áááá˘
á¨áááá° á¨ááá áá áááá á á ááľ á ááŤá á áᢠá°á áá áĽáááááá áĽááááᣠáá°á ááá á¨ááá áá áááááľ á ááĽáᣠáĽá áłáłá¤á ááá á á ááĽáá˘
á ááŽáááśáťá˝á ááľáĽáŁ á¨ááľááá áááááľ á¨áááá Dockerfile á á áľááš á ááľ á áľááááᢠáĽááŤá á áááŹá˝á á¨áá áááŁá¸áá á¨á°á áá ááĽáśá˝ ááŤáá፠áááľá¨á áĽáá°ááááłá˝á á áľá°áŤáááááᢠáá á áá áá á¨áá°áá áŞáŤ áŽááśá á ááá á¨ááἠááł áĽááľáááĽá á áľá˝áááᢠRuby á áááŹá˝áá˝ á¨ááἠááłáá˝á áááá áᣠáááťáťá áĽá ááá°á¨á áľáĽáá á áá¸áá˘
áá á github.com áá á¨á°áá°á ᨠMySQL áľáŞáľ áá áĽáá°áááľá á¨ááŤáłá ááłá ááᢠDockerfile á ááááľ áĽá ááŤá áĽá፠áĽáá´áľ áĽáá°ááŤááľ áá¨áľ áá˝ááá˘
docker-endpoint.sh á¨ááá˘áŤ ááĽáĽ áááááľ áŤáá áľááŞááľ ááᢠá áááť á áá áá áľ á ááłááľ á¨ááá áľ á°á¨ááá˝ áŤáľáááá, áĽá áĽááá áá áľáááśá˝ á¨áá¨ááááľ á áááť áľááŞááľ ááľáĽ áĽáť áá.
áá° ááá°áá ááá áĽáááľá˘
á¨ááá áŽáśá˝á ááá¨áá¸áľ áá° gitlab ááá¨ááᢠáá ááľáá á áááá˝ áŤáá á áŁá áááá áľáááľ ááá˘
á¨ááľáἠá áŤááľ á ááą Gitlab CI ááᢠá áá áá á¨áŽáľ áá á¨á˘áŤ áľáááľá ááá°áŤááľ ááá á ááśáá˛á áá¨áŤá áááŤááľ áĽá á áá á¨ááá á°á¨áłáłá áľáááá˝á áĽáá˛áááš áŤáľá˝áááłá.
Gitlab CI 2 áááá
á áá Gitlab CI á áááááľ áá áĽáá°ááŤáľááá áĽáááá¨áłáá. Gitlab CIá ááááá á¨.gitlab-ci.yml áááá á ááŽáááą áľá ááľááŁáľ áĽáť áŤáľáááááá˘
áĽáá áĽáá° áá¨áŤ ᣠáá°ááŤáľ áŤá á¨áááśá˝á á á°á á°á¨á°á ááľááá áĽáá°ááááá áĽááááááá˘
á áááŹá˝áá áááááŁáľ áá° áśá¨á-áŽááá á¨áá አáľááŞááśá˝á áĽááá áááᢠáá á¨ááᣠááłá áĽáť ááá˘
á ááá á, á¨ááἠááłáá ááááἠáĽá áá¨áŤáá˝á áááŤááľ ááááŹá˝á ááŤááľ á áľááá áá áĽáááá.
áľááŞááśáš á áľááá á¨á°áá¸á áĽá á¨áľá á°áľ áŽáľ áŤááááą, áľáááą áá° áá°ááŤáą ááá°á á°á¨á áááĽáá.
á¨áá°ááŤáą á°á¨á á á áá áá ááááááľ á°á°ááĽáŻá. ááŽ-á áᣠáłáá ááľááá á áá°áŤáááá˘
áááá áŽáá´áááŽá˝ á ááłá áĽáá ááá, á¨ááŤá á áá¨áŤá áá áľ á ááááŞáŤ á°á¨á á¨á°á°á á°áĄáľá áááá ááŤáŁáá˝ áĽáá°áá áĽáááłáá.
á áá ááá á¨á áŤáŁá˘ á°áááá á ááá˘áá˝ á¨á°áá á¨ááἠááł ááá°áľá áĽáŤááľá ááá˘
áá áááá á áááŤá áĽáť áĽáá°áá°áá á ááľáłááť á á.
ááá˝ á áááŤáá˝á á˛ááአá áá°áá áá.
á á áááŤáá˝ ááá áŁáá˝á áá°áŤááľ ááťáá.
áá áá á¨á áá ááá°áŤááľ Gitlab Runnerá ááŤá á ááĽáá˘
áá áááá፠á¨á°ááá á áááá ááᢠá ááá áá ááá ááľáĽ áĽáá°á°ááá°á á ááľ áá á ááá áá, áĽáąá ááá á áááľ áĽáá á áŤáľááááá.
á˛ááá á¨ááľáἠáŻáá áĽáááááŁááá˘
áááá á Gitlab áľá á áááá˝ ááľáĽ áĽáááááá˘
á¨ááŤá á áľáĽáá ááľáá áá á¨áááť áľáááá áĽáá áŤááá.
Gitlab Runnerá á ááá°ááá (áźáᣠáśá¨áᣠá¨áášáááŚááľáŁ á¤áľá¤áľá¤á˝) áŤáá áŠá˘
á Gitlab Runner áá áŤáá áŽáľ á .gitlab-ci.yml á ááĽá áá á áááľá¨áľ á áĽáŤááłááą áá áá áá°áŤáá˘
á áľá á áááá˝ ááľáĽ á Gitlab ááľáĽ á áĽááł áĽáá´áľ áĽáá°ááłáᢠGITlab CI á áŤáááá á áá á á áá áá á¨áááŁáłáá áááł á¨ááŤáłá áŁáá˛áŤ á ááá˘
ᨠ4 á°áááá˝ á ááľ ááá áááľ áĽáá°á°ááá áĽááŤáá, áá á áááá áá°ááá˝ áŤáá áĽá ááá á˝áá á áááŁá.
áááŁáłáášá á á áá áľ áááá¨áľ áĽáá˝áááᢠáĽáá áá áááľ áááśá˝ á áááá. á¨áá¨áŤ áááł áĽá á¨áá°ááŤáľ áááł á áááááľ ááá˘
á á ááľ á¨á°áá°á áááŁáł áá á á áŤá°á¨áá á .gitlab-ci.yml áá á¨áľ á áá°áą ááľáĽ á¨á°á¨ááá áľáááá˝ á¨áŽááśá áá¤áľ áááŤáá˘
á¨áááľ áłáŞáŤá˝á áá á áááľááᢠá¨á°áłáŤ áá¨áŤáá˝ áĽáá°áá አá áá°ááᢠáá°ááá˝ á˛áᥠáá°áááĽáá á°á¨á á áááľá áĽá á¨ááá áľ áŽáľ á ááááá.
áśá¨áá áľáá°áá á á áááááľ áá áá á°ááŁáŤáľá ááłá? áľáááłá˝á á áŤááľá áŤáá áá áĽá áĽáá°áá ááľááá áŤáľáááá áá áᣠá áá¨ááťá ááľáĽ á¨á°ááááľ áááá˝ á¨á°áá°áá áĽáť áĽáá á á ááá áľáááą á áá°ááá˘
áá áá áááľá¨á áááá ááá áá° á°ááŤáŠ á áááá˝ áá°áŁá á á ááĽáá˘
áá á áŤá°á¨áá á ááᣠáśá¨á-áŽááá ááĽáŤááłááą á áŁáľ á¨áŤáą á¨áá á¨á ááłá¨ áá¨áĽ áŚáł áľááááĽá áĽá á¨áá¨á¤áąá á áŤááľ á ááá¨áą á˝áá á ááĽáááá˘
ááááᣠá áśá¨á ááľáĽ áŤááá ááľááá á áĽá áá ááᢠááá ááŽáááľ áĽáá°áá á áááľ á ááłá áĽáá°áá áá á Docker-compose á°á˝ááá˘
áľááá , á áá áĽáááá á¨áááá áĽáŤááłááą á áŤá á ááá˝ á¨áľáááą áááá˝ ááľáĽ áááá˝á áááá¨áłá.
á¨áááĽáá áĽáľá á á ááŤáł ááŽáááśá˝ áá¨ááá ááá˘
áá áá ááá áááá°á áĽá á á°áťá áá á ááááľ á áἠáĽáá˛áá á WEB ááľáĽ á ááá áŚáł áĽá á áá á¨ááááá áá°áĽ 80 ááá 443 áá áá áĽáŠ áá.
áĽáá´áľ áá á¨ááłáá? áááá áá ááŽáááśá˝ á ááľ Gitlab Runner ááľá ááá˘
Gitlab áĽá á¨á°á¨ááá á¨ááľáἠáŻáŽá˝á áĽáá˛áŤáŤááą ááá áľáááłáᣠáá á á ááá áááá áľáŤáá˝ á á°áá áŤá¨á ááአááľáś áŤáŤááłáá˘
á¤áľ áĽááłááá¨á á¨ááŽáááśáťá˝áá áĄáľá á á ááľ ááľáἠáŻá áĽáť áá°áá áá á á áĽáŤáá˝ áá áŤá á˝áá áááááá˘
Nginx-proxyá áá° á¨á°áᨠá¨ááľáááŞáŤ áľááŞááľ á áááłá á°áá áĽá á ááľáĄ áááľ ááŽáááśá˝ ááááá á¨áá¨ááá˘
á¨áĽá ááŽáááľ á ááľ ááááá á ááᣠáĽá ááá á ááŽáááľ áľáá˝ á ááŤáł ááááá á ááᢠá á፠áľáá˝ á°á¨á᪠ááŽáᲠááľá¨á áá˝ááá˘
áĽáŤáááťá˝á á áááľ 80 áá áŁáá á፠á áŠá áááŁá áĽá áá áá á፠á¨ááŤáááá á¨áĽá ááŤá˘áŤ áĄáľá áĽáá˛áá á°á°ááááá˘
ááá˝ áá á˝ááŽá˝ áá áŠ? áá ááá áŽáá´áááŽá˝ á ááŁáŞ áĽáá° áľá á¨áá°áŠ áá¸áᢠáá áľáá á¨áľáááą áľáá á áľá°ááá áá áĽáŠá áŤááá ááá˘
ááá áá áá° ááŤáŁá á¨áᥠáŠáľ áááá áĽá á áá áŽáá´ááá ááľáĽ á¨áá ááá ááá ᨠroot ááĽáśá˝á áŤáááá˘
ááá˘á áá° ááŤáŁá ááľáĽ á¨áᣠáĽá áááá˝á á¨ááŤááአá ááłááľ áľáááá˝á áŤá°á¨á áĽá ááŤáŁáá á¨á°áá, áĽáą á áĽáą ááľáĽ á¨áááᣠááá á áá.
áĽáá´áľáľ áááł áá˝áá? á ááŤáŁá ááľáĽ á¨ááá á°á áááá˝á áá¨á áá˝ááá˘
á°á áááá áľáá¨áá áá á˝ááŽá˝ á°áá áŠ?
á°á áá áľáááĽá áĽá áá á°ááłáłá á¨áĄáľá ááłáá፠(UID) áĽá á¨á°á áá ááłáá፠(áá áá˛) á¨ááá::
áá áá á˝áá á ááŤáŁá ááľáĽ ááááłáľ ááłáá፠1000 áŤáá¸áá á°á áááá˝ áĽáá ááááá˘
á áĽá áááłáŁ ááá áááľ ááťáá ááá˘áá˝ á¨áĄáĄááą áľááá° ááá á¨áá ááá áľ áĽáááł áá á°ááłáłá ááᢠáĽá á áĄáĄááą áá á¨ááááŞáŤá á°á áá á¨1000 ááłáá፠á ááá˘
áĽá áľ á áá?
á¨áśá¨á á°ááľ áŤááĽáĄá˘ ááŽáááą á áááľ áĽáŤá°á áá, á°ááą áĽá¨á°áá¨á¨ áá. á¨áááľ ááá áśáľáľ ááŤáľ á ááľ á¨á°áá áá áá¨á ááľ á ááľ ááá áŤááá áľ ááá˘
á¨á°áá°ááľ á¨ááłáá¸á á˝ááŽá˝ á áá°á á áá´áá˝ á¨á°ááą ááá áá˝ááá˘
áľááá áá° áŚááŹáľáľáŤ á ááĽáł ááááľ á áľááľáá áááľ áĽááááá.
á ááľ ááłá á¨áłáĽá ááľáĽ á¨áááŁá Docker Swarm á¨ááŁá á¨áśá¨á á áĽáŽááἠáá´ ááᢠá Docker Swarm á´áááá áá á áááľá¨áľ á áááľ ááľáĽ á¨áá ááá áááľ áĽáááááá˘
á¨áĽá áá áŤáááŤáá˝ á¨áá áá áááľáŤáľ á¨áááá˝ áŤá°áááá. á áá áááἠááľáłááťááš á°ááá°áá. á ááŤáŁáá˝ áá á°á áłáľáá áááá. á¨á°ááŁáŽáš á ááą á áľá á áááá˝ á áŠá áá° áááἠááľáłááťáá˝ ááš ááłá¨áť ááľá¨á áá.
ááá: hab.com