ืชื”ืœื™ืš ืคื™ืชื•ื— ื•ื‘ื“ื™ืงื” ืขื Docker ื•-Gitlab CI

ืื ื™ ืžืฆื™ืข ืœืงืจื•ื ืืช ืชืžืœื™ืœ ื”ื“ื•"ื— ืฉืœ ืืœื›ืกื ื“ืจ ืกื™ื’ืืฆ'ื‘ ืž-Inventos "ืชื”ืœื™ืš ืคื™ืชื•ื— ื•ื‘ื“ื™ืงื” ืขื Docker + Gitlab CI"

ืžื™ ืฉืจืง ืžืชื—ื™ืœ ืœื™ื™ืฉื ืืช ืชื”ืœื™ืš ื”ืคื™ืชื•ื— ื•ื”ื‘ื“ื™ืงื” ื”ืžื‘ื•ืกืก ืขืœ Docker + Gitlab CI ืฉื•ืืœ ืœืขืชื™ื ืงืจื•ื‘ื•ืช ืฉืืœื•ืช ื‘ืกื™ืกื™ื•ืช. ืื™ืคื” ืœื”ืชื—ื™ืœ? ืื™ืš ืœืืจื’ืŸ? ืื™ืš ืœื‘ื“ื•ืง?

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

ืœืžื™ ืื›ืคืช, ื‘ื‘ืงืฉื” ืžืชื—ืช ืœื—ืชื•ืœ.

ืฉืžื™ ืืœื›ืกื ื“ืจ ืกื™ื’ืืฆ'ื‘. ืื ื™ ืขื•ื‘ื“ ืขื‘ื•ืจ Inventos. ืืกืคืจ ืœื›ื ืขืœ ื”ื ื™ืกื™ื•ืŸ ืฉืœื™ ื‘ืฉื™ืžื•ืฉ ื‘-Docker ื•ื›ื™ืฆื“ ืื ื• ืžื™ื™ืฉืžื™ื ืื•ืชื• ื‘ื”ื“ืจื’ื” ื‘ืคืจื•ื™ืงื˜ื™ื ื‘ื—ื‘ืจื”.

ื ื•ืฉื ื”ืžืฆื’ืช: ืชื”ืœื™ืš ืคื™ืชื•ื— ื‘ืืžืฆืขื•ืช Docker ื•-Gitlab CI.

ืชื”ืœื™ืš ืคื™ืชื•ื— ื•ื‘ื“ื™ืงื” ืขื Docker ื•-Gitlab CI

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

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

ื”ืžื•ื˜ื• ืฉืœื ื• ื”ื•ื: ืขื’ืŸ ื›ืœ ืžื” ืฉืื ื—ื ื• ื™ื›ื•ืœื™ื ืœืฉื™ื ืขืœื™ื• ืืช ื”ื™ื“.

ืชื”ืœื™ืš ืคื™ืชื•ื— ื•ื‘ื“ื™ืงื” ืขื Docker ื•-Gitlab CI

ืื™ืœื• ื‘ืขื™ื•ืช ืื ื—ื ื• ืคื•ืชืจื™ื?

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

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

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

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

ื›ืืฉืจ ื”ืžืขืจื›ืช ื’ื“ืœื” ื•ืฉืžื•ืช ื”ื“ื•ืžื™ื™ื ื™ื ื”ืœืœื• ืžืชื—ื™ืœื™ื ืœื”ื™ื›ื ืก ืœืชืฆื•ืจื•ืช, ื ื•ืฆืจืช ื”ืชื ื’ืฉื•ืช ืกื‘ื™ื‘ืช ืคื™ืชื•ื— ื•ื ืชื™ื‘ ื”ืืชืจ ื ื›ืชื‘ ืžื—ื“ืฉ.

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

ื‘ืขื™ื” ื ื•ืกืคืช ื”ื™ื ื’ืจืกืื•ืช ืฉื•ื ื•ืช ืฉืœ ืกืคืจื™ื•ืช. ืœืขืชื™ื ืงืจื•ื‘ื•ืช ืงื•ืจื” ืฉืžืคืชื— ืขื•ื‘ื“ ืขื ืคืจื•ื™ืงื˜ื™ื ืฉื•ื ื™ื. ื™ืฉ ืคืจื•ื™ืงื˜ Legacy ืฉื”ื—ืœ ืœืคื ื™ ื—ืžืฉ ืฉื ื™ื (ืžืฉื ืช 2017 - ื”ืขืจื” ืขื•ืจืš). ื‘ื–ืžืŸ ื”ื”ืฉืงื”, ื”ืชื—ืœื ื• ืขื MySQL 5.5. ื™ืฉื ื ื’ื ืคืจื•ื™ืงื˜ื™ื ืžื•ื“ืจื ื™ื™ื ืฉื‘ื”ื ืื ื• ืžื ืกื™ื ืœื™ื™ืฉื ื’ืจืกืื•ืช ืžื•ื“ืจื ื™ื•ืช ื™ื•ืชืจ ืฉืœ MySQL, ืœืžืฉืœ, 5.7 ื•ืžืขืœื” (ื‘-2017 - ื”ืขืจื” ื”ืขืจื”)

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

ื”ื‘ืขื™ื” ื”ื‘ืื” ื”ื™ื ื›ืืฉืจ ืžืคืชื— ืขื•ื‘ื“ ืขืœ ืžื—ืฉื‘ ืžืงื•ืžื™, ื”ื•ื ืžืฉืชืžืฉ ื‘ืžืฉืื‘ื™ื ืžืงื•ืžื™ื™ื, ืงื‘ืฆื™ื ืžืงื•ืžื™ื™ื, RAM ืžืงื•ืžื™. ื›ืœ ืื™ื ื˜ืจืืงืฆื™ื” ื‘ื–ืžืŸ ืคื™ืชื•ื— ืคืชืจื•ืŸ ืœื‘ืขื™ื•ืช ืžืชื‘ืฆืขืช ื‘ืžืกื’ืจืช ื”ืขื•ื‘ื“ื” ืฉื”ื™ื ืขื•ื‘ื“ืช ืขืœ ืžื›ื•ื ื” ืื—ืช. ื“ื•ื’ืžื” ื”ื™ื ื›ืืฉืจ ื™ืฉ ืœื ื• ืฉืจืชื™ ืื—ื•ืจื™ ื‘-Production 3, ื•ื”ืžืคืชื— ืฉื•ืžืจ ืงื‘ืฆื™ื ื‘ืกืคืจื™ื™ืช ื”ืฉื•ืจืฉ ื•ืžืฉื nginx ืœื•ืงื— ืงื‘ืฆื™ื ื›ื“ื™ ืœื”ื’ื™ื‘ ืœื‘ืงืฉื”. ื›ืฉืงื•ื“ ื›ื–ื” ื ื›ื ืก ืœ-Production, ืžืกืชื‘ืจ ืฉื”ืงื•ื‘ืฅ ืงื™ื™ื ื‘ืื—ื“ ืž-3 ื”ืฉืจืชื™ื.

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

ืœืžืคืชื— ืคืจื•ื ื“ื ื“, ื”ืžืคืชื— ื‘-JS, ืื™ืŸ ื›ืžืขื˜ ื”ืฉืคืขื” ืขืœ Backend. ืžืคืชื— ื”ืงืฆื” ื”ืื—ื•ืจื™, ื‘ืชื•ืจื•, ืžืคืชื—, ื‘ืžืงืจื” ืฉืœื ื•, Ruby on Rails ื•ืื™ื ื• ืžืคืจื™ืข ืœืคืจื•ื ื“ื ื“. ื”ืื™ื ื˜ืจืืงืฆื™ื” ืžืชื‘ืฆืขืช ื‘ืืžืฆืขื•ืช ื”-API.

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

ืชื”ืœื™ืš ืคื™ืชื•ื— ื•ื‘ื“ื™ืงื” ืขื Docker ื•-Gitlab CI

ื›ืœื™ื. ื‘ืžื” ืื ื—ื ื• ืžืฉืชืžืฉื™ื?

  • ื“ื•ืงืจ ืขืฆืžื•. ื”-Dockerfile ืžืชืืจ ืืช ื”ืชืœื•ืช ืฉืœ ื™ื™ืฉื•ื ื™ื—ื™ื“.
  • Docker-compose ื”ื•ื ื—ื‘ื™ืœื” ื”ืžืื’ื“ืช ื›ืžื” ืžื™ื™ืฉื•ืžื™ Docker ืฉืœื ื•.
  • ืื ื• ืžืฉืชืžืฉื™ื ื‘-GitLab ื›ื“ื™ ืœืื—ืกืŸ ืืช ืงื•ื“ ื”ืžืงื•ืจ.
  • ืื ื• ืžืฉืชืžืฉื™ื ื‘-GitLab-CI ืœืฉื™ืœื•ื‘ ืžืขืจื›ื•ืช.

ืชื”ืœื™ืš ืคื™ืชื•ื— ื•ื‘ื“ื™ืงื” ืขื Docker ื•-Gitlab CI

ื”ื“ื•"ื— ืžื•ืจื›ื‘ ืžืฉื ื™ ื—ืœืงื™ื.

ื”ื—ืœืง ื”ืจืืฉื•ืŸ ื™ื“ื‘ืจ ืขืœ ืื™ืš Docker ื”ื•ืคืขืœ ืขืœ ืžื›ื•ื ื•ืช ืฉืœ ืžืคืชื—ื™ื.

ื”ื—ืœืง ื”ืฉื ื™ ื™ื“ื‘ืจ ืขืœ ืื™ืš ืœื™ืฆื•ืจ ืื™ื ื˜ืจืืงืฆื™ื” ืขื GitLab, ืื™ืš ืื ื—ื ื• ืžืจื™ืฆื™ื ื‘ื“ื™ืงื•ืช ื•ืื™ืš ืื ื—ื ื• ืžืชื’ืœื’ืœื™ื ืœ-Staging.

ืชื”ืœื™ืš ืคื™ืชื•ื— ื•ื‘ื“ื™ืงื” ืขื Docker ื•-Gitlab CI

Docker ื”ื™ื ื˜ื›ื ื•ืœื•ื’ื™ื” ื”ืžืืคืฉืจืช (ื‘ืืžืฆืขื•ืช ื’ื™ืฉื” ื”ืฆื”ืจืชื™ืช) ืœืชืืจ ืืช ื”ืจื›ื™ื‘ื™ื ื”ื“ืจื•ืฉื™ื. ื–ื”ื• Dockerfile ืœื“ื•ื’ืžื”. ื›ืืŸ ืื ื• ืžืฆื”ื™ืจื™ื ืฉืื ื• ื™ื•ืจืฉื™ื ืžื”ืชืžื•ื ื” ื”ืจืฉืžื™ืช ืฉืœ Ruby:2.3.0 Docker. ื”ื•ื ืžื›ื™ืœ Ruby ื’ืจืกื” 2.3 ืžื•ืชืงื ืช. ืื ื• ืžืชืงื™ื ื™ื ืืช ืกืคืจื™ื•ืช ื”ื‘ื ื™ื™ื” ื”ื ื“ืจืฉื•ืช ื•ืืช NodeJS. ืื ื• ืžืชืืจื™ื ืฉืื ื• ื™ื•ืฆืจื™ื ืกืคืจื™ื™ื” /app. ื”ื’ื“ืจ ืืช ืกืคืจื™ื™ืช ื”ืืคืœื™ืงืฆื™ื” ื›ืกืคืจื™ื™ืช ื”ืขื‘ื•ื“ื”. ื‘ืกืคืจื™ื™ื” ื–ื• ืื ื• ืžื ื™ื—ื™ื ืืช Gemfile ื”ืžื™ื ื™ืžืœื™ ื”ื ื“ืจืฉ ื•ืืช Gemfile.lock. ืœืื—ืจ ืžื›ืŸ ืื ื• ื‘ื•ื ื™ื ืืช ื”ืคืจื•ื™ืงื˜ื™ื ื”ืžืชืงื™ื ื™ื ืชืžื•ื ืช ืชืœื•ืช ื–ื•. ืื ื• ืžืฆื™ื™ื ื™ื ืฉื”ืžื›ื•ืœื” ืชื”ื™ื” ืžื•ื›ื ื” ืœื”ืื–ื ื” ื‘ื™ืฆื™ืื” ื—ื™ืฆื•ื ื™ืช 3000. ื”ืคืงื•ื“ื” ื”ืื—ืจื•ื ื” ื”ื™ื ื”ืคืงื•ื“ื” ืฉืžืคืขื™ืœื” ื™ืฉื™ืจื•ืช ืืช ื”ืืคืœื™ืงืฆื™ื” ืฉืœื ื•. ืื ื ื‘ืฆืข ืืช ืคืงื•ื“ืช ื”ืชื—ืœ ืฉืœ ื”ืคืจื•ื™ืงื˜, ื”ืืคืœื™ืงืฆื™ื” ืชื ืกื” ืœื”ืคืขื™ืœ ื•ืœื”ืคืขื™ืœ ืืช ื”ืคืงื•ื“ื” ืฉืฆื•ื™ื ื”.

ืชื”ืœื™ืš ืคื™ืชื•ื— ื•ื‘ื“ื™ืงื” ืขื Docker ื•-Gitlab CI

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

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

ืื ื• ืžืชืืจื™ื ื’ื ืฉืขืœื™ื ื• ืœื”ืขื‘ื™ืจ ื™ืฆื™ืื” ื‘ืžื—ืฉื‘ ื”ืžืืจื— ื”ืžืคืชื— ืฉืœื ื• ืž-3000 ืœ-3000 ื‘ื™ืฆื™ืืช ื”ืžื›ื•ืœื”. ื–ื” ื ืขืฉื” ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™ ื‘ืืžืฆืขื•ืช iptables ื•ื”ืžื ื’ื ื•ืŸ ืฉืœื•, ื”ืžื•ื˜ืžืข ื™ืฉื™ืจื•ืช ื‘-Docker.

ื”ืžืคืชื— ื™ื›ื•ืœ ื’ื, ื›ืžื• ืงื•ื“ื, ืœื’ืฉืช ืœื›ืœ ื›ืชื•ื‘ืช IP ื–ืžื™ื ื”, ืœื“ื•ื’ืžื”, 127.0.0.1 ื”ื™ื ื›ืชื•ื‘ืช ื”-IP ื”ืžืงื•ืžื™ืช ืื• ื”ื—ื™ืฆื•ื ื™ืช ืฉืœ ื”ืžื—ืฉื‘.

ื”ืฉื•ืจื” ื”ืื—ืจื•ื ื” ืื•ืžืจืช ืฉืžื™ื›ืœ ื”ืื™ื ื˜ืจื ื˜ ืชืœื•ื™ ื‘ืžื™ื›ืœ db. ื›ืืฉืจ ืื ื• ืงื•ืจืื™ื ืœื”ืชื—ืœื” ืฉืœ ืงื•ื ื˜ื™ื™ื ืจ ื”ืื™ื ื˜ืจื ื˜, docker-compose ื™ืชื—ื™ืœ ืชื—ื™ืœื” ืืช ืžืกื“ ื”ื ืชื•ื ื™ื ืขื‘ื•ืจื ื•. ื›ื‘ืจ ื‘ืชื—ื™ืœืช ื”ืžืื’ืจ (ืœืžืขืฉื”, ืœืื—ืจ ื”ืฉืงืช ื”ืงื•ื ื˜ื™ื™ื ืจ! ื–ื” ืœื ืžื‘ื˜ื™ื— ืืช ืžื•ื›ื ื•ืช ื”ืžืื’ืจ) ืชืคืขื™ืœ ืืช ื”ืืคืœื™ืงืฆื™ื”, ื”-backend ืฉืœื ื•.

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

ืชื”ืœื™ืš ืคื™ืชื•ื— ื•ื‘ื“ื™ืงื” ืขื Docker ื•-Gitlab CI

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

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

ืชื”ืœื™ืš ืคื™ืชื•ื— ื•ื‘ื“ื™ืงื” ืขื Docker ื•-Gitlab CI

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

ืœืื—ืจ ื‘ื ื™ื™ืช ื”ืชืžื•ื ื”, ื”ืžื›ื•ืœื•ืช ื”ืŸ ื‘ืคื™ืชื•ื— ื•ื”ืŸ ื‘ื”ืคืงื” ื™ื”ื™ื• ื–ื”ื™ื. ื–ื” ื ื›ื•ืŸ ื‘ืžื™ื•ื—ื“ ืขื‘ื•ืจ ื”ืชืงื ื•ืช ื’ื“ื•ืœื•ืช.

ืชื”ืœื™ืš ืคื™ืชื•ื— ื•ื‘ื“ื™ืงื” ืขื Docker ื•-Gitlab CI ื‘-Frontend ืื ื• ืžืฉืชืžืฉื™ื ื‘-JavaScipt ื•ื‘-NodeJS.

ืขื›ืฉื™ื• ื™ืฉ ืœื ื• ืืช ื”ืคืจื•ื™ืงื˜ ื”ืื—ืจื•ืŸ ื‘-ReacJS. ื”ื™ื–ื ื”ืจื™ืฅ ืืช ื”ื›ืœ ื‘ืžื™ื›ืœ ื•ืคื™ืชื— ื‘ืืžืฆืขื•ืช Hot-Reload.

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

ืชื”ืœื™ืš ืคื™ืชื•ื— ื•ื‘ื“ื™ืงื” ืขื Docker ื•-Gitlab CI

ื›ืืŸ ื ืชืชื™ ืืช ื”ืชื•ื›ื ื™ืช ืฉืœ ื”ืคืจื•ื™ืงื˜ ื”ืื—ืจื•ืŸ ืฉืœื ื•.

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

ืžื” ืขืฉื™ื ื• ื‘ืฉื‘ื™ืœ ื–ื”?

ื—ื™ืœืงื ื• ืœืืคืœื™ืงืฆื™ื” ืจื›ื™ื‘ื™ื ื›ืžื•: ื—ืœืง ื”ื ื™ื”ื•ืœ ื‘-JS, ื”-backend, ืฉืขื•ื‘ื“ ื“ืจืš ืžืžืฉืง REST ืชื—ืช Ruby on Rails. ื”ืงืฆื” ื”ืื—ื•ืจื™ ืžืงื™ื™ื ืื™ื ื˜ืจืืงืฆื™ื” ืขื ืžืกื“ ื”ื ืชื•ื ื™ื. ื”ืชื•ืฆืื” ืฉื ื•ืฆืจืช ื ื™ืชื ืช ืœืœืงื•ื—. ืคืื ืœ ื”ื ื™ื”ื•ืœ ืžืงื™ื™ื ืื™ื ื˜ืจืืงืฆื™ื” ืขื ื”ืงืฆื” ื”ืื—ื•ืจื™ ื•ืžืกื“ ื”ื ืชื•ื ื™ื ื‘ืืžืฆืขื•ืช ืžืžืฉืง REST.

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

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

ื”ื•ื“ืขื•ืช ื“ื—ื™ืคื” ืžืงื™ื™ืžื•ืช ืื™ื ื˜ืจืืงืฆื™ื” ืขื ืจื›ื™ื‘ ืื—ืจ ืฉืžื™ื•ืฉื ื‘-NodeJS.

ื ื‘ื ื™ื ืชื•ืจื™ื ื•ืื– ื ืฉืœื—ื•ืช ื”ื•ื“ืขื•ืช ื‘ื”ืชืื ืœืžื ื’ื ื•ืŸ ืฉืœื”ืŸ.

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

ืชื”ืœื™ืš ืคื™ืชื•ื— ื•ื‘ื“ื™ืงื” ืขื Docker ื•-Gitlab CI

ืื•ืชื• ื“ื‘ืจ ืื‘ืœ ื‘ืžืกืคืจื™ื. ื–ื” ื”ืžืงื•ื ืฉื‘ื• ืฉื™ืžื•ืฉ ื—ื•ื–ืจ ื‘ืงื•ื“ ื—ืฉื•ื‘.

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

ื‘ืื•ืชื• ื–ืžืŸ, ื”ืฉืชืžืฉื ื• ื‘ื’ืจืกื” 4 ืฉืœ NodeJS. ื›ืขืช (ื‘ืฉื ืช 2017 - ื”ืขืจื” ื”ืขืจื”) ื‘ื”ืชืคืชื—ื•ื™ื•ืช ื”ืื—ืจื•ื ื•ืช ืื ื• ืžืฉืชืžืฉื™ื ื‘ื’ืจืกื” 7 ืฉืœ NodeJS. ืื™ืŸ ื‘ืขื™ื” ื‘ืจื›ื™ื‘ื™ื ื—ื“ืฉื™ื ืœืขืจื‘ ื’ืจืกืื•ืช ื—ื“ืฉื•ืช ืฉืœ ืกืคืจื™ื•ืช.

ื‘ืžื™ื“ืช ื”ืฆื•ืจืš, ืชื•ื›ืœ ืœืฉื ื•ืช ื•ืœื”ืขืœื•ืช ืืช ื’ืจืกืช ื”-NodeJS ืžืฉื™ืจื•ืช ื”ื”ื•ื“ืขื•ืช Push.

ื•ืื ื ื•ื›ืœ ืœืฉืžื•ืจ ืขืœ ืชืื™ืžื•ืช API, ืื– ื ื™ืชืŸ ื™ื”ื™ื” ืœื”ื—ืœื™ืฃ ืื•ืชื• ื‘ืคืจื•ื™ืงื˜ื™ื ืื—ืจื™ื ืฉื”ื™ื• ื‘ืฉื™ืžื•ืฉ ื‘ืขื‘ืจ.

ืชื”ืœื™ืš ืคื™ืชื•ื— ื•ื‘ื“ื™ืงื” ืขื Docker ื•-Gitlab CI

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

ื‘ืขืช ื™ืฆื™ืจืช ืคืจื•ื™ืงื˜ ื—ื“ืฉ, ืื ื• ื™ื•ืฆืจื™ื Dockerfile, ืžืชืืจื™ื ืืช ื”ืžืขืจื›ืช ื”ืืงื•ืœื•ื’ื™ืช ื”ืจืฆื•ื™ื” (Python, Ruby, NodeJS). ื‘-docker-compose, ื”ื•ื ืžืชืืจ ืืช ื”ืชืœื•ืช ื”ื“ืจื•ืฉื” - ืžืกื“ ื”ื ืชื•ื ื™ื. ืื ื—ื ื• ืžืชืืจื™ื ืฉืื ื—ื ื• ืฆืจื™ื›ื™ื ืžืกื“ ื ืชื•ื ื™ื ืฉืœ ื’ืจืกื” ื›ื–ื• ื•ืื—ืจืช, ืžืื—ืกื ื™ื ื ืชื•ื ื™ื ืฉื ื•ืฉื.

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

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

ืชื”ืœื™ืš ืคื™ืชื•ื— ื•ื‘ื“ื™ืงื” ืขื Docker ื•-Gitlab CI

ืœืื—ืจ ืžื›ืŸ, ื™ืฉ ืœื ื• ืžืกืคืจ ืจื›ื™ื‘ื™ื: ืื“ืžื™ืŸ, ืื™ื ืคื•ืจืžืฆื™ื”-API, ื”ื•ื“ืขื•ืช ื“ื—ื™ืคื”.

ื›ื“ื™ ืœื”ืชื—ื™ืœ ืืช ื›ืœ ื–ื”, ื™ืฆืจื ื• ืžืื’ืจ ื ื•ืกืฃ, ืฉืงืจืื ื• ืœื• dockerized-app. ื›ืจื’ืข ืื ื• ืžืฉืชืžืฉื™ื ื‘ืžืกืคืจ ืžืื’ืจื™ื ืœืคื ื™ ื›ืœ ืจื›ื™ื‘. ื”ื ืคืฉื•ื˜ ืฉื•ื ื™ื ืžื‘ื—ื™ื ื” ืœื•ื’ื™ืช - ื‘-GitLab ื–ื” ื ืจืื” ื›ืžื• ืชื™ืงื™ื”, ืื‘ืœ ื‘ืžื—ืฉื‘ ืฉืœ ื”ืžืคืชื—, ืชื™ืงื™ื” ืœืคืจื•ื™ืงื˜ ืกืคืฆื™ืคื™. ืจืžื” ืื—ืช ืœืžื˜ื” ื”ื ื”ืจื›ื™ื‘ื™ื ืฉื™ืฉื•ืœื‘ื•.

ืชื”ืœื™ืš ืคื™ืชื•ื— ื•ื‘ื“ื™ืงื” ืขื Docker ื•-Gitlab CI

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

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

ืื ื™ืฉ ืฆื•ืจืš ื‘ืื™ื ื˜ื’ืจืฆื™ื” ืขื ื”ื•ื“ืขื•ืช ื“ื—ื™ืคื”, ืžื•ืคืขืœื•ืช docker-compose.yaml ื•-docker-compose-push.yaml.

ืžื›ื™ื•ื•ืŸ ืฉ-docker-compose.yaml ื•-docker-compose-push.yaml ื ืžืฆืื™ื ื‘ืชื™ืงื™ื™ื”, ื ื•ืฆืจืช ืื•ื˜ื•ืžื˜ื™ืช ืจืฉืช ื•ื™ืจื˜ื•ืืœื™ืช ืื—ืช.

ืชื”ืœื™ืš ืคื™ืชื•ื— ื•ื‘ื“ื™ืงื” ืขื Docker ื•-Gitlab CI

ืชื™ืื•ืจ ื”ืจื›ื™ื‘ื™ื. ื–ื”ื• ืงื•ื‘ืฅ ืžืชืงื“ื ื™ื•ืชืจ ืฉืื—ืจืื™ ืขืœ ืื™ืกื•ืฃ ื”ืจื›ื™ื‘ื™ื. ืžื” ืžื“ื”ื™ื ื›ืืŸ? ื›ืืŸ ืื ื• ืžืฆื™ื’ื™ื ืืช ืจื›ื™ื‘ ื”ืื™ื–ื•ืŸ.

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

ืขื‘ื•ืจ ืกื‘ื™ื‘ืช ื”ืคื™ืชื•ื—, ืื ื• ืžืฉืชืžืฉื™ื ื‘ื“ื•ืžื™ื™ืŸ .dev - api.informer.dev. ื™ื™ืฉื•ืžื™ื ืขื ื“ื•ืžื™ื™ืŸ .dev ื–ืžื™ื ื™ื ื‘ืžื—ืฉื‘ ื”ืžืงื•ืžื™ ืฉืœ ื”ืžืคืชื—.

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

ืชื”ืœื™ืš ืคื™ืชื•ื— ื•ื‘ื“ื™ืงื” ืขื Docker ื•-Gitlab CI

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

ืžืื–ืŸ ืฉืžื•ืช ื”ื“ื•ืžื™ื™ืŸ ืงื•ื‘ืข ืœืื™ื–ื” ืžื™ื›ืœ ืœืคื ื•ืช.

ื–ื” ื™ื›ื•ืœ ืœื”ื™ื•ืช nginx, ืฉื ื•ืชืŸ ืœืžื ื”ืœ JS. ื–ื” ื™ื›ื•ืœ ืœื”ื™ื•ืช nginx, ืฉื ื•ืชืŸ ืืช ื”-API, ืื• ืงื‘ืฆื™ื ืกื˜ื˜ื™ื™ื, ื”ื ื™ืชื ื™ื ืœ-nginx ื‘ืฆื•ืจื” ืฉืœ ื”ืขืœืื•ืช ืชืžื•ื ื•ืช.

ื”ืชืจืฉื™ื ืžืจืื” ืฉื”ืงื•ื ื˜ื™ื™ื ืจื™ื ืžื—ื•ื‘ืจื™ื ื‘ืืžืฆืขื•ืช ืจืฉืช ื•ื™ืจื˜ื•ืืœื™ืช ื•ืžื•ืกืชืจื™ื ืžืื—ื•ืจื™ ืคืจื•ืงืกื™.

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

ืชื”ืœื™ืš ืคื™ืชื•ื— ื•ื‘ื“ื™ืงื” ืขื Docker ื•-Gitlab CI

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

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

Hub.docer.com ืžื›ื™ืœ ื‘ื“ืจืš ื›ืœืœ ืงื™ืฉื•ืจื™ื ืœ-github.com, ื”ืžื›ื™ืœ ื ืชื•ื ื™ื ื’ื•ืœืžื™ื™ื ื™ืฉื™ืจื•ืช ืฉืžื”ื ืชื•ื›ืœื• ืœื‘ื ื•ืช ืืช ื”ืชืžื•ื ื” ื‘ืขืฆืžื›ื.

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

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

ื™ืฉื ื” ืืคืฉืจื•ืช ืœื™ืฆื•ืจ ืกื™ืกืžื” ืืงืจืื™ืช. ืื ื—ื ื• ืื•ืžืจื™ื ืฉืื ื—ื ื• ืฆืจื™ื›ื™ื ืžืฉืชืžืฉ, ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื”ื’ื“ื™ืจ ืกื™ืกืžื” ืœืžืฉืชืžืฉ, ื•ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื™ืฆื•ืจ ืžืกื“ ื ืชื•ื ื™ื.

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

ืชื”ืœื™ืš ืคื™ืชื•ื— ื•ื‘ื“ื™ืงื” ืขื Docker ื•-Gitlab CI

ื–ื•ื”ื™ ื“ื•ื’ืžื” ืœืื™ืš ื ืจืื™ืช ื’ืจืกื” ืกืคืฆื™ืคื™ืช ืฉืœ MySQL ื‘-github.com. ืืชื” ื™ื›ื•ืœ ืœืคืชื•ื— ืืช Dockerfile ื•ืœืจืื•ืช ืื™ืš ื”ื”ืชืงื ื” ืžืชืจื—ืฉืช ืฉื.

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

ืชื”ืœื™ืš ืคื™ืชื•ื— ื•ื‘ื“ื™ืงื” ืขื Docker ื•-Gitlab CI

ื ืขื‘ื•ืจ ืœื—ืœืง ื”ืฉื ื™.

ื›ื“ื™ ืœืื—ืกืŸ ืืช ืงื•ื“ื™ ื”ืžืงื•ืจ, ืขื‘ืจื ื• ืœ-gitlab. ื–ื•ื”ื™ ืžืขืจื›ืช ื—ื–ืงื” ืœืžื“ื™ ืฉื™ืฉ ืœื” ืžืžืฉืง ื•ื™ื–ื•ืืœื™.

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

ืฉื™ื—ืช Gitlab CI 2 https://goo.gl/uohKjI - ื“ื™ื•ื•ื— ืžืžื•ืขื“ื•ืŸ ืจื•ื‘ื™ ืจื•ืกื™ื” - ื“ื™ ืžืคื•ืจื˜ ื•ืื•ืœื™ ื–ื” ื™ืขื ื™ื™ืŸ ืื•ืชืš.

ืชื”ืœื™ืš ืคื™ืชื•ื— ื•ื‘ื“ื™ืงื” ืขื Docker ื•-Gitlab CI

ื›ืขืช ื ื‘ื—ืŸ ืžื” ื ื“ืจืฉ ืขืœ ืžื ืช ืœื”ืคืขื™ืœ ืืช Gitlab CI. ื›ื“ื™ ืœื”ืคืขื™ืœ ืืช Gitlab CI, ืื ื—ื ื• ืจืง ืฆืจื™ื›ื™ื ืœืฉื™ื ืืช ื”ืงื•ื‘ืฅ .gitlab-ci.yml ื‘ืฉื•ืจืฉ ื”ืคืจื•ื™ืงื˜.

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

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

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

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

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

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

ืื ื• ืžืคืขื™ืœื™ื ืขื‘ื•ืจ ืžืฉืชื ื” ื”ืกื‘ื™ื‘ื” ื”ื ื•ื›ื—ื™ ืืช ื”ืขื‘ืจื•ืช ืžืกื“ ื”ื ืชื•ื ื™ื ืฉื ื›ืชื‘ื• ืขืœ ื™ื“ื™ ื”ืžืคืชื—ื™ื.

ื™ืฉ ื”ืขืจื” ืฉื–ื” ื—ืœ ืจืง ืขืœ ืกื ื™ืฃ ื”ืžืืกื˜ืจ.

ื‘ืขืช ืฉื™ื ื•ื™ ืกื ื™ืคื™ื ืื—ืจื™ื ืื™ื ื• ืžื‘ื•ืฆืข.

ืืคืฉืจ ืœืืจื’ืŸ ื”ืฉืงื•ืช ืœืคื™ ืกื ื™ืคื™ื.

ืชื”ืœื™ืš ืคื™ืชื•ื— ื•ื‘ื“ื™ืงื” ืขื Docker ื•-Gitlab CI

ื›ื“ื™ ืœืืจื’ืŸ ื–ืืช ืขื•ื“ ื™ื•ืชืจ, ืขืœื™ื ื• ืœื”ืชืงื™ืŸ ืืช Gitlab Runner.

ื›ืœื™ ื–ื” ื›ืชื•ื‘ ื‘ื’ื•ืœื ื’. ืžื“ื•ื‘ืจ ื‘ืงื•ื‘ืฅ ื‘ื•ื“ื“, ื›ืžืงื•ื‘ืœ ื‘ืขื•ืœื ื”ื’ื•ืœื ื’, ืฉืื™ื ื• ืžืฆืจื™ืš ื›ืœ ืชืœื•ืช.

ื‘ืขืช ื”ื”ืคืขืœื”, ืื ื• ืจื•ืฉืžื™ื ืืช Gitlab Runner.

ืื ื—ื ื• ืžืงื‘ืœื™ื ืืช ื”ืžืคืชื— ื‘ืžืžืฉืง ื”ืื™ื ื˜ืจื ื˜ ืฉืœ Gitlab.

ืœืื—ืจ ืžื›ืŸ ืื ื• ืงื•ืจืื™ื ืœืคืงื•ื“ืช ื”ืืชื—ื•ืœ ื‘ืฉื•ืจืช ื”ืคืงื•ื“ื”.

ื”ื’ื“ืจ ืืช Gitlab Runner ื‘ืื•ืคืŸ ืื™ื ื˜ืจืืงื˜ื™ื‘ื™ (Shell, Docker, VirtualBox, SSH)

ื”ืงื•ื“ ื‘- Gitlab Runner ื™ื‘ื•ืฆืข ื‘ื›ืœ commit, ื‘ื”ืชืื ืœื”ื’ื“ืจืช .gitlab-ci.yml.

ืชื”ืœื™ืš ืคื™ืชื•ื— ื•ื‘ื“ื™ืงื” ืขื Docker ื•-Gitlab CI

ืื™ืš ื–ื” ื ืจืื” ื•ื™ื–ื•ืืœื™ืช ื‘-Gitlab ื‘ืžืžืฉืง ื”ืื™ื ื˜ืจื ื˜. ืœืื—ืจ ืฉื—ื™ื‘ืจื ื• ืืช GItlab CI, ื™ืฉ ืœื ื• ื“ื’ืœ ืฉืžืจืื” ืืช ืžืฆื‘ ื”-build ื›ืจื’ืข.

ืื ื—ื ื• ืจื•ืื™ื ืฉื ืขืฉืชื” commit ืœืคื ื™ 4 ื“ืงื•ืช ืฉืขื‘ืจ ืืช ื›ืœ ื”ื‘ื“ื™ืงื•ืช ื•ืœื ื’ืจื ืœื‘ืขื™ื•ืช.

ืชื”ืœื™ืš ืคื™ืชื•ื— ื•ื‘ื“ื™ืงื” ืขื Docker ื•-Gitlab CI

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

ืื ื ืœื—ืฅ ืขืœ build ืกืคืฆื™ืคื™, ืื– ื™ื”ื™ื” ืคืœื˜ ืžืกื•ืฃ ืฉืœ ื”ืคืงื•ื“ื•ืช ืฉื”ื•ืคืขืœื• ื‘ืชื”ืœื™ืš ืœืคื™ .gitlab-ci.yml.

ืชื”ืœื™ืš ืคื™ืชื•ื— ื•ื‘ื“ื™ืงื” ืขื Docker ื•-Gitlab CI

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

ืชื”ืœื™ืš ืคื™ืชื•ื— ื•ื‘ื“ื™ืงื” ืขื Docker ื•-Gitlab CI

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

ื›ื“ื™ ืœืขืฉื•ืช ื–ืืช, ื”ื™ื™ื ื• ืฆืจื™ื›ื™ื ืœืจืกืง ื”ื›ืœ ืœืชื™ืงื™ื•ืช ื ืคืจื“ื•ืช.

ืœืื—ืจ ืฉืขืฉื™ื ื• ื–ืืช, ื”ื™ื™ืชื” ืœื ื• ื‘ืขื™ื” ืขื ื”ืขื•ื‘ื“ื” ืฉ-Docker-compose ื™ื•ืฆืจ ืฉื˜ื— ืจืฉืช ืžืฉืœื• ืขื‘ื•ืจ ื›ืœ ืื‘ื ื•ืื™ื ื• ืจื•ืื” ืืช ื”ืจื›ื™ื‘ื™ื ืฉืœ ื”ืฉื›ืŸ.

ื›ื“ื™ ืœื”ืชืžืฆื, ื™ืฆืจื ื• ืืช ื”ืจืฉืช ื‘-Docker ื‘ืื•ืคืŸ ื™ื“ื ื™. ื ื›ืชื‘ ื‘-Docker-compose ืฉืืชื” ืžืฉืชืžืฉ ื‘ืจืฉืช ื›ื–ื• ืขื‘ื•ืจ ื”ืคืจื•ื™ืงื˜ ื”ื–ื”.

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

ื”ื ื•ืฉื ื”ื‘ื ื”ื•ื ืคื™ืฆื•ืœ ื”ื‘ืžื” ืขืœ ืคื ื™ ืžืกืคืจ ืคืจื•ื™ืงื˜ื™ื.

ืžื›ื™ื•ื•ืŸ ืฉื›ื“ื™ ืฉื›ืœ ื–ื” ื™ืจืื” ื™ืคื” ื•ื›ืžื” ืฉื™ื•ืชืจ ืงืจื•ื‘ ืœื™ื™ืฆื•ืจ, ื›ื“ืื™ ืœื”ืฉืชืžืฉ ื‘ืคื•ืจื˜ 80 ืื• 443, ื”ืžืฉืžืฉื™ื ื‘ื›ืœ ืžืงื•ื ื‘-WEB.

ืชื”ืœื™ืš ืคื™ืชื•ื— ื•ื‘ื“ื™ืงื” ืขื Docker ื•-Gitlab CI

ืื™ืš ืคืชืจื ื• ืืช ื–ื”? ื”ืงืฆืื ื• ืืช Gitlab Runner ืื—ื“ ืœื›ืœ ื”ืคืจื•ื™ืงื˜ื™ื ื”ื’ื“ื•ืœื™ื.

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

ื›ื“ื™ ืฉืœื ื™ื”ื™ื” ืœื ื• ื‘ื™ืช, ื”ื’ื‘ืœื ื• ืืช ืงื‘ื•ืฆืช ื”ืคืจื•ื™ืงื˜ื™ื ืฉืœื ื• ืœ-Gitlab Runner ืื—ื“, ืฉืžืชืžื•ื“ื“ ืœืœื ื‘ืขื™ื•ืช ืขื ื”ื ืคื—ื™ื ืฉืœื ื•.

ื”ืขื‘ืจื ื• ืืช nginx-proxy ืœืกืงืจื™ืคื˜ ื”ืคืขืœื” ื ืคืจื“ ื•ื”ื•ืกืคื ื• ืจืฉืชื•ืช ืขื‘ื•ืจ ื›ืœ ื”ืคืจื•ื™ืงื˜ื™ื ืฉื‘ื•.

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

ื”ื‘ืงืฉื•ืช ืฉืœื ื• ืžื’ื™ืขื•ืช ื“ืจืš ื”ื“ื•ืžื™ื™ืŸ ื‘ื™ืฆื™ืื” 80 ื•ื ืคืชืจื•ืช ืœืงื‘ื•ืฆืช ืžื›ื•ืœื•ืช ื”ืžืฉืจืชืช ืืช ื”ื“ื•ืžื™ื™ืŸ ื”ื–ื”.

ืชื”ืœื™ืš ืคื™ืชื•ื— ื•ื‘ื“ื™ืงื” ืขื Docker ื•-Gitlab CI

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

ืขื ื–ืืช, ืื ืชื–ื™ืŸ ืืช ื”ืงื•ื ื˜ื™ื™ื ืจ, ื–ื” ื™ื”ื™ื” root ื•ื”ืงื•ื‘ืฅ ืฉืื ื• ื™ื•ืฆืจื™ื ื‘ืžื™ื›ืœ ื–ื” ืžืงื‘ืœ ื–ื›ื•ื™ื•ืช root.

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

ืื™ืš ืืคืฉืจ ืœืคืชื•ืจ ืืช ื–ื”? ืืชื” ื™ื›ื•ืœ ืœื”ื•ืกื™ืฃ ืžืฉืชืžืฉื™ื ืฉื™ื”ื™ื• ื‘ืžื™ื›ืœ.

ืื™ืœื• ื‘ืขื™ื•ืช ื”ืชืขื•ืจืจื• ื›ืืฉืจ ื”ื•ืกืคื ื• ืืช ื”ืžืฉืชืžืฉ?

ื‘ืขืช ื™ืฆื™ืจืช ืžืฉืชืžืฉ, ืœืขืชื™ื ืงืจื•ื‘ื•ืช ืื™ืŸ ืœื ื• ืืช ืื•ืชื• ืžื–ื”ื” ืงื‘ื•ืฆื” (UID) ื•ืžื–ื”ื” ืžืฉืชืžืฉ (GID).

ื›ื“ื™ ืœืคืชื•ืจ ื‘ืขื™ื” ื–ื• ื‘ืžื™ื›ืœ, ืื ื• ืžืฉืชืžืฉื™ื ื‘ืžืฉืชืžืฉื™ื ืขื ืžื–ื”ื” 1000.

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

ืชื”ืœื™ืš ืคื™ืชื•ื— ื•ื‘ื“ื™ืงื” ืขื Docker ื•-Gitlab CI

ื™ืฉ ืœื ื• ืชื•ื›ื ื™ื•ืช?

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

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

ืื– ืื ื™ ืจื•ืฆื” ืœืœื›ืช ืจื—ื•ืง ื›ื‘ืจ ื›ื“ื™ ืœืœื›ืช ื™ืฉื™ืจื•ืช ืœืชื–ืžื•ืจ.

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

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

ืชื”ืœื™ืš ืคื™ืชื•ื— ื•ื‘ื“ื™ืงื” ืขื Docker ื•-Gitlab CI

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

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