ื”ืื ื“ื•ืงืจ ื”ื•ื ืฆืขืฆื•ืข ืื• ืœื? ืื• ืฉื–ื” ืขื“ื™ื™ืŸ ื ื›ื•ืŸ?

ืฉืœื•ื ืœื›ื•ืœื!

ืื ื™ ืžืื•ื“ ืจื•ืฆื” ืœื”ื’ื™ืข ื™ืฉืจ ืœื ื•ืฉื, ืื‘ืœ ื™ื”ื™ื” ื ื›ื•ืŸ ื™ื•ืชืจ ืœืกืคืจ ืงืฆืช ืขืœ ื”ืกื™ืคื•ืจ ืฉืœื™:

ื›ื ื™ืกื”

ืื ื™ ืžืชื›ื ืช ืขื ื ื™ืกื™ื•ืŸ ื‘ืคื™ืชื•ื— ื™ื™ืฉื•ืžื™ ืขืžื•ื“ ื‘ื•ื“ื“ ื‘ื—ื–ื™ืช, scala/java ื•-nodejs ื‘ืฉืจืช.

ื‘ืžืฉืš ื“ื™ ื”ืจื‘ื” ื–ืžืŸ (ื‘ื”ื—ืœื˜ ื–ื•ื’ ืื• ืฉืœื•ืฉ ืฉื ื™ื), ื”ื™ื™ืชื™ ื‘ื“ืขื” ืฉ-Docker ื”ื•ื ื”ืžืŸ ืžืฉืžื™ื™ื ื•ื‘ื›ืœืœ ื›ืœื™ ืžืื•ื“ ืžื’ื ื™ื‘ ื•ืœื’ืžืจื™ ื›ืœ ืžืคืชื— ืฆืจื™ืš ืœื”ื™ื•ืช ืžืกื•ื’ืœ ืœื”ืฉืชืžืฉ ื‘ื•. ื•ืžื›ืืŸ ื ื•ื‘ืข ืฉื›ืœ ืžืคืชื— ืฆืจื™ืš ืœื”ืชืงื™ืŸ ืืช Docker ื‘ืžื—ืฉื‘ ื”ืžืงื•ืžื™ ืฉืœื•. ืžื” ืœื’ื‘ื™ ื“ืขืชื™, ืขื™ื™ืŸ ื‘ืžืฉืจื•ืช ื”ืคื ื•ื™ื•ืช ืฉืžืชืคืจืกืžื•ืช ื‘ืื•ืชื• ื—"ื—. ื›ืœ ืื—ื“ ืฉื ื™ ืžื›ื™ืœ ืื–ื›ื•ืจ ืฉืœ docker, ื•ืื ืืชื” ื”ื‘ืขืœื™ื ืฉืœื•, ื–ื” ื™ื”ื™ื” ื”ื™ืชืจื•ืŸ ื”ืชื—ืจื•ืชื™ ืฉืœืš ๐Ÿ˜‰

ื‘ื“ืจื›ื™ ืคื’ืฉืชื™ ืื ืฉื™ื ืจื‘ื™ื, ืขื ืขืžื“ื•ืชื™ื”ื ื”ืฉื•ื ื•ืช ื›ืœืคื™ ื“ื•ืงืจ ื•ื”ืืงื•-ืกื™ืกื˜ื ืฉืœื”. ื—ืœืง ืืžืจื• ืฉื–ื” ื“ื‘ืจ ื ื•ื— ืฉืžื‘ื˜ื™ื— ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื—ื•ืฆืช ืคืœื˜ืคื•ืจืžื•ืช. ื”ืฉื ื™ื™ื ืœื ื”ื‘ื™ื ื• ืœืžื” ื”ื ืฆืจื™ื›ื™ื ืœืจื•ืฅ ื‘ืžื›ื•ืœื•ืช ื•ืื™ื–ื” ืจื•ื•ื— ื™ื™ืฆื ืžื–ื”, ืœืฉืœื™ืฉื™ ืœื ื”ื™ื” ืื›ืคืช ื‘ื›ืœืœ ื•ืœื ื”ืคืจื™ืข (ื”ื ืคืฉื•ื˜ ื›ืชื‘ื• ืืช ื”ืงื•ื“ ื•ื”ืœื›ื• ื”ื‘ื™ืชื” - ืื ื™ ืžืงื ื ื‘ื”ื, ื‘- ื“ืจืš :)

ืกื™ื‘ื•ืช ืœืฉื™ืžื•ืฉ

ืœืžื” ื”ืฉืชืžืฉืชื™ ื‘ื“ื•ืงืจ? ื›ื ืจืื” ืžื”ืกื™ื‘ื•ืช ื”ื‘ืื•ืช:

  • ื”ืฉืงืช ืžืกื“ ื ืชื•ื ื™ื, 99% ืžื”ื™ื™ืฉื•ืžื™ื ืžืฉืชืžืฉื™ื ื‘ื”ื
  • ื”ืคืขืœืช nginx ืขื‘ื•ืจ ื”ืคืฆืช ื—ื–ื™ืช ื•ื”ืขื‘ืจืช ืคืจื•ืงืกื™ ืœ-backend
  • ืืชื” ื™ื›ื•ืœ ืœืืจื•ื– ืืช ื”ื™ื™ืฉื•ื ื‘ืชืžื•ื ืช docker, ื›ืš ื”ื™ื™ืฉื•ื ืฉืœื™ ื™ืขื‘ื•ื“ ื‘ื›ืœ ืžืงื•ื ื‘ื• ืงื™ื™ื docker, ื‘ืขื™ื™ืช ื”ื”ืคืฆื” ื ืคืชืจืช ืžื™ื“
  • ื’ื™ืœื•ื™ ืฉื™ืจื•ืช ืžื”ืงื•ืคืกื”, ืืชื” ื™ื›ื•ืœ ืœื™ืฆื•ืจ ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื, ื›ืœ ืžื™ื›ืœ (ืžื—ื•ื‘ืจ ืœืจืฉืช ืžืฉื•ืชืคืช) ื™ื›ื•ืœ ืœื”ื’ื™ืข ื‘ืงืœื•ืช ืœืื—ืจ ื‘ืืžืฆืขื•ืช ื›ื™ื ื•ื™, ื ื•ื— ืžืื•ื“
  • ื›ื™ืฃ ืœื™ืฆื•ืจ ืžื™ื›ืœ ื•"ืœืฉื—ืง" ื‘ื•.

ืžื” ืฉืื ื™ ืชืžื™ื“ ืœื ืื•ื”ื‘ ื‘ื“ื•ืงืจ:

  • ื›ื“ื™ ืฉื”ืืคืœื™ืงืฆื™ื” ืฉืœื™ ืชืขื‘ื•ื“, ืื ื™ ืฆืจื™ืš ืืช Docker ืขืฆืžื• ื‘ืฉืจืช. ืœืžื” ืื ื™ ืฆืจื™ืš ืืช ื–ื” ืื ื”ืืคืœื™ืงืฆื™ื•ืช ืฉืœื™ ืคื•ืขืœื•ืช ืขืœ jre ืื• nodejs ื•ื”ืกื‘ื™ื‘ื” ืขื‘ื•ืจื ื›ื‘ืจ ื ืžืฆืืช ื‘ืฉืจืช?
  • ืื ืื ื™ ืจื•ืฆื” ืœื”ืคืขื™ืœ ืืช ื”ืชืžื•ื ื” (ื”ืคืจื˜ื™ืช) ืฉืœื™ ื”ื‘ื ื•ื™ื” ืžืงื•ืžื™ืช ืขืœ ืฉืจืช ืžืจื•ื—ืง, ืื– ืื ื™ ืฆืจื™ืš ืžืื’ืจ docker ืžืฉืœื™, ืื ื™ ืฆืจื™ืš ืฉื”ืจื™ืฉื•ื ื™ืขื‘ื•ื“ ืื™ืคืฉื”ื• ื•ืื ื™ ืฆืจื™ืš ื’ื ืœื”ื’ื“ื™ืจ https, ื›ื™ docker cli ืขื•ื‘ื“ ืจืง ืขืœ https. ืื” ืœืขื–ืื–ืœ... ื™ืฉ ืืคืฉืจื•ื™ื•ืช, ื›ืžื•ื‘ืŸ, ืœืฉืžื•ืจ ืืช ื”ืชืžื•ื ื” ื‘ืื•ืคืŸ ืžืงื•ืžื™ ื‘ืืžืฆืขื•ืช docker save ื•ืคืฉื•ื˜ ืœืฉืœื•ื— ืืช ื”ืชืžื•ื ื” ื“ืจืš scp... ืื‘ืœ ื–ื” ื”ืจื‘ื” ืชื ื•ืขื•ืช ื’ื•ืฃ. ื•ื—ื•ืฅ ืžื–ื”, ื–ื” ื ืจืื” ื›ืžื• ืคืชืจื•ืŸ "ืงื‘ื™ื™ื" ืขื“ ืœื”ื•ืคืขืช ื”ืžืื’ืจ ืฉืœืš
  • docker-compose. ื–ื” ื ื—ื•ืฅ ืจืง ื›ื“ื™ ืœื”ืคืขื™ืœ ืžื›ื•ืœื•ืช. ื–ื” ื”ื›ืœ. ื”ื•ื ืœื ื™ื›ื•ืœ ืœืขืฉื•ืช ืฉื•ื ื“ื‘ืจ ืื—ืจ. Docker-compose ื™ืฉ ื—ื‘ื•ืจื” ืฉืœ ื’ืจืกืื•ืช ืฉืœ ื”ืงื‘ืฆื™ื ืฉืœื•, ืชื—ื‘ื™ืจ ืžืฉืœื•. ืœื ืžืฉื ื” ื›ืžื” ื–ื” ื”ืฆื”ืจืชื™, ืื ื™ ืœื ืจื•ืฆื” ืœืงืจื•ื ืืช ื”ืชื™ืขื•ื“ ืฉืœื”ื. ืื ื™ ืœื ืืฆื˜ืจืš ืืช ื–ื” ื‘ืฉื•ื ืžืงื•ื ืื—ืจ.
  • ื›ืฉืขื•ื‘ื“ื™ื ื‘ืฆื•ื•ืช, ืจื•ื‘ ื”ืื ืฉื™ื ื›ื•ืชื‘ื™ื Dockerfile ื‘ืฆื•ืจื” ืžืื•ื“ ืขืงื•ืžื”, ืœื ืžื‘ื™ื ื™ื ืื™ืš ื”ื•ื ืžืื•ื—ืกืŸ ื‘ืžื˜ืžื•ืŸ, ืžื•ืกื™ืคื™ื ืืช ื›ืœ ืžื” ืฉื”ื ืฆืจื™ื›ื™ื ื•ืœื ืฆืจื™ื›ื™ื ืœืชืžื•ื ื”, ื™ื•ืจืฉื™ื ืžืชืžื•ื ื•ืช ืฉืื™ื ืŸ ื‘- Dockerhub ืื• ืžืื’ืจ ืคืจื˜ื™, ื™ื•ืฆืจื™ื ื›ืžื” docker-compose ืงื‘ืฆื™ื ืขื ืžืกื“ื™ ื ืชื•ื ื™ื ื•ืฉื•ื ื“ื‘ืจ ืœื ืžืžืฉื™ืš. ื™ื—ื“ ืขื ื–ืืช, ื”ืžืคืชื—ื™ื ืžืฆื”ื™ืจื™ื ื‘ื’ืื•ื•ื” ืฉ-Docker ื–ื” ืžื’ื ื™ื‘, ื”ื›ืœ ืขื•ื‘ื“ ืขื‘ื•ืจื ืžืงื•ืžื™ืช, ื•-HR ื›ื•ืชื‘ ื‘ืžืฉืจื” ื”ืคื ื•ื™ื”: "ืื ื—ื ื• ืžืฉืชืžืฉื™ื ื‘-Docker ื•ืื ื—ื ื• ืฆืจื™ื›ื™ื ืžื•ืขืžื“ ืขื ื ื™ืกื™ื•ืŸ ืขื‘ื•ื“ื” ื›ื–ื”".
  • ืื ื™ ื›ืœ ื”ื–ืžืŸ ืจื“ื•ืฃ ืขืœ ื™ื“ื™ ืžื—ืฉื‘ื•ืช ืขืœ ื”ืขืœืืช ื”ื›ืœ ื‘-Docker: postgresql, kafka, redis. ื—ื‘ืœ ืฉืœื ื”ื›ืœ ืขื•ื‘ื“ ื‘ืงื•ื ื˜ื™ื™ื ืจื™ื, ืœื ื”ื›ืœ ืงืœ ืœื”ื’ื“ื™ืจ ื•ืœื”ืคืขื™ืœ. ื–ื” ื ืชืžืš ืขืœ ื™ื“ื™ ืžืคืชื—ื™ ืฆื“ ืฉืœื™ืฉื™, ื•ืœื ืขืœ ื™ื“ื™ ื”ืกืคืงื™ื ืขืฆืžื. ื•ื“ืจืš ืื’ื‘, ืžื™ื“ ื ืฉืืœืช ื”ืฉืืœื”: ื”ืกืคืงื™ื ืœื ื“ื•ืื’ื™ื ืœืชื—ื–ืง ืืช ื”ืžื•ืฆืจื™ื ืฉืœื”ื ื‘-Docker, ืœืžื” ื–ื”, ืื•ืœื™ ื”ื ื™ื•ื“ืขื™ื ืžืฉื”ื•?
  • ืชืžื™ื“ ืžืชืขื•ืจืจืช ื”ืฉืืœื” ืœื’ื‘ื™ ื”ืชืžื“ื” ืฉืœ ื ืชื•ื ื™ ืžื™ื›ืœ. ื•ืื– ืืชื” ื—ื•ืฉื‘, ื”ืื ืขืœื™ ืœืขืœื•ืช ืืช ืกืคืจื™ื™ืช ื”ืžืืจื— ืื• ืœื™ืฆื•ืจ ืืžืฆืขื™ ืื—ืกื•ืŸ ืื• ืœื™ืฆื•ืจ ืžื™ื›ืœ ื ืชื•ื ื™ื ืฉื”ื•ื ื›ืขืช deprecated? ืื ืื ื™ ืžืขืœื” ืกืคืจื™ื™ื”, ืื– ืื ื™ ืฆืจื™ืš ืœื•ื•ื“ื ืฉื”-uid ื•ื”-gid ืฉืœ ื”ืžืฉืชืžืฉ ื‘ืงื•ื ื˜ื™ื™ื ืจ ืชื•ืืžื™ื ืœื–ื” ืฉืœ ื”ืžืฉืชืžืฉ ืฉื”ืคืขื™ืœ ืืช ื”ืงื•ื ื˜ื™ื™ื ืจ, ืื—ืจืช ื”ืงื‘ืฆื™ื ืฉื ื•ืฆืจื• ืขืœ ื™ื“ื™ ื”ืงื•ื ื˜ื™ื™ื ืจ ื™ื™ื•ื•ืฆืจื• ืขื ื–ื›ื•ื™ื•ืช ืฉื•ืจืฉ. ืื ืื ื™ ืžืฉืชืžืฉ volume ืื– ื”ื ืชื•ื ื™ื ืคืฉื•ื˜ ื™ื™ื•ื•ืฆืจื• ื‘ื—ืœืง /usr/* ื•ื™ื”ื™ื” ืื•ืชื• ืกื™ืคื•ืจ ืขื uid ื•-gid ื›ืžื• ื‘ืžืงืจื” ื”ืจืืฉื•ืŸ. ืื ืืชื” ืžืฉื™ืง ืจื›ื™ื‘ ืฉืœ ืฆื“ ืฉืœื™ืฉื™, ืขืœื™ืš ืœืงืจื•ื ืืช ื”ืชื™ืขื•ื“ ื•ืœื—ืคืฉ ืืช ื”ืชืฉื•ื‘ื” ืœืฉืืœื”: "ื‘ืื™ื–ื” ืกืคืจื™ื•ืช ืžื›ื™ืœื•ืช ื›ื•ืชื‘ ื”ืจื›ื™ื‘ ืงื‘ืฆื™ื?"

ืชืžื™ื“ ืœื ืื”ื‘ืชื™ ืืช ื”ืขื•ื‘ื“ื” ืฉื”ื™ื™ืชื™ ืฆืจื™ืš ืœื”ืชืขืกืง ืขื Docker ื™ื•ืชืจ ืžื“ื™ ื–ืžืŸ ื‘ืฉืœื‘ ื”ืจืืฉื•ื ื™: ื”ื‘ื ืชื™ ืื™ืš ืœื”ืคืขื™ืœ ืงื•ื ื˜ื™ื™ื ืจื™ื, ืžืื™ืœื• ืชืžื•ื ื•ืช ืœื”ืคืขื™ืœ, ื™ืฆืจืชื™ Makefiles ืฉื”ื›ื™ืœื• ื›ื™ื ื•ื™ื™ื ืœืคืงื•ื“ื•ืช Docker ืืจื•ื›ื•ืช. ืฉื ืืชื™ ืืช docker-compose ื›ื™ ืœื ืจืฆื™ืชื™ ืœืœืžื•ื“ ืขื•ื“ ื›ืœื™ ื‘ืžืขืจื›ืช ื”ืืงื•ืœื•ื’ื™ืช ืฉืœ docker. ื• docker-compose up ื–ื” ื”ืคืจื™ืข ืœื™, ื‘ืžื™ื•ื—ื“ ืื ื”ื ืขื“ื™ื™ืŸ ื ืคื’ืฉื• ืฉื build ืงื•ื ืกื˜ืจื•ืงืฆื™ื•ืช, ื•ืœื ืชืžื•ื ื•ืช ืฉื›ื‘ืจ ืžื•ืจื›ื‘ื•ืช. ื›ืœ ืžื” ืฉื‘ืืžืช ืจืฆื™ืชื™ ื–ื” ืคืฉื•ื˜ ืœื”ื›ื™ืŸ ืžื•ืฆืจ ื‘ื™ืขื™ืœื•ืช ื•ื‘ืžื”ื™ืจื•ืช. ืื‘ืœ ืœื ื”ืฆืœื—ืชื™ ืœื”ื‘ื™ืŸ ืื™ืš ืœื”ืฉืชืžืฉ ื‘ื“ื•ืงืจ.

ื”ื™ื›ืจื•ืช ืขื Ansible

ืœืื—ืจื•ื ื” (ืœืคื ื™ ืฉืœื•ืฉื” ื—ื•ื“ืฉื™ื), ืขื‘ื“ืชื™ ืขื ืฆื•ื•ืช DevOps, ืฉื›ืžืขื˜ ืœื›ืœ ืื—ื“ ืžื”ื ื”ื™ื” ื’ื™ืฉื” ืฉืœื™ืœื™ืช ื›ืœืคื™ Docker. ืžืกื™ื‘ื•ืช:

  • docker ื›ืœืœื™ื iptables (ืœืžืจื•ืช ืฉืืชื” ื™ื›ื•ืœ ืœื”ืฉื‘ื™ืช ืืช ื–ื” ื‘-daemon.json)
  • docker ื”ื•ื ื‘ืื’ื™ ื•ืื ื—ื ื• ืœื ื ืจื™ืฅ ืื•ืชื• ื‘ื™ื™ืฆื•ืจ
  • ืื docker daemon ืงื•ืจืก, ืื– ื›ืœ ื”ืงื•ื ื˜ื™ื™ื ืจื™ื ืขื ื”ืชืฉืชื™ืช ืงื•ืจืกื™ื ื‘ื”ืชืื
  • ืœื ืฆืจื™ืš ื“ื•ืงืจ
  • ืœืžื” docker ืื ื™ืฉ Ansible ื•ืžื›ื•ื ื•ืช ื•ื™ืจื˜ื•ืืœื™ื•ืช

ื‘ืื•ืชื” ืขื‘ื•ื“ื” ื”ืชื•ื•ื“ืขืชื™ ืœื›ืœื™ ื ื•ืกืฃ - Ansible. ืฉืžืขืชื™ ืขืœ ื–ื” ืคืขื, ืื‘ืœ ืœื ื ื™ืกื™ืชื™ ืœื›ืชื•ื‘ ืกืคืจื™ ืžืฉื—ืง ืžืฉืœื™. ื•ืขื›ืฉื™ื• ื”ืชื—ืœืชื™ ืœื›ืชื•ื‘ ืืช ื”ืžืฉื™ืžื•ืช ืฉืœื™ ื•ืื– ื”ื—ื–ื•ืŸ ืฉืœื™ ื”ืฉืชื ื” ืœื—ืœื•ื˜ื™ืŸ! ื›ื™ ื”ื‘ื ืชื™: ืœ-Ansible ื™ืฉ ืžื•ื“ื•ืœื™ื ืœื”ืคืขืœืช ืื•ืชื ืงื•ื ื˜ื™ื™ื ืจื™ื, ื‘ื ื™ื™ืช ืชืžื•ื ื•ืช, ืจืฉืชื•ืช ื•ื›ื•', ื•ื ื™ืชืŸ ืœื”ืคืขื™ืœ ืงื•ื ื˜ื™ื™ื ืจื™ื ืœื ืจืง ืžืงื•ืžื™ืช, ืืœื ื’ื ื‘ืฉืจืชื™ื ืžืจื•ื—ืงื™ื! ื”ื”ื ืื” ืฉืœื™ ืœื ื™ื“ืขื” ื’ื‘ื•ืœ - ืžืฆืืชื™ ื›ืœื™ NORMAL ื•ื–ืจืงืชื™ ืืช ืงื‘ืฆื™ ื”-Makefile ื•-docker-compose ืฉืœื™, ื”ื ื”ื•ื—ืœืคื• ื‘ืžืฉื™ืžื•ืช yaml. ื”ืงื•ื“ ืฆื•ืžืฆื ืขืœ ื™ื“ื™ ืฉื™ืžื•ืฉ ื‘ืžื‘ื ื™ื ื›ืžื• loop, when, ื•ื›ื• '

Docker ืœื”ืคืขืœืช ืจื›ื™ื‘ื™ ืฆื“ ืฉืœื™ืฉื™ ื›ื’ื•ืŸ ืžืกื“ื™ ื ืชื•ื ื™ื

ืœืื—ืจื•ื ื” ื”ืชื•ื•ื“ืขืชื™ ืœืžื ื”ืจื•ืช ssh. ื”ืชื‘ืจืจ ืฉืงืœ ืžืื•ื“ "ืœื”ืขื‘ื™ืจ" ืืช ื”ื™ืฆื™ืื” ืฉืœ ืฉืจืช ืžืจื•ื—ืง ืœืคื•ืจื˜ ืžืงื•ืžื™. ื”ืฉืจืช ื”ืžืจื•ื—ืง ื™ื›ื•ืœ ืœื”ื™ื•ืช ืžื›ื•ื ื” ื‘ืขื ืŸ ืื• ืžื›ื•ื ื” ื•ื™ืจื˜ื•ืืœื™ืช ื”ืคื•ืขืœืช ื‘-VirtualBox. ืื ืื ื™ ืื• ืขืžื™ืชื™ ืฆืจื™ื›ื™ื ืžืกื“ ื ืชื•ื ื™ื (ืื• ืจื›ื™ื‘ ืื—ืจ ืฉืœ ืฆื“ ืฉืœื™ืฉื™), ื ื•ื›ืœ ืคืฉื•ื˜ ืœื”ืคืขื™ืœ ืืช ื”ืฉืจืช ืขื ื”ืจื›ื™ื‘ ื”ื–ื” ื•ืœื›ื‘ื•ืช ืื•ืชื• ื›ืฉืื™ืŸ ืฆื•ืจืš ื‘ืฉืจืช. ื”ืขื‘ืจืช ื™ืฆื™ืื•ืช ื ื•ืชื ืช ืืช ืื•ืชื• ืืคืงื˜ ื›ืžื• ืžืกื“ ื ืชื•ื ื™ื ื”ืคื•ืขืœ ื‘ืžื™ื›ืœ docker.

ืคืงื•ื“ื” ื–ื• ืžืขื‘ื™ืจื” ืืช ื”ื™ืฆื™ืื” ื”ืžืงื•ืžื™ืช ืฉืœื™ ืœืฉืจืช ืžืจื•ื—ืง ืฉืžืจื™ืฅ postgresql:

ssh -L 9000:localhost:5432 [ืžื•ื’ืŸ ื‘ื“ื•ื"ืœ]

ืฉื™ืžื•ืฉ ื‘ืฉืจืช ืžืจื•ื—ืง ืคื•ืชืจ ืืช ื”ื‘ืขื™ื” ื‘ืคื™ืชื•ื— ืฆื•ื•ืช. ืฉืจืช ื›ื–ื” ื™ื›ื•ืœ ืœืฉืžืฉ ื›ืžื” ืžืคืชื—ื™ื ื‘ื• ื–ืžื ื™ืช; ื”ื ืœื ืฆืจื™ื›ื™ื ืœื”ื™ื•ืช ืžืกื•ื’ืœื™ื ืœื”ื’ื“ื™ืจ postgresql, ืœื”ื‘ื™ืŸ ืืช Docker ื•ืžื•ืจื›ื‘ื•ื™ื•ืช ืื—ืจื•ืช. ื‘ืฉืจืช ืžืจื•ื—ืง, ื ื™ืชืŸ ืœื”ืชืงื™ืŸ ืืช ืื•ืชื• ืžืกื“ ื ืชื•ื ื™ื ื‘-Docker ืขืฆืžื•, ืื ืงืฉื” ืœื”ืชืงื™ืŸ ื’ืจืกื” ืกืคืฆื™ืคื™ืช. ื›ืœ ืžื” ืฉืžืคืชื—ื™ื ืฆืจื™ื›ื™ื ื”ื•ื ืœืกืคืง ื’ื™ืฉืช ssh!

ืœืื—ืจื•ื ื” ืงืจืืชื™ ืฉืžื ื”ืจื•ืช SSH ื”ืŸ ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ืžื•ื’ื‘ืœืช ืฉืœ VPN ืจื’ื™ืœ! ืืชื” ื™ื›ื•ืœ ืคืฉื•ื˜ ืœื”ืชืงื™ืŸ OpenVPN ืื• ื™ื™ืฉื•ืžื™ VPN ืื—ืจื™ื, ืœื”ื’ื“ื™ืจ ืืช ื”ืชืฉืชื™ืช ื•ืœืชืช ืื•ืชื” ืœืžืคืชื—ื™ื ืœืฉื™ืžื•ืฉ. ื–ื” ื›ืœ ื›ืš ืžื’ื ื™ื‘!

ืœืžืจื‘ื” ื”ืžื–ืœ, AWS, GoogleCloud ื•ืื—ืจื™ื ื ื•ืชื ื™ื ืœืš ืฉื ื” ืฉืœ ืฉื™ืžื•ืฉ ื‘ื—ื™ื ื, ืื– ื”ืฉืชืžืฉ ื‘ื”ื! ื”ื ื–ื•ืœื™ื ืื ืžื›ื‘ื™ื ืื•ืชื ื›ืืฉืจ ืื™ื ื ื‘ืฉื™ืžื•ืฉ. ืชืžื™ื“ ืชื”ื™ืชื™ ืœืžื” ืื ื™ ืฆืจื™ืš ืฉืจืช ืžืจื•ื—ืง ื›ืžื• gcloud, ื ืจืื” ืฉืžืฆืืชื™ ืื•ืชื.

ื‘ืชื•ืจ ืžื›ื•ื ื” ื•ื™ืจื˜ื•ืืœื™ืช ืžืงื•ืžื™ืช, ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืื•ืชื• Alpine, ืฉื ืžืฆื ื‘ืฉื™ืžื•ืฉ ืคืขื™ืœ ื‘ืžื›ื•ืœื•ืช docker. ื•ื‘ื›ืŸ, ืื• ื”ืคืฆื•ืช ืงืœื•ืช ืื—ืจื•ืช ื›ื“ื™ ืœื”ืคื•ืš ืืช ื”ืžื›ื•ื ื” ืœืืชื—ืœ ืžื”ืจ ื™ื•ืชืจ.

ื‘ืฉื•ืจื” ื”ืชื—ืชื•ื ื”: ืืชื” ื™ื›ื•ืœ ื•ืฆืจื™ืš ืœื”ืคืขื™ืœ ืžืกื“ื™ ื ืชื•ื ื™ื ื•ืฉืืจ ืžื•ืฆืจื™ ืชืฉืชื™ืช ื‘ืฉืจืชื™ื ืžืจื•ื—ืงื™ื ืื• ื‘-virtualbox. ืื ื™ ืœื ืฆืจื™ืš ื“ื•ืงืจ ืœืžื˜ืจื•ืช ื”ืืœื”.

ืงืฆืช ืขืœ ืชืžื•ื ื•ืช ื“ื•ืงืจ ื•ื”ืคืฆื”

ื›ื‘ืจ ื›ืชื‘ืชื™ ืžืืžืจ ืฉื‘ื• ืจืฆื™ืชื™ ืœื”ืขื‘ื™ืจ ืฉืฉื™ืžื•ืฉ ื‘ืชืžื•ื ื•ืช docker ืื™ื ื• ืžืกืคืง ืฉื•ื ืขืจื•ื‘ื”. ื™ืฉ ืฆื•ืจืš ื‘ืชืžื•ื ื•ืช Docker ืจืง ื›ื“ื™ ืœื™ืฆื•ืจ ืžื™ื›ืœ Docker. ืื ืืชื” ืžืฉื“ืจื’ ืœืชืžื•ื ืช docker, ืื– ืืชื” ืžืฉื“ืจื’ ืœืฉื™ืžื•ืฉ ื‘ืงื•ื ื˜ื™ื™ื ืจื™ื ืฉืœ docker ื•ืชืฉืชืžืฉ ืจืง ื‘ื”ื.

ื”ืื ืจืื™ืช ืื™ืคื” ืžืคืชื—ื™ ืชื•ื›ื ื” ืžืขื‘ื™ืจื™ื ืืช ื”ืžื•ืฆืจื™ื ืฉืœื”ื ืจืง ื‘ืชืžื•ื ืช docker?
ื”ืชื•ืฆืื” ืฉืœ ืจื•ื‘ ื”ืžื•ืฆืจื™ื ื”ื™ื ืงื‘ืฆื™ื ื‘ื™ื ืืจื™ื™ื ืขื‘ื•ืจ ืคืœื˜ืคื•ืจืžื” ืกืคืฆื™ืคื™ืช; ื”ื ืคืฉื•ื˜ ืžืชื•ื•ืกืคื™ื ืœืชืžื•ื ืช docker, ืืฉืจ ืขื•ื‘ืจืช ื‘ื™ืจื•ืฉื” ืžื”ืคืœื˜ืคื•ืจืžื” ื”ืจืฆื•ื™ื”. ื”ืื ืื™ ืคืขื ืชื”ื™ืชื ืžื“ื•ืข ื™ืฉ ื›ืœ ื›ืš ื”ืจื‘ื” ืชืžื•ื ื•ืช ื“ื•ืžื•ืช ื‘- dockerhub? ื”ื–ืŸ nginx ืœืžืฉืœ, ืชืจืื” 100500 ืชืžื•ื ื•ืช ืžืื ืฉื™ื ืฉื•ื ื™ื. ื”ืื ืฉื™ื ื”ืืœื” ืœื ืคื™ืชื—ื• ืืช nginx ื‘ืขืฆืžื, ื”ื ืคืฉื•ื˜ ื”ื•ืกื™ืคื• nginx ืจืฉืžื™ ืœืชืžื•ื ืช ื”-Docker ืฉืœื”ื ื•ืชื‘ืœื• ืื•ืชื” ื‘ืชืฆื•ืจื•ืช ืžืฉืœื”ื ืœื ื•ื—ื•ืช ื”ืฉืงืช ืงื•ื ื˜ื™ื™ื ืจื™ื.

ื‘ืื•ืคืŸ ื›ืœืœื™, ืืชื” ื™ื›ื•ืœ ืคืฉื•ื˜ ืœืื—ืกืŸ ืืช ื–ื” ื‘-tgz, ืื ืžื™ืฉื”ื• ืฆืจื™ืš ืœื”ืคืขื™ืœ ืืช ื–ื” ื‘-docer, ืื– ืชืŸ ืœื• ืœื”ื•ืกื™ืฃ ืืช tgz ืœ-Dockerfile, ืœืจืฉืช ืžื”ืกื‘ื™ื‘ื” ื”ืจืฆื•ื™ื” ื•ืœื™ืฆื•ืจ ืœื—ืžื ื™ื•ืช ื ื•ืกืคื•ืช ืฉืœื ืžืฉื ื•ืช ืืช ื”ืืคืœื™ืงืฆื™ื” ืขืฆืžื” ื‘-tgz. ื›ืœ ืžื™ ืฉื™ื™ืฆื•ืจ ืชืžื•ื ืช docker ื™ื™ื“ืข ืžื” ื–ื” tgz ื•ืžื” ื”ื•ื ืฆืจื™ืš ื›ื“ื™ ืœืขื‘ื•ื“. ื›ืš ืื ื™ ืžืฉืชืžืฉ ื‘-docer ื›ืืŸ

ื‘ืฉื•ืจื” ื”ืชื—ืชื•ื ื”: ืื ื™ ืœื ืฆืจื™ืš ืืช ื”ืจื™ืฉื•ื ืฉืœ docker, ืื ื™ ืืฉืชืžืฉ ื‘ืกื•ื’ ืฉืœ S3 ืื• ืจืง ืื—ืกื•ืŸ ืงื‘ืฆื™ื ื›ืžื• google drive/dropbox

ื“ื•ืงืจ ื‘-CI

ื›ืœ ื”ื—ื‘ืจื•ืช ื‘ื”ืŸ ืขื‘ื“ืชื™ ื“ื•ืžื•ืช. ื”ื ื‘ื“ืจืš ื›ืœืœ ืžื›ื•ืœืช. ื›ืœื•ืžืจ, ื™ืฉ ืœื”ื ืืคืœื™ืงืฆื™ื” ืื—ืช, ืžื—ืกื ื™ืช ื˜ื›ื ื•ืœื•ื’ื™ื” ืื—ืช (ื˜ื•ื‘, ืื•ืœื™ ื›ืžื” ืื• ืฉืœื•ืฉ ืฉืคื•ืช ืชื›ื ื•ืช).

ื—ื‘ืจื•ืช ืืœื” ืžืฉืชืžืฉื•ืช ื‘-docker ื‘ืฉืจืชื™ื ืฉืœื”ืŸ ืฉื‘ื”ื ืคื•ืขืœ ืชื”ืœื™ืš ื”-CI. ืฉืืœื”: ืœืžื” ืืชื” ืฆืจื™ืš ืœื‘ื ื•ืช ืคืจื•ื™ืงื˜ื™ื ื‘ืงื•ื ื˜ื™ื™ื ืจ docker ื‘ืฉืจืชื™ื ืฉืœืš? ืœืžื” ืœื ืคืฉื•ื˜ ืœื”ื›ื™ืŸ ืกื‘ื™ื‘ื” ืœ-build, ืœืžืฉืœ, ืœื›ืชื•ื‘ ืกืคืจ ื”ืคืขืœื” ืฉืœ Ansible ืฉื™ืชืงื™ืŸ ืืช ื”ื’ืจืกืื•ืช ื”ื“ืจื•ืฉื•ืช ืฉืœ nodejs, php, jdk, ืœื”ืขืชื™ืง ืžืคืชื—ื•ืช ssh ื•ื›ื•' ืœืฉืจืช ื‘ื• ื™ืชื‘ืฆืข ื”-build?

ืขื›ืฉื™ื• ืื ื™ ืžื‘ื™ืŸ ืฉื–ื” ื™ื•ืจื” ืœืขืฆืžื™ ื‘ืจื’ืœ, ื›ื™ ื“ื•ืงืจ ืœื ืžื‘ื™ื ืฉื•ื ืจื•ื•ื— ืขื ื”ื‘ื™ื“ื•ื“ ืฉืœื•. ื‘ืขื™ื•ืช ืฉื ืชืงืœืชื™ ื‘ื”ืŸ ืขื CI ื‘- docker:

  • ืฉื•ื‘ ืืชื” ืฆืจื™ืš ืชืžื•ื ืช docker ื›ื“ื™ ืœื‘ื ื•ืช. ืืชื” ืฆืจื™ืš ืœื—ืคืฉ ืชืžื•ื ื” ืื• ืœื›ืชื•ื‘ dockerfile ืžืฉืœืš.
  • 90% ืฉืืชื” ืฆืจื™ืš ืœื”ืขื‘ื™ืจ ื›ืžื” ืžืคืชื—ื•ืช ssh, ื ืชื•ื ื™ื ืกื•ื“ื™ื™ื ืฉืืชื” ืœื ืจื•ืฆื” ืœื›ืชื•ื‘ ืœืชืžื•ื ืช docker.
  • ื”ืžื™ื›ืœ ื ื•ืฆืจ ื•ืžืช, ื›ืœ ื”ืžื˜ืžื•ื ื™ื ื”ื•ืœื›ื™ื ืœืื™ื‘ื•ื“ ื™ื—ื“ ืื™ืชื•. ื”-build ื”ื‘ื ื™ื•ืจื™ื“ ืžื—ื“ืฉ ืืช ื›ืœ ื”ืชืœื•ืช ื‘ืคืจื•ื™ืงื˜, ื•ื–ื” ื’ื•ื–ืœ ื–ืžืŸ ื•ืœื ื™ืขื™ืœ, ื•ื–ืžืŸ ื–ื” ื›ืกืฃ.

ืžืคืชื—ื™ื ืœื ื‘ื•ื ื™ื ืคืจื•ื™ืงื˜ื™ื ื‘ืงื•ื ื˜ื™ื™ื ืจื™ื ืฉืœ docker (ืคืขื ื”ื™ื™ืชื™ ืžืขืจื™ืฅ ื›ื–ื”, ื‘ืืžืช, ืื ื™ ืžืจื—ื ืขืœ ืขืฆืžื™ ื‘ืขื‘ืจ xD). ื‘-java ืืคืฉืจ ืœืงื‘ืœ ื›ืžื” ื’ืจืกืื•ืช ื•ืœืฉื ื•ืช ืื•ืชืŸ ื‘ืคืงื•ื“ื” ืื—ืช ืœื–ื• ืฉืืชื ืฆืจื™ื›ื™ื ืขื›ืฉื™ื•. ื–ื” ืื•ืชื• ื“ื‘ืจ ื‘-nodejs, ื™ืฉ nvm.

ืคืœื˜

ืื ื™ ืžืืžื™ืŸ ืฉื“ื•ืงืจ ื”ื•ื ื›ืœื™ ืžืื•ื“ ื—ื–ืง ื•ื’ืžื™ืฉ, ื–ื” ื”ื—ื™ืกืจื•ืŸ ืฉืœื• (ื ืฉืžืข ืžื•ื–ืจ, ื›ืŸ). ื‘ืขื–ืจืชื•, ื—ื‘ืจื•ืช ื™ื›ื•ืœื•ืช ื‘ืงืœื•ืช ืœื”ืชืžื›ืจ ืืœื™ื• ื•ืœื”ืฉืชืžืฉ ื‘ื• ื”ื™ื›ืŸ ืฉืฆืจื™ืš ื•ืœื ื ื—ื•ืฅ. ืžืคืชื—ื™ื ืžืฉื™ืงื™ื ืืช ื”ืงื•ื ื˜ื™ื™ื ืจื™ื ืฉืœื”ื, ื—ืœืง ืžื”ืกื‘ื™ื‘ื•ืช ืฉืœื”ื, ื•ืื– ื”ื›ืœ ื–ื•ืจื ื‘ืฆื•ืจื” ื—ืœืงื” ืœ-CI ื•ืœื™ื™ืฆื•ืจ. ืฆื•ื•ืช DevOps ื›ื•ืชื‘ ืงื•ื“ ื›ืœืฉื”ื• ืœื”ืคืขืœืช ื”ืงื•ื ื˜ื™ื™ื ืจื™ื ื”ืœืœื•.

ื”ืฉืชืžืฉ ื‘-Docker ืจืง ืขืœ ื”ื›ื™ ืขื“ื›ื ื™ ืฉืœื‘ ื‘ืชื”ืœื™ืš ื”ืขื‘ื•ื“ื” ืฉืœืš, ืืœ ืชื’ืจื•ืจ ืื•ืชื• ืœืคืจื•ื™ืงื˜ ื‘ื”ืชื—ืœื”. ื–ื” ืœื ื™ืคืชื•ืจ ืืช ื”ื‘ืขื™ื•ืช ื”ืขืกืงื™ื•ืช ืฉืœืš. ื”ื•ื ืจืง ื™ืขื‘ื™ืจ ืืช ื”ื‘ืขื™ื•ืช ืœืจืžื” ืื—ืจืช ื•ื™ืฆื™ืข ืคืชืจื•ื ื•ืช ืžืฉืœื•, ืืชื” ืชืขืฉื” ืขื‘ื•ื“ื” ื›ืคื•ืœื”.

ื›ืืฉืจ ื™ืฉ ืฆื•ืจืš ื‘ื“ื•ืงืจ: ื”ื’ืขืชื™ ืœืžืกืงื ื” ืฉื“ื•ืงืจ ื˜ื•ื‘ ืžืื•ื“ ื‘ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืฉืœ ืชื”ืœื™ืš ื ืชื•ืŸ, ืื‘ืœ ืœื ื‘ื‘ื ื™ื™ืช ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื‘ืกื™ืกื™ืช

ืื ืืชื” ืขื“ื™ื™ืŸ ืžื—ืœื™ื˜ ืœื”ืฉืชืžืฉ ื‘-docker, ืื–:

  • ืœื”ื™ื•ืช ื–ื”ื™ืจื™ื ื‘ื™ื•ืชืจ
  • ืืœ ืชื›ืจื™ื— ืžืคืชื—ื™ื ืœื”ืฉืชืžืฉ ื‘-docker
  • ื”ืชืื ืืช ื”ืฉื™ืžื•ืฉ ื‘ื• ื‘ืžืงื•ื ืื—ื“, ืืœ ืชืคื™ืฅ ืื•ืชื• ื‘ื›ืœ ื”ืžืื’ืจื™ื ืฉืœ Dockefile ื•-docker-compose

ื .ื‘.:

ืชื•ื“ื” ืฉืงืจืืชื, ืžืื—ืœ ืœื›ื ื”ื—ืœื˜ื•ืช ืฉืงื•ืคื•ืช ื‘ืขื ื™ื™ื ื™ื›ื ื•ื™ืžื™ ืขื‘ื•ื“ื” ืคื•ืจื™ื™ื!

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”