ืฉื™ื˜ื•ืช ืžืฉืœื•ื— ืจืฆื™ืคื•ืช ืขื Docker (ืกืงื™ืจื” ื•ื•ื™ื“ืื•)

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

31 ื‘ืžืื™ ื‘ื›ื ืก RootConf 2016, ืฉื ืขืจืš ื‘ืžืกื’ืจืช ื”ืคืกื˜ื™ื‘ืœ "ื˜ื›ื ื•ืœื•ื’ื™ื•ืช ืื™ื ื˜ืจื ื˜ ืจื•ืกื™ื•ืช" (RIT++ 2016), ื ืคืชื— ื”ืžื“ื•ืจ "ืคืจื™ืกื” ื•ืคืจื™ืกื” ืžืชืžืฉื›ืช" ื‘ื“ื•"ื— "ืฉื™ื˜ื•ืช ืขื‘ื•ื“ื” ืžื•ืžืœืฆื•ืช ืฉืœ ืžืฉืœื•ื— ืžืชืžืฉืš ืขื Docker". ื”ื•ื ืกื™ื›ื ื•ืกื™ื“ืจ ืืช ื”ืฉื™ื˜ื•ืช ื”ืžื•ืžืœืฆื•ืช ืœื‘ื ื™ื™ืช ืชื”ืœื™ืš ืžืฉืœื•ื— ืžืชืžืฉืš (CD) ื‘ืืžืฆืขื•ืช Docker ื•ืžื•ืฆืจื™ ืงื•ื“ ืคืชื•ื— ืื—ืจื™ื. ืื ื• ืขื•ื‘ื“ื™ื ืขื ื”ืคืชืจื•ื ื•ืช ื”ืœืœื• ื‘ื™ื™ืฆื•ืจ, ืžื” ืฉืžืืคืฉืจ ืœื ื• ืœื”ืกืชืžืš ืขืœ ื ื™ืกื™ื•ืŸ ืžืขืฉื™.

ืฉื™ื˜ื•ืช ืžืฉืœื•ื— ืจืฆื™ืคื•ืช ืขื Docker (ืกืงื™ืจื” ื•ื•ื™ื“ืื•)

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

ืžืฉืœื•ื— ืจืฆื™ืฃ ืขื Docker

ืชื—ืช ืžืฉืœื•ื— ืจืฆื™ืฃ ืื ื• ืžื‘ื™ื ื™ื ืืช ืฉืจืฉืจืช ื”ืื™ืจื•ืขื™ื ืฉื›ืชื•ืฆืื” ืžืžื ื” ืงื•ื“ ื”ืืคืœื™ืงืฆื™ื” ืžืžืื’ืจ Git ืžื’ื™ืข ืœืจืืฉื•ื ื” ืœื™ื™ืฆื•ืจ, ื•ืœืื—ืจ ืžื›ืŸ ืžื’ื™ืข ืœืืจื›ื™ื•ืŸ. ื”ื™ื ื ืจืื™ืช ื›ืš: Git โ†’ Build โ†’ Test โ†’ Release โ†’ Operate.

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

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

ื“ืคื•ืก ืคืจื™ืกื” ืจืืฉื™

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

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

ืžื™ื›ืœื™ื•ืช ืžืกืคืงืช ื™ืชืจื•ื ื•ืช ืจื‘ื™ื ืื—ืจื™ื ื‘ืขืช ืคืจื™ืกื”. ื›ืœ ื™ื™ืฉื•ื ืชืœื•ื™ ื’ืจืกื” ืกืคืฆื™ืคื™ืช (ืื• ื˜ื•ื•ื— ื’ืจืกืื•ืช) ืžึฐืชื•ึผืจื’ึฐืžึธืŸ, ื–ืžื™ื ื•ืช ืžื•ื“ื•ืœื™ื/ื”ืจื—ื‘ื•ืช ื•ื›ื•', ื›ืžื• ื’ื ื’ืจืกืื•ืชื™ื”ื. ื•ื–ื” ื—ืœ ืœื ืจืง ืขืœ ืกื‘ื™ื‘ืช ื”ื”ืคืขืœื” ื”ืžื™ื™ื“ื™ืช, ืืœื ื’ื ืขืœ ื”ืกื‘ื™ื‘ื” ื›ื•ืœื”, ื›ื•ืœืœ ืชื•ื›ื ืช ืžืขืจื›ืช ื•ื”ื’ืจืกื” ืฉืœื• (ืขื“ ื”ืคืฆืช ืœื™ื ื•ืงืก ื‘ืฉื™ืžื•ืฉ). ื‘ืฉืœ ื”ืขื•ื‘ื“ื” ืฉืžื›ื•ืœื•ืช ืžื›ื™ืœื•ืช ืœื ืจืง ืงื•ื“ ื™ื™ืฉื•ื, ืืœื ื’ื ืžืขืจื›ืช ื•ืชื•ื›ื ืช ื™ื™ืฉื•ื ืžื•ืชืงื ื•ืช ืžืจืืฉ ืฉืœ ื”ื’ืจืกืื•ืช ื”ื ื“ืจืฉื•ืช, ืืชื” ื™ื›ื•ืœ ืœืฉื›ื•ื— ืžื‘ืขื™ื•ืช ืขื ืชืœื•ืช.

ื‘ื•ืื• ื ืขืฉื” ื”ื›ืœืœื” ื“ืคื•ืก ื”ื”ืฉืงื” ื”ืจืืฉื™ ื’ืจืกืื•ืช ื—ื“ืฉื•ืช ืชื•ืš ื”ืชื—ืฉื‘ื•ืช ื‘ื’ื•ืจืžื™ื ื”ื‘ืื™ื:

  1. ื‘ื”ืชื—ืœื”, ื”ื’ืจืกื” ื”ื™ืฉื ื” ืฉืœ ื”ืืคืœื™ืงืฆื™ื” ืคื•ืขืœืช ื‘ืžื™ื›ืœ ื”ืจืืฉื•ืŸ.
  2. ืœืื—ืจ ืžื›ืŸ ืžื’ืœื’ืœื™ื ืืช ื”ื’ืจืกื” ื”ื—ื“ืฉื” ื•"ืžืชื—ืžืžื™ื" ื‘ืžื™ื›ืœ ืฉื ื™. ืจืื•ื™ ืœืฆื™ื™ืŸ ื›ื™ ื’ืจืกื” ื—ื“ืฉื” ื–ื• ืขืฆืžื” ืขืฉื•ื™ื” ืœืฉืืช ืœื ืจืง ืงื•ื“ ื™ื™ืฉื•ื ืžืขื•ื“ื›ืŸ, ืืœื ื’ื ื›ืœ ื”ืชืœื•ืช ืฉืœื”, ื›ืžื• ื’ื ืจื›ื™ื‘ื™ ืžืขืจื›ืช (ืœื“ื•ื’ืžื”, ื’ืจืกื” ื—ื“ืฉื” ืฉืœ OpenSSL ืื• ื”ื”ืคืฆื” ื›ื•ืœื”).
  3. ื›ืืฉืจ ื”ื’ืจืกื” ื”ื—ื“ืฉื” ืžื•ื›ื ื” ื‘ืžืœื•ืื” ืœืฉืจืช ื‘ืงืฉื•ืช, ื”ืชืขื‘ื•ืจื” ืขื•ื‘ืจืช ืžื”ืžื›ืœ ื”ืจืืฉื•ืŸ ืœืฉื ื™.
  4. ื›ืขืช ื ื™ืชืŸ ืœืขืฆื•ืจ ืืช ื”ื’ืจืกื” ื”ื™ืฉื ื”.

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

ืฉื™ื˜ื•ืช ืžืฉืœื•ื— ืจืฆื™ืคื•ืช ืขื Docker (ืกืงื™ืจื” ื•ื•ื™ื“ืื•)
ื”ื”ืžืœืฆื” ื”ืจืืฉื•ื ื” ื”ืกื•ืคื™ืช ื ืฉืžืขืช ื›ืžื• ืžืฉื”ื• ืฉืืคื™ืœื• ื”ืงืคื˜ืŸ ืœื ื”ืฆืœื™ื— ืœืžืฆื•ื ื‘ื• ืคื’ื: "[ื‘ืขืช ืืจื’ื•ืŸ ืžืฉืœื•ื— ืจืฆื™ืฃ ืขื Docker] ื”ืฉืชืžืฉ ื‘-Docker [ื•ืชื‘ื™ืŸ ืžื” ื–ื” ื ื•ืชืŸ]" ื–ื›ืจื•, ืœื ืžื“ื•ื‘ืจ ื‘ื›ื“ื•ืจ ื›ืกืฃ ืฉื™ืคืชื•ืจ ื›ืœ ื‘ืขื™ื”, ืืœื ื‘ื›ืœื™ ื”ืžืกืคืง ื‘ืกื™ืก ื ืคืœื.

ื™ื›ื•ืœืช ืฉื—ื–ื•ืจ

ื‘"ืืคืฉืจื•ืช ืœืฉื—ื–ื•ืจ" ืื ื• ืžืชื›ื•ื•ื ื™ื ืœืงื‘ื•ืฆื” ื›ืœืœื™ืช ืฉืœ ื‘ืขื™ื•ืช ืฉื ืชืงืœื•ืช ื‘ื”ืŸ ื‘ืขืช โ€‹โ€‹ื”ืคืขืœืช ื™ื™ืฉื•ืžื™ื. ืื ื—ื ื• ืžื“ื‘ืจื™ื ืขืœ ืžืงืจื™ื ื›ืืœื”:

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

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

ืชืฉืชื™ืช ื”ื™ื ืงื•ื“

ืื ื“ืจื™ืฉื•ืช ื”ืชืฉืชื™ืช (ื–ืžื™ื ื•ืช ืชื•ื›ื ืช ื”ืฉืจืช, ื’ืจืกืชื” ื•ื›ื•') ืื™ื ืŸ ืคื•ืจืžืœื™ื•ืช ื•"ืžืชื•ื›ื ืชื•ืช", ืื–ื™ ื”ืฉืงืช ื›ืœ ืขื“ื›ื•ืŸ ืืคืœื™ืงืฆื™ื” ืขืœื•ืœื” ืœื’ืจื•ื ืœืชื•ืฆืื•ืช ื”ืจื•ืช ืืกื•ืŸ. ืœื“ื•ื’ืžื, ื‘ืกื˜ื™ื™ื’'ื™ื ื’ ื›ื‘ืจ ืขื‘ืจืชื ืœ-PHP 7.0 ื•ืฉื›ืชื‘ืชื ืืช ื”ืงื•ื“ ื‘ื”ืชืื - ืื– ื”ื•ืคืขืชื• ื‘ื”ืคืงื” ืขื ืื™ื–ื” PHP ื™ืฉืŸ (5.5) ื‘ื”ื—ืœื˜ ืชืคืชื™ืข ืžื™ืฉื”ื•. ืื•ืœื™ ืœื ืชืฉื›ื—ื• ืžืฉื™ื ื•ื™ ื’ื“ื•ืœ ื‘ื’ืจืกืช ื”ืžืชื•ืจื’ืžืŸ, ืื‘ืœ "ื”ืฉื˜ืŸ ื ืžืฆื ื‘ืคืจื˜ื™ื ื”ืงื˜ื ื™ื": ื”ื”ืคืชืขื” ืขืฉื•ื™ื” ืœื”ื™ื•ืช ื‘ืขื“ื›ื•ืŸ ืžื™ื ื•ืจื™ ืฉืœ ื›ืœ ืชืœื•ืช.

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

ืฉื™ื˜ื•ืช ืžืฉืœื•ื— ืจืฆื™ืคื•ืช ืขื Docker (ืกืงื™ืจื” ื•ื•ื™ื“ืื•)

ื‘ืžืงืจื” ืฉืœ ืืจื›ื™ื˜ืงื˜ื•ืจืช ืืคืœื™ืงืฆื™ื” ืžืจื•ื‘ืช ืฉื›ื‘ื•ืช โ€“ ืœืžืฉืœ, ื™ืฉ nginx, ืฉืขื•ืžื“ ืžื•ืœ ืืคืœื™ืงืฆื™ื” ืฉื›ื‘ืจ ืคื•ืขืœืช ื‘ืชื•ืš ืงื•ื ื˜ื™ื™ื ืจ Docker โ€“ ื™ืฉ ืœื™ืฆื•ืจ ืชืžื•ื ื•ืช Docker ืžืงื•ื“ ื‘-Git ืขื‘ื•ืจ ื›ืœ ืฉื›ื‘ื”. ืื– ื”ืชืžื•ื ื” ื”ืจืืฉื•ื ื” ืชื›ื™ืœ ืืคืœื™ืงืฆื™ื” ืขื ืžืชื•ืจื’ืžืŸ ื•ืชืœื•ืช "ืงืจื•ื‘ื•ืช" ืื—ืจื•ืช, ื•ื”ืชืžื•ื ื” ื”ืฉื ื™ื™ื” ืชื›ื™ืœ ืืช ื”-nginx ื‘ืžืขืœื” ื”ื–ืจื.

ืชืžื•ื ื•ืช ื“ื•ืงืจ, ืชืงืฉื•ืจืช ืขื Git

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

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

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

ื“ืค

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

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

ืขื•ื“ื›ืŸ ื‘-13 ื‘ืื•ื’ื•ืกื˜ 2019: ื›ืจื’ืข ืคืจื•ื™ืงื˜ ื“ืค ืฉื•ื ื” ืฉื ืœ werf, ื”ืงื•ื“ ืฉืœื• ืฉื•ื›ืชื‘ ืœื—ืœื•ื˜ื™ืŸ ื‘-Go, ื•ื”ืชื™ืขื•ื“ ืฉืœื• ืฉื•ืคืจ ืžืฉืžืขื•ืชื™ืช.

ืงื•ื‘ืจื ื˜

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

ืœืฆื•ืจืš ื”ืฉืงื”, Kubernetes ืžืฆื™ืข:

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

ืžื›ื™ื•ื•ืŸ ืฉ-Continuous Delivery ื”ื•ื ืœื ืจืง ืฉื—ืจื•ืจ ืฉืœ ื’ืจืกื” ื—ื“ืฉื”, ืœ-Kubernetes ื™ืฉ ืžืกืคืจ ื™ื›ื•ืœื•ืช ืœืชื—ื–ื•ืงืช ืชืฉืชื™ืช ื‘ื”ืžืฉืš: ื ื™ื˜ื•ืจ ื•ืจื™ืฉื•ื ืžื•ื‘ื ื” ืขื‘ื•ืจ ื›ืœ ื”ืžื›ื•ืœื•ืช, ืงื ื” ืžื™ื“ื” ืื•ื˜ื•ืžื˜ื™ ื•ื›ื•'. ื›ืœ ื–ื” ื›ื‘ืจ ืขื•ื‘ื“ ื•ืจืง ืžื—ื›ื” ืœืชืงื™ื ื•ืช. ื™ื™ืฉื•ื ื‘ืชื”ืœื™ื›ื™ื ืฉืœืš.

ื”ืžืœืฆื•ืช ืกื•ืคื™ื•ืช

  1. ื”ืฉืชืžืฉ ื‘-Docker.
  2. ืฆื•ืจ ืชืžื•ื ื•ืช Docker ืฉืœ ื™ื™ืฉื•ืžื™ื ืœื›ืœ ื”ืฆืจื›ื™ื ืฉืœืš.
  3. ืคืขืœ ืœืคื™ ื”ืขื™ืงืจื•ืŸ "ืชืฉืชื™ืช ื”ื™ื ืงื•ื“."
  4. ืงื™ืฉื•ืจ Git ืœ-Docker.
  5. ืงื‘ืข ืืช ืกื“ืจ ื”ื”ืฉืงื”.
  6. ื”ืฉืชืžืฉื• ื‘ืคืœื˜ืคื•ืจืžื” ืžื•ื›ื ื” (Kubernetes ืื• ืื—ืจืช).

ืกืจื˜ื•ื ื™ื ื•ืฉืงื•ืคื™ื•ืช

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

ื”ืฆื’ืช ื”ื“ื•"ื—:

ื .ื‘.

ื“ื™ื•ื•ื—ื™ื ื ื•ืกืคื™ื ื‘ื ื•ืฉื ื‘ื‘ืœื•ื’ ืฉืœื ื•:

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

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