แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ Docker แƒ“แƒ Gitlab CI-แƒ˜แƒ—

แƒ›แƒ” แƒ•แƒ—แƒแƒ•แƒแƒ–แƒแƒ‘ แƒแƒšแƒ”แƒฅแƒกแƒแƒœแƒ“แƒ แƒ” แƒกแƒ˜แƒ’แƒแƒฉแƒแƒ•แƒ˜แƒก แƒ›แƒแƒฎแƒกแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒขแƒ แƒแƒœแƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜แƒก แƒฌแƒแƒ™แƒ˜แƒ—แƒฎแƒ•แƒแƒก Inventos-แƒ“แƒแƒœ "แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ แƒ“แƒ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ Docker + Gitlab CI-แƒ˜แƒ—"

แƒ˜แƒกแƒ˜แƒœแƒ˜, แƒ•แƒ˜แƒœแƒช แƒแƒฎแƒšแƒแƒฎแƒแƒœ แƒ˜แƒฌแƒงแƒ”แƒ‘แƒ”แƒœ Docker + Gitlab CI-แƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒแƒก, แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒกแƒ•แƒแƒ›แƒ”แƒœ แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“ แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ”แƒ‘แƒก. แƒกแƒแƒ“ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ˜แƒฌแƒงแƒแƒก? แƒ แƒแƒ’แƒแƒ  แƒ›แƒแƒ•แƒแƒฌแƒงแƒแƒ— แƒแƒ แƒ’แƒแƒœแƒ˜แƒ–แƒ”แƒ‘แƒ? แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒ•แƒแƒกแƒ˜แƒœแƒฏแƒแƒ—?

แƒ”แƒก แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ˜ แƒ™แƒแƒ แƒ’แƒ˜แƒ, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ˜แƒก แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒแƒ“ แƒกแƒแƒฃแƒ‘แƒ แƒแƒ‘แƒก แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ–แƒ” Docker แƒ“แƒ Gitlab CI-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—. แƒ—แƒแƒ•แƒแƒ“ แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ˜ 2017 แƒฌแƒšแƒ˜แƒกแƒแƒ. แƒ›แƒ” แƒ•แƒคแƒ˜แƒฅแƒ แƒแƒ‘, แƒ แƒแƒ› แƒแƒ› แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ˜แƒ“แƒแƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ˜แƒ’แƒแƒ— แƒกแƒแƒคแƒฃแƒซแƒ•แƒšแƒ”แƒ‘แƒ˜, แƒ›แƒ”แƒ—แƒแƒ“แƒแƒšแƒแƒ’แƒ˜แƒ, แƒ˜แƒ“แƒ”แƒ, แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒชแƒ“แƒ˜แƒšแƒ”แƒ‘แƒ.

แƒ•แƒ˜แƒกแƒแƒช แƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ”แƒ‘แƒก, แƒ’แƒ—แƒฎแƒแƒ•แƒ—, แƒ™แƒแƒขแƒ˜แƒก แƒฅแƒ•แƒ”แƒจ.

แƒ›แƒ” แƒ›แƒฅแƒ•แƒ˜แƒ แƒแƒšแƒ”แƒฅแƒกแƒแƒœแƒ“แƒ แƒ” แƒกแƒ˜แƒ’แƒแƒฉแƒแƒ•แƒ˜. แƒ•แƒ›แƒฃแƒจแƒแƒแƒ‘ Inventos-แƒจแƒ˜. แƒ›แƒ” แƒ›แƒแƒ’แƒ˜แƒงแƒ•แƒ”แƒ‘แƒ˜แƒ— Docker-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒฉแƒ”แƒ›แƒก แƒ’แƒแƒ›แƒแƒชแƒ“แƒ˜แƒšแƒ”แƒ‘แƒแƒ–แƒ” แƒ“แƒ แƒ แƒแƒ’แƒแƒ  แƒ•แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ— แƒ›แƒแƒก แƒ”แƒขแƒแƒžแƒแƒ‘แƒ แƒ˜แƒ•แƒแƒ“ แƒ™แƒแƒ›แƒžแƒแƒœแƒ˜แƒแƒจแƒ˜ แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒš แƒžแƒ แƒแƒ”แƒฅแƒขแƒ”แƒ‘แƒ–แƒ”.

แƒžแƒ แƒ”แƒ–แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ˜แƒก แƒ—แƒ”แƒ›แƒ: แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ Docker-แƒ˜แƒกแƒ แƒ“แƒ Gitlab CI-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—.

แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ Docker แƒ“แƒ Gitlab CI-แƒ˜แƒ—

แƒ”แƒก แƒฉแƒ”แƒ›แƒ˜ แƒ›แƒ”แƒแƒ แƒ” แƒกแƒแƒฃแƒ‘แƒแƒ แƒ˜แƒ แƒ“แƒแƒ™แƒ”แƒ แƒ–แƒ”. แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ›แƒแƒฎแƒกแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒก แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ“แƒ˜แƒ— Docker in Development-แƒจแƒ˜ แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ  แƒ›แƒแƒœแƒฅแƒแƒœแƒ”แƒ‘แƒ–แƒ”. แƒ—แƒแƒœแƒแƒ›แƒจแƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ“แƒœแƒ”แƒœ Docker-แƒก, แƒ˜แƒงแƒ แƒ“แƒแƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒ— 2-3 แƒแƒ“แƒแƒ›แƒ˜แƒแƒœแƒ˜. แƒœแƒ”แƒš-แƒœแƒ”แƒšแƒ แƒ’แƒแƒ›แƒแƒชแƒ“แƒ˜แƒšแƒ”แƒ‘แƒ แƒ›แƒแƒ˜แƒžแƒแƒ•แƒ แƒ“แƒ แƒชแƒแƒขแƒ แƒฌแƒ˜แƒœ แƒ’แƒแƒ“แƒแƒ•แƒ”แƒ“แƒ˜แƒ—. แƒ‘แƒ›แƒฃแƒšแƒ˜ แƒฉแƒ•แƒ”แƒœแƒก แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ˜.

แƒ แƒ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒแƒ› แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒจแƒ˜? แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ’แƒ˜แƒ–แƒ˜แƒแƒ แƒ”แƒ‘แƒ— แƒ’แƒแƒ›แƒแƒชแƒ“แƒ˜แƒšแƒ”แƒ‘แƒแƒก, แƒ—แƒฃ แƒ แƒ แƒกแƒแƒ™แƒแƒ›แƒ˜แƒกแƒ˜แƒ แƒ“แƒแƒ•แƒแƒ’แƒ แƒแƒ•แƒ”แƒ—, แƒ แƒ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒ›แƒแƒ•แƒแƒ’แƒ•แƒแƒ แƒ”แƒ—. แƒงแƒ•แƒ”แƒšแƒ’แƒแƒœ แƒแƒ  แƒ˜แƒงแƒ แƒšแƒแƒ›แƒแƒ–แƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ’แƒแƒ“แƒแƒแƒ“แƒ’แƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ แƒ›แƒ˜แƒกแƒชแƒ”แƒก.

แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ“แƒ”แƒ•แƒ˜แƒ–แƒ˜แƒ: แƒ“แƒแƒแƒ›แƒแƒ’แƒ แƒ”แƒ— แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜, แƒ แƒแƒช แƒฎแƒ”แƒšแƒ— แƒ’แƒ•แƒแƒฅแƒ•แƒก.

แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ Docker แƒ“แƒ Gitlab CI-แƒ˜แƒ—

แƒ แƒ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ”แƒ‘แƒก แƒ•แƒแƒ’แƒ•แƒแƒ แƒ”แƒ‘แƒ—?

แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ™แƒแƒ›แƒžแƒแƒœแƒ˜แƒแƒจแƒ˜ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ’แƒฃแƒœแƒ“แƒ˜แƒ, แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒกแƒขแƒ˜ แƒแƒ แƒ˜แƒก แƒกแƒแƒ”แƒ แƒ—แƒ แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ˜. แƒแƒ แƒ˜แƒก แƒ”แƒขแƒแƒžแƒ”แƒ‘แƒ˜, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒกแƒขแƒ˜ แƒ’แƒแƒ›แƒแƒงแƒ•แƒแƒœแƒ˜แƒšแƒ˜แƒ แƒ”แƒ แƒ—แƒ˜ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒ“แƒแƒœ แƒ“แƒ แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒ“แƒ แƒแƒ˜แƒ— แƒแƒซแƒšแƒ”แƒ•แƒ”แƒœ แƒ›แƒ”แƒแƒ แƒ” แƒžแƒ แƒแƒ”แƒฅแƒขแƒก.

แƒ˜แƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒกแƒขแƒ›แƒ แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒ’แƒแƒ˜แƒ’แƒแƒก, แƒ›แƒแƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ“แƒ›แƒแƒฌแƒ”แƒ แƒแƒก แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒฌแƒงแƒแƒ แƒแƒก แƒ™แƒแƒ“แƒ˜ แƒ“แƒ แƒ แƒแƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ›แƒแƒšแƒ” แƒ’แƒแƒฃแƒจแƒ•แƒแƒก แƒ’แƒแƒ แƒ”แƒ›แƒ, แƒ แƒแƒช แƒ›แƒแƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ›แƒ˜แƒกแƒชแƒ”แƒ›แƒก แƒจแƒ”แƒ›แƒ“แƒ’แƒแƒ› แƒ’แƒแƒ“แƒแƒ•แƒ˜แƒ“แƒ”แƒก แƒแƒ› แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ“แƒแƒญแƒ แƒแƒจแƒ˜.

แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•, แƒ—แƒฃ แƒœแƒฃแƒšแƒ˜แƒ“แƒแƒœ แƒ˜แƒฌแƒงแƒ”แƒ‘แƒ—, แƒ›แƒแƒจแƒ˜แƒœ แƒžแƒ แƒแƒ”แƒฅแƒขแƒจแƒ˜ แƒ›แƒชแƒ˜แƒ แƒ” แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒแƒ. แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ แƒ˜แƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ“แƒแƒแƒงแƒ”แƒœแƒแƒ—, แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒซแƒ•แƒ”แƒšแƒ˜ แƒ—แƒแƒ˜แƒ›แƒ”แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ—แƒแƒœแƒแƒ›แƒจแƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜ แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒแƒ“แƒ’แƒ˜แƒšแƒก แƒ“แƒแƒ›แƒแƒฃแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒšแƒแƒ“ แƒแƒฌแƒงแƒแƒ‘แƒ”แƒœ แƒ”แƒ แƒ—-แƒแƒ  แƒ“แƒฆแƒ”แƒจแƒ˜. แƒแƒ›แƒ˜แƒก แƒ“แƒแƒกแƒแƒฉแƒฅแƒแƒ แƒ”แƒ‘แƒšแƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ— Docker.

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ›แƒ˜แƒ–แƒ”แƒ–แƒ˜ แƒแƒ แƒ˜แƒก แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ›แƒ”แƒœแƒขแƒจแƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒ˜แƒ–แƒแƒชแƒ˜แƒ. แƒฉแƒ”แƒ›แƒ˜ แƒ’แƒแƒ›แƒแƒชแƒ“แƒ˜แƒšแƒ”แƒ‘แƒ˜แƒ—, แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒ˜ แƒงแƒแƒ•แƒ”แƒšแƒ—แƒ•แƒ˜แƒก แƒ˜แƒฆแƒ”แƒ‘แƒ”แƒœ แƒ˜แƒœแƒ˜แƒชแƒ˜แƒแƒขแƒ˜แƒ•แƒแƒก. แƒงแƒแƒ•แƒ”แƒš แƒ›แƒ”แƒฎแƒฃแƒ—แƒ” แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒจแƒ”แƒ˜แƒงแƒ•แƒแƒœแƒ”แƒ‘แƒ แƒ›แƒแƒ แƒ’แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ“แƒแƒ›แƒ”แƒœแƒ˜, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, vasya.dev. แƒ›แƒ˜แƒก แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜แƒ— แƒ–แƒ˜แƒก แƒ›แƒ˜แƒกแƒ˜ แƒ›แƒ”แƒ–แƒแƒ‘แƒ”แƒšแƒ˜ แƒžแƒ”แƒขแƒ˜แƒ, แƒ แƒแƒ›แƒšแƒ˜แƒก แƒ“แƒแƒ›แƒ”แƒœแƒ˜ แƒแƒ แƒ˜แƒก petya.dev. แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ”แƒœ แƒ•แƒ”แƒ‘แƒกแƒแƒ˜แƒขแƒก แƒแƒœ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ— แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒก แƒแƒ› แƒ“แƒแƒ›แƒ”แƒœแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—.

แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ แƒ˜แƒ–แƒ แƒ“แƒ”แƒ‘แƒ แƒ“แƒ แƒ“แƒแƒ›แƒ”แƒœแƒฃแƒ แƒ˜ แƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒ˜ แƒ˜แƒฌแƒงแƒ”แƒ‘แƒ”แƒœ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒจแƒ˜ แƒ›แƒแƒฎแƒ•แƒ”แƒ“แƒ แƒแƒก, แƒฌแƒแƒ แƒ›แƒแƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒ™แƒแƒœแƒคแƒšแƒ˜แƒฅแƒขแƒ˜ แƒ“แƒ แƒกแƒแƒ˜แƒขแƒ˜แƒก แƒ‘แƒ˜แƒšแƒ˜แƒ™แƒ˜ แƒฎแƒ”แƒšแƒแƒฎแƒšแƒ แƒ˜แƒฌแƒ”แƒ แƒ”แƒ‘แƒ.

แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒฎแƒ“แƒ”แƒ‘แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ—แƒแƒœ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒ—. แƒ•แƒ˜แƒฆแƒแƒช แƒแƒ  แƒแƒฌแƒฃแƒฎแƒ”แƒ‘แƒก แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ”แƒ‘แƒแƒก แƒ“แƒ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก root แƒชแƒแƒ แƒ˜แƒ”แƒšแƒ˜ แƒžแƒแƒ แƒแƒšแƒ˜แƒ—. แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ˜แƒก แƒ”แƒขแƒแƒžแƒ–แƒ” MySQL-แƒ›แƒ แƒ•แƒ˜แƒœแƒ›แƒ”แƒก แƒกแƒ—แƒฎแƒแƒ•แƒ แƒžแƒแƒ แƒแƒšแƒ˜ แƒ“แƒ แƒžแƒแƒ แƒแƒšแƒ˜ แƒแƒฆแƒ›แƒแƒฉแƒœแƒ“แƒ 123. แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒฎแƒ“แƒ”แƒ‘แƒ, แƒ แƒแƒ› แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒ›แƒฃแƒ“แƒ›แƒ˜แƒ•แƒแƒ“ แƒ˜แƒชแƒ•แƒšแƒ”แƒ‘แƒ แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ˜แƒก commit-แƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—. แƒ•แƒ˜แƒฆแƒแƒชแƒแƒ› แƒ’แƒแƒแƒกแƒฌแƒแƒ แƒ, แƒ•แƒ˜แƒฆแƒแƒชแƒแƒ› แƒแƒ  แƒจแƒ”แƒแƒกแƒฌแƒแƒ แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ. แƒ˜แƒงแƒ แƒฎแƒ แƒ˜แƒ™แƒ”แƒ‘แƒ˜, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒฉแƒ•แƒ”แƒœ แƒแƒ›แƒแƒ•แƒ˜แƒฆแƒ”แƒ— แƒ แƒแƒ˜แƒ›แƒ” แƒกแƒแƒฎแƒ˜แƒก แƒกแƒแƒขแƒ”แƒกแƒขแƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ .gitignore แƒ“แƒ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒก แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ”แƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒœแƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ. แƒแƒ›แƒแƒœ แƒ’แƒแƒแƒ แƒ—แƒฃแƒšแƒ แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ. แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ, แƒกแƒฎแƒ•แƒ แƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒ”แƒ‘แƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“, แƒ’แƒแƒฎแƒกแƒแƒ•แƒ“แƒ”แƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘. แƒฃแƒœแƒ“แƒ แƒ›แƒแƒฎแƒ“แƒ”แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒ˜แƒœแƒ˜แƒชแƒ˜แƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒ, แƒžแƒแƒ แƒแƒšแƒ˜แƒก แƒจแƒ”แƒงแƒ•แƒแƒœแƒ, แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒ, แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ แƒ“แƒ แƒ.แƒจ.

แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ”แƒ แƒ—แƒ˜ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒแƒ แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ”แƒ‘แƒ˜แƒก แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ•แƒ”แƒ แƒกแƒ˜แƒ”แƒ‘แƒ˜. แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒฎแƒ“แƒ”แƒ‘แƒ, แƒ แƒแƒ› แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ”แƒ‘แƒ—แƒแƒœ. แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒšแƒ”แƒ’แƒแƒกแƒ˜แƒก แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ“แƒแƒ˜แƒฌแƒงแƒ แƒฎแƒฃแƒ—แƒ˜ แƒฌแƒšแƒ˜แƒก แƒฌแƒ˜แƒœ (2017 แƒฌแƒšแƒ˜แƒ“แƒแƒœ - แƒ แƒ”แƒ“. แƒจแƒ”แƒœแƒ˜แƒจแƒ•แƒœแƒ). แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒก แƒ“แƒแƒ•แƒ˜แƒฌแƒงแƒ”แƒ— MySQL 5.5. แƒแƒกแƒ”แƒ•แƒ” แƒแƒ แƒ˜แƒก แƒ—แƒแƒœแƒแƒ›แƒ”แƒ“แƒ แƒแƒ•แƒ” แƒžแƒ แƒแƒ”แƒฅแƒขแƒ”แƒ‘แƒ˜, แƒกแƒแƒ“แƒแƒช แƒ•แƒชแƒ“แƒ˜แƒšแƒแƒ‘แƒ— แƒ“แƒแƒœแƒ”แƒ แƒ’แƒแƒ— MySQL-แƒ˜แƒก แƒฃแƒคแƒ แƒ แƒ—แƒแƒœแƒแƒ›แƒ”แƒ“แƒ แƒแƒ•แƒ” แƒ•แƒ”แƒ แƒกแƒ˜แƒ”แƒ‘แƒ˜, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, 5.7 แƒแƒœ แƒฃแƒคแƒ แƒ แƒซแƒ•แƒ”แƒšแƒ˜ (2017 แƒฌแƒ”แƒšแƒก - แƒ แƒ”แƒ“. แƒจแƒ”แƒœแƒ˜แƒจแƒ•แƒœแƒ)

แƒ•แƒ˜แƒœแƒช แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก MySQL-แƒ—แƒแƒœ, แƒ˜แƒชแƒ˜แƒก, แƒ แƒแƒ› แƒแƒ› แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ”แƒ‘แƒก แƒแƒฅแƒ•แƒ— แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜. แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒฃแƒ แƒ˜แƒ 2 แƒ‘แƒแƒ–แƒ˜แƒก แƒ”แƒ แƒ—แƒแƒ“ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ. แƒงแƒแƒ•แƒ”แƒš แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒซแƒ•แƒ”แƒšแƒ˜ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒฃแƒ แƒ˜แƒ แƒแƒฎแƒแƒš แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒกแƒ—แƒแƒœ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ. แƒ”แƒก แƒ—แƒแƒ•แƒ˜แƒก แƒ›แƒฎแƒ แƒ˜แƒ• แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒแƒก แƒฅแƒ›แƒœแƒ˜แƒก.

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒแƒ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒšแƒแƒ™แƒแƒšแƒฃแƒ  แƒ›แƒแƒœแƒฅแƒแƒœแƒแƒ–แƒ”, แƒ˜แƒก แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒšแƒแƒ™แƒแƒšแƒฃแƒ  แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒก, แƒšแƒแƒ™แƒแƒšแƒฃแƒ  แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒก, แƒšแƒแƒ™แƒแƒšแƒฃแƒ  RAM-แƒก. แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ˜แƒก แƒจแƒ”แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒก แƒงแƒ•แƒ”แƒšแƒ แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ แƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ“แƒ”แƒ‘แƒ แƒ˜แƒ›แƒ˜แƒก แƒคแƒแƒ แƒ’แƒšแƒ”แƒ‘แƒจแƒ˜, แƒ แƒแƒ› แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ”แƒ แƒ— แƒ›แƒแƒœแƒฅแƒแƒœแƒแƒ–แƒ”. แƒแƒ›แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜แƒ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒงแƒแƒ•แƒก backend แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ˜ Production 3-แƒจแƒ˜ แƒ“แƒ แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ˜ แƒ˜แƒœแƒแƒฎแƒแƒ•แƒก แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒก root แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒจแƒ˜ แƒ“แƒ แƒ˜แƒฅแƒ˜แƒ“แƒแƒœ แƒ˜แƒฆแƒ”แƒ‘แƒก nginx แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒ–แƒ” แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒก แƒ’แƒแƒกแƒแƒชแƒ”แƒ›แƒแƒ“. แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒแƒกแƒ”แƒ—แƒ˜ แƒ™แƒแƒ“แƒ˜ แƒจแƒ”แƒ“แƒ˜แƒก Production-แƒจแƒ˜, แƒแƒฆแƒ›แƒแƒฉแƒœแƒ“แƒ”แƒ‘แƒ, แƒ แƒแƒ› แƒคแƒแƒ˜แƒšแƒ˜ แƒ˜แƒ›แƒงแƒแƒคแƒ”แƒ‘แƒ 3 แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒ“แƒแƒœ แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ–แƒ”.

แƒ›แƒ˜แƒ™แƒ แƒแƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ›แƒแƒ แƒ—แƒฃแƒšแƒ”แƒ‘แƒ แƒแƒฎแƒšแƒ แƒ•แƒ˜แƒ—แƒแƒ แƒ“แƒ”แƒ‘แƒ. แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒฉแƒ•แƒ”แƒœ แƒ•แƒงแƒแƒคแƒ— แƒฉแƒ•แƒ”แƒœแƒก แƒ“แƒ˜แƒ“ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒก แƒ›แƒชแƒ˜แƒ แƒ” แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ”แƒ‘แƒแƒ“, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ”แƒœ แƒ”แƒ แƒ—แƒ›แƒแƒœแƒ”แƒ—แƒ—แƒแƒœ. แƒ”แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒแƒ˜แƒ แƒฉแƒ˜แƒแƒ— แƒขแƒ”แƒฅแƒœแƒแƒšแƒแƒ’แƒ˜แƒ”แƒ‘แƒ˜ แƒแƒ›แƒแƒชแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒšแƒ˜ แƒ“แƒแƒกแƒขแƒแƒกแƒ—แƒ•แƒ˜แƒก. แƒ˜แƒก แƒแƒกแƒ”แƒ•แƒ” แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ’แƒแƒแƒ–แƒ˜แƒแƒ แƒแƒ— แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒ“แƒ แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒšแƒแƒ‘แƒ แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒก แƒจแƒแƒ แƒ˜แƒก.

Frondend-แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ•แƒ˜แƒ—แƒแƒ แƒ“แƒ”แƒ‘แƒ JS-แƒ–แƒ”, แƒ—แƒ˜แƒ—แƒฅแƒ›แƒ˜แƒก แƒแƒ  แƒแƒฅแƒ•แƒก แƒ’แƒแƒ•แƒšแƒ”แƒœแƒ Backend-แƒ–แƒ”. แƒ‘แƒ”แƒฅแƒ”แƒœแƒ“แƒ˜แƒก แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ˜, แƒ—แƒแƒ•แƒ˜แƒก แƒ›แƒฎแƒ แƒ˜แƒ•, แƒแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒก, แƒฉแƒ•แƒ”แƒœแƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, Ruby on Rails แƒ“แƒ แƒแƒ  แƒ”แƒ แƒ”แƒ•แƒ Frondend-แƒจแƒ˜. แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ แƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ“แƒ”แƒ‘แƒ 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. แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒกแƒแƒญแƒ˜แƒ แƒ build แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ”แƒ‘แƒก แƒ“แƒ NodeJS-แƒก. แƒฉแƒ•แƒ”แƒœ แƒแƒฆแƒ•แƒฌแƒ”แƒ แƒ—, แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒก /app. แƒ“แƒแƒแƒงแƒ”แƒœแƒ”แƒ— แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒ, แƒ แƒแƒ’แƒแƒ แƒช แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒ. แƒแƒ› แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒจแƒ˜ แƒ•แƒแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒ— แƒกแƒแƒญแƒ˜แƒ แƒ แƒ›แƒ˜แƒœแƒ˜แƒ›แƒแƒšแƒฃแƒ  Gemfile แƒ“แƒ Gemfile.lock. แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒจแƒ”แƒœแƒ”แƒ‘แƒ— แƒžแƒ แƒแƒ”แƒฅแƒขแƒ”แƒ‘แƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒ”แƒœ แƒแƒ› แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒฃแƒ แƒแƒ—แƒก. แƒฉแƒ•แƒ”แƒœ แƒแƒฆแƒ•แƒœแƒ˜แƒจแƒœแƒแƒ•แƒ—, แƒ แƒแƒ› แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜ แƒ›แƒ–แƒแƒ“ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ›แƒแƒกแƒแƒกแƒ›แƒ”แƒœแƒแƒ“ แƒ’แƒแƒ แƒ” แƒžแƒแƒ แƒขแƒ–แƒ” 3000. แƒ‘แƒแƒšแƒ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ แƒแƒ แƒ˜แƒก แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒฃแƒจแƒ•แƒ”แƒ‘แƒก แƒฉแƒ•แƒ”แƒœแƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒแƒก. แƒ—แƒฃ แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ— แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ˜แƒก แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒแƒก, แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒจแƒ”แƒ”แƒชแƒ“แƒ”แƒ‘แƒ แƒ’แƒแƒฃแƒจแƒ•แƒแƒก แƒ“แƒ แƒ’แƒแƒฃแƒจแƒ•แƒแƒก แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ.

แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ Docker แƒ“แƒ Gitlab CI-แƒ˜แƒ—

แƒ”แƒก แƒแƒ แƒ˜แƒก docker-compose แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒ›แƒ˜แƒœแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜. แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ—, แƒ แƒแƒ› แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜ แƒแƒ  แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒก แƒจแƒแƒ แƒ˜แƒก. แƒ”แƒก แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒแƒ แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒจแƒ˜ แƒ“แƒ แƒ•แƒ”แƒ‘ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒจแƒ˜. แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ•แƒ”แƒ‘ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒฃแƒ›แƒ”แƒขแƒ”แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒก แƒ แƒแƒ˜แƒ›แƒ” แƒกแƒแƒฎแƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒจแƒ”แƒกแƒแƒœแƒแƒฎแƒแƒ“. แƒ•แƒ˜แƒœแƒแƒ˜แƒ“แƒแƒœ แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— MySQL, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜ แƒแƒ แƒ˜แƒก MySQL - แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ แƒแƒคแƒ”แƒ แƒ˜ แƒ’แƒ•แƒ˜แƒจแƒšแƒ˜แƒก แƒฎแƒ”แƒšแƒก แƒกแƒฎแƒ•แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒจแƒ˜ (PostgreSQL, Redis).

แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ— Docker Hub-แƒ˜แƒก แƒแƒคแƒ˜แƒชแƒ˜แƒแƒšแƒฃแƒ แƒ˜ แƒฌแƒงแƒแƒ แƒแƒ“แƒแƒœ MySQL 5.7.14 แƒกแƒฃแƒ แƒแƒ—แƒก แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”. แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ’แƒ แƒแƒ•แƒ”แƒ‘แƒ— แƒกแƒฃแƒ แƒแƒ—แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒฉแƒ•แƒ”แƒœแƒก แƒ•แƒ”แƒ‘ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒแƒ–แƒ” แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ” แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒ“แƒแƒœ. แƒ˜แƒก แƒฉแƒ•แƒ”แƒœแƒ—แƒ•แƒ˜แƒก แƒแƒ’แƒ แƒแƒ•แƒ”แƒ‘แƒก แƒกแƒฃแƒ แƒแƒ—แƒก แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒก. แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ˜แƒก แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒก แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒแƒก, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒฉแƒ•แƒ”แƒœ แƒแƒฅ แƒ•แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ—. แƒ—แƒฃ แƒฃแƒ™แƒแƒœ แƒ“แƒแƒ•แƒ‘แƒ แƒฃแƒœแƒ“แƒ”แƒ‘แƒ˜แƒ—, แƒ“แƒแƒ•แƒ˜แƒœแƒแƒฎแƒแƒ•แƒ—, แƒ แƒแƒ› Puma-แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ— แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒฃแƒšแƒ˜แƒ. Puma แƒแƒ แƒ˜แƒก แƒ แƒฃแƒ‘แƒ˜แƒจแƒ˜ แƒ“แƒแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜. แƒ›แƒ”แƒแƒ แƒ” แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ“แƒแƒ•แƒšแƒแƒฎแƒแƒ•แƒ—. แƒ”แƒก แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒงแƒแƒก แƒ—แƒ•แƒ˜แƒ—แƒœแƒ”แƒ‘แƒฃแƒ แƒ˜, แƒ แƒแƒช แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒฉแƒ•แƒ”แƒœแƒก แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒ”แƒ‘แƒ–แƒ” แƒแƒœ แƒแƒ›แƒแƒชแƒแƒœแƒ”แƒ‘แƒ–แƒ”.

แƒฉแƒ•แƒ”แƒœ แƒแƒกแƒ”แƒ•แƒ” แƒแƒฆแƒ•แƒฌแƒ”แƒ แƒ—, แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒžแƒแƒ แƒขแƒ˜แƒก แƒ’แƒแƒ“แƒแƒ’แƒ–แƒแƒ•แƒœแƒ แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ˜แƒก แƒ›แƒแƒกแƒžแƒ˜แƒœแƒซแƒ”แƒš แƒ›แƒแƒœแƒฅแƒแƒœแƒแƒ–แƒ” 3000-แƒ“แƒแƒœ 3000-แƒ›แƒ“แƒ” แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜แƒก แƒžแƒแƒ แƒขแƒ–แƒ”. แƒ”แƒก แƒ™แƒ”แƒ—แƒ“แƒ”แƒ‘แƒ แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒแƒ“ iptables-แƒ˜แƒก แƒ“แƒ แƒ›แƒ˜แƒกแƒ˜ แƒ›แƒ”แƒฅแƒแƒœแƒ˜แƒ–แƒ›แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒแƒ แƒ˜แƒก แƒฉแƒแƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜ Docker-แƒจแƒ˜.

แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒก แƒแƒกแƒ”แƒ•แƒ”, แƒ แƒแƒ’แƒแƒ แƒช แƒแƒ“แƒ แƒ”, แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒฌแƒ•แƒ“แƒแƒ›แƒ แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ  IP แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ–แƒ”, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, 127.0.0.1 แƒแƒ แƒ˜แƒก แƒแƒžแƒแƒ แƒแƒขแƒ˜แƒก แƒšแƒแƒ™แƒแƒšแƒฃแƒ แƒ˜ แƒแƒœ แƒ’แƒแƒ แƒ” IP แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ˜.

แƒ‘แƒแƒšแƒ แƒฎแƒแƒ–แƒ˜ แƒแƒ›แƒ‘แƒแƒ‘แƒก, แƒ แƒแƒ› แƒ•แƒ”แƒ‘ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜ แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ db แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ–แƒ”. แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒฉแƒ•แƒ”แƒœ แƒ›แƒแƒ•แƒฃแƒฌแƒแƒ“แƒ”แƒ‘แƒ— แƒ•แƒ”แƒ‘ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒแƒก, docker-compose แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒแƒ“ แƒ“แƒแƒ˜แƒฌแƒงแƒ”แƒ‘แƒก แƒฉแƒ•แƒ”แƒœแƒ—แƒ•แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒก. แƒฃแƒ™แƒ•แƒ” แƒ‘แƒแƒ–แƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ˜แƒกแƒแƒก (แƒคแƒแƒฅแƒขแƒแƒ‘แƒ แƒ˜แƒ•แƒแƒ“ - แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’! แƒ”แƒก แƒแƒ  แƒ˜แƒซแƒšแƒ”แƒ•แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒ›แƒ–แƒแƒ“แƒงแƒแƒคแƒœแƒ˜แƒก แƒ’แƒแƒ แƒแƒœแƒขแƒ˜แƒแƒก) แƒ“แƒแƒ˜แƒฌแƒงแƒ”แƒ‘แƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒแƒก, แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ‘แƒ”แƒฅแƒ”แƒœแƒ“แƒ˜.

แƒ”แƒก แƒ—แƒแƒ•แƒ˜แƒ“แƒแƒœ แƒแƒ˜แƒชแƒ˜แƒšแƒ”แƒ‘แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒก, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ“แƒ แƒ“แƒแƒ–แƒแƒ’แƒแƒ•แƒก แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒก, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ•แƒแƒฉแƒ”แƒ แƒ”แƒ‘แƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒก, แƒ แƒ˜แƒ—แƒแƒช แƒแƒ—แƒแƒ•แƒ˜แƒกแƒฃแƒคแƒšแƒ”แƒ‘แƒก แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒก แƒกแƒฎแƒ•แƒ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ Docker แƒ“แƒ Gitlab CI-แƒ˜แƒ—

แƒ แƒ แƒ’แƒ•แƒแƒซแƒšแƒ”แƒ•แƒก แƒžแƒ แƒแƒ”แƒฅแƒขแƒ–แƒ” แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒ“แƒแƒ™แƒ”แƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒก. แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒคแƒ˜แƒฅแƒกแƒ˜แƒ แƒ”แƒ‘แƒ— MySQL-แƒ˜แƒก แƒ•แƒ”แƒ แƒกแƒ˜แƒแƒก แƒงแƒ•แƒ”แƒšแƒ แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ”แƒก แƒ—แƒแƒ•แƒ˜แƒ“แƒแƒœ แƒแƒ˜แƒชแƒ˜แƒšแƒ”แƒ‘แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ›แƒแƒฎแƒ“แƒ”แƒก แƒ•แƒ”แƒ แƒกแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒ˜แƒกแƒแƒก, แƒกแƒ˜แƒœแƒขแƒแƒฅแƒกแƒ˜แƒก, แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก, แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒชแƒ•แƒšแƒ˜แƒกแƒแƒก. แƒ”แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒแƒ— แƒกแƒแƒ”แƒ แƒ—แƒ แƒฐแƒแƒกแƒขแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒจแƒ”แƒกแƒ•แƒšแƒ, แƒžแƒแƒ แƒแƒšแƒ˜. แƒฉแƒ•แƒ”แƒœ แƒ•แƒจแƒแƒ แƒ“แƒ”แƒ‘แƒ˜แƒ— แƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒ™แƒแƒœแƒคแƒšแƒ˜แƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒ–แƒแƒแƒžแƒแƒ แƒ™แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒจแƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒแƒ“แƒ แƒ” แƒ’แƒ•แƒฅแƒแƒœแƒ“แƒ.

แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ— แƒฃแƒคแƒ แƒ แƒแƒžแƒขแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒ›แƒแƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ“แƒ”แƒ‘แƒ แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜แƒกแƒแƒ’แƒแƒœ. MySQL แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒกแƒฃแƒกแƒขแƒ˜ แƒ›แƒแƒœแƒฅแƒแƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“ แƒ“แƒ แƒ›แƒ˜แƒกแƒ˜ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ แƒซแƒแƒšแƒ˜แƒแƒœ แƒชแƒฃแƒ“แƒ˜แƒ.

แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ Docker แƒ“แƒ Gitlab CI-แƒ˜แƒ—

Docker แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒกแƒแƒกแƒฃแƒ แƒ•แƒ”แƒšแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒก Python, Ruby, NodeJS, PHP แƒ—แƒแƒ แƒฏแƒ˜แƒ›แƒแƒœแƒ˜. แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒฎแƒกแƒœแƒ˜แƒ— แƒ แƒแƒ˜แƒ›แƒ” แƒกแƒแƒฎแƒ˜แƒก แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒก แƒ›แƒ”แƒœแƒ”แƒฏแƒ”แƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒแƒก. แƒแƒ“แƒ แƒ” แƒ แƒฃแƒ‘แƒ˜ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ“แƒ rpm แƒžแƒแƒ™แƒ”แƒขแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒจแƒ”แƒชแƒ•แƒแƒšแƒแƒ— แƒ•แƒ”แƒ แƒกแƒ˜แƒ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—. แƒ˜แƒก แƒแƒกแƒ”แƒ•แƒ” แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒแƒซแƒšแƒ”แƒ•แƒก, Docker แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜แƒก แƒฌแƒงแƒแƒšแƒแƒ‘แƒ˜แƒ—, แƒจแƒ”แƒฃแƒคแƒ”แƒ แƒฎแƒ”แƒ‘แƒšแƒแƒ“ แƒ’แƒแƒ“แƒแƒ˜แƒขแƒแƒœแƒแƒก แƒ™แƒแƒ“แƒ˜ แƒ“แƒ แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“ แƒ•แƒ”แƒ แƒกแƒ˜แƒ”แƒ‘แƒ˜. แƒฉแƒ•แƒ”แƒœ แƒแƒ  แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ แƒ แƒแƒ’แƒแƒ แƒช แƒ—แƒแƒ แƒฏแƒ˜แƒ›แƒœแƒ˜แƒก, แƒแƒกแƒ”แƒ•แƒ” แƒ™แƒแƒ“แƒ˜แƒก แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒก แƒ’แƒแƒ’แƒ”แƒ‘แƒแƒจแƒ˜. แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒก แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒฉแƒแƒ›แƒแƒฌแƒ˜แƒ”แƒ— แƒซแƒ•แƒ”แƒšแƒ˜ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜ แƒ“แƒ แƒแƒฌแƒ˜แƒ”แƒ— แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜. แƒ—แƒฃ แƒ แƒแƒ›แƒ” แƒแƒ แƒแƒกแƒฌแƒแƒ แƒ”แƒ“ แƒฌแƒแƒ แƒ˜แƒ›แƒแƒ แƒ—แƒ, แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒฉแƒแƒ›แƒแƒ•แƒฌแƒ˜แƒแƒ— แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜, แƒแƒ•แƒฌแƒ˜แƒแƒ— แƒซแƒ•แƒ”แƒšแƒ˜ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜.

แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒก แƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒ˜ แƒ แƒแƒ’แƒแƒ แƒช แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ›แƒ”แƒœแƒขแƒจแƒ˜, แƒแƒกแƒ”แƒ•แƒ” แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒแƒจแƒ˜ แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ. แƒ”แƒก แƒ’แƒแƒœแƒกแƒแƒ™แƒฃแƒ—แƒ แƒ”แƒ‘แƒ˜แƒ— แƒ”แƒฎแƒ”แƒ‘แƒ แƒ“แƒ˜แƒ“ แƒ“แƒแƒœแƒแƒ“แƒ’แƒแƒ แƒ”แƒ‘แƒก.

แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ Docker แƒ“แƒ Gitlab CI-แƒ˜แƒ— Frontend-แƒ–แƒ” แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— JavaScipt แƒ“แƒ NodeJS.

แƒแƒฎแƒšแƒ แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒ‘แƒแƒšแƒ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜ ReacJS-แƒ–แƒ”. แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ›แƒ แƒ’แƒแƒฃแƒจแƒ•แƒ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒจแƒ˜ แƒ“แƒ แƒ’แƒแƒœแƒแƒ•แƒ˜แƒ—แƒแƒ แƒ แƒชแƒฎแƒ”แƒšแƒ˜ แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—.

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜, JavaScipt แƒแƒกแƒแƒ›แƒ‘แƒšแƒ”แƒ˜แƒก แƒ“แƒแƒ•แƒแƒšแƒ”แƒ‘แƒ แƒ˜แƒฎแƒกแƒœแƒ”แƒ‘แƒ แƒ“แƒ แƒกแƒขแƒแƒขแƒ˜แƒ™แƒแƒจแƒ˜ แƒจแƒ”แƒ“แƒ’แƒ”แƒœแƒ˜แƒšแƒ˜ แƒ™แƒแƒ“แƒ˜ แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜แƒ nginx-แƒ˜แƒก แƒ“แƒแƒ–แƒแƒ’แƒ•แƒ˜แƒก แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ—.

แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ Docker แƒ“แƒ Gitlab CI-แƒ˜แƒ—

แƒแƒฅ แƒ›แƒ” แƒ›แƒ˜แƒ•แƒ”แƒชแƒ˜ แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ‘แƒแƒšแƒ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒกแƒฅแƒ”แƒ›แƒ.

แƒ แƒ แƒแƒ›แƒแƒชแƒแƒœแƒ”แƒ‘แƒ˜ แƒ’แƒแƒ“แƒแƒฌแƒงแƒ“แƒ? แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒฅแƒแƒœแƒ“แƒ แƒกแƒแƒญแƒ˜แƒ แƒ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒแƒ’แƒ”แƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ—แƒแƒœแƒแƒช แƒ›แƒแƒ‘แƒ˜แƒšแƒฃแƒ แƒ˜ แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜ แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ”แƒœ. แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ˜แƒฆแƒ”แƒ‘แƒ”แƒœ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก. แƒ”แƒ แƒ—แƒ˜ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ แƒแƒ แƒ˜แƒก แƒแƒ› แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒแƒ–แƒ” push-แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ.

แƒ แƒ แƒ’แƒแƒ•แƒแƒ™แƒ”แƒ—แƒ”แƒ— แƒแƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก?

แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒงแƒแƒ•แƒ˜แƒ— แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒแƒจแƒ˜ แƒ˜แƒกแƒ”แƒ— แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ”แƒ‘แƒแƒ“, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ: แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒฃแƒšแƒ˜ แƒœแƒแƒฌแƒ˜แƒšแƒ˜ JS-แƒ–แƒ”, backend, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก REST แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜แƒ— Ruby on Rails-แƒ˜แƒก แƒฅแƒ•แƒ”แƒจ. Backend แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒกแƒ—แƒแƒœ. แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฌแƒแƒ แƒ›แƒแƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ, แƒ”แƒซแƒšแƒ”แƒ•แƒ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒก. แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒฃแƒšแƒ˜ แƒžแƒแƒœแƒ”แƒšแƒ˜ แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒก backend-แƒ—แƒแƒœ แƒ“แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒกแƒ—แƒแƒœ REST แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ—.

แƒฉแƒ•แƒ”แƒœ แƒแƒกแƒ”แƒ•แƒ” แƒ’แƒ•แƒฅแƒแƒœแƒ“แƒ Push แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒ. แƒ›แƒแƒœแƒแƒ›แƒ“แƒ” แƒ’แƒ•แƒฅแƒแƒœแƒ“แƒ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ›แƒแƒช แƒ“แƒแƒœแƒ”แƒ แƒ’แƒ แƒ›แƒ”แƒฅแƒแƒœแƒ˜แƒ–แƒ›แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ›แƒแƒ‘แƒ˜แƒšแƒฃแƒ  แƒžแƒšแƒแƒขแƒคแƒแƒ แƒ›แƒ”แƒ‘แƒ–แƒ” แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฌแƒแƒ“แƒ”แƒ‘แƒแƒ–แƒ”.

แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒกแƒฅแƒ”แƒ›แƒ: แƒ‘แƒ แƒแƒฃแƒ–แƒ”แƒ แƒ˜แƒก แƒแƒžแƒ”แƒ แƒแƒขแƒแƒ แƒ˜ แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒก แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒฃแƒš แƒžแƒแƒœแƒ”แƒšแƒ—แƒแƒœ, แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒฃแƒšแƒ˜ แƒžแƒแƒœแƒ”แƒšแƒ˜ แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒก แƒ‘แƒ”แƒฅแƒ”แƒœแƒ“แƒ—แƒแƒœ, แƒแƒ›แƒแƒชแƒแƒœแƒแƒ Push แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ.

Push แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒก แƒกแƒฎแƒ•แƒ แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ—แƒแƒœ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ“แƒแƒœแƒ”แƒ แƒ’แƒ˜แƒšแƒ˜แƒ NodeJS-แƒจแƒ˜.

แƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒ แƒ˜แƒ’แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ˜แƒ’แƒ–แƒแƒ•แƒœแƒ”แƒ‘แƒ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ›แƒแƒ—แƒ˜ แƒ›แƒ”แƒฅแƒแƒœแƒ˜แƒ–แƒ›แƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—.

แƒแƒฅ แƒจแƒ”แƒ“แƒ’แƒ”แƒœแƒ˜แƒšแƒ˜แƒ แƒแƒ แƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ. แƒแƒ› แƒ“แƒ แƒแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก Docker-แƒ˜แƒก แƒ“แƒแƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ˜แƒ— แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— 2 แƒ“แƒแƒ›แƒแƒฃแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒ”แƒš แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒแƒ แƒแƒœแƒแƒ˜แƒ แƒแƒ“ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ”แƒ แƒ—แƒ›แƒแƒœแƒ”แƒ—แƒ—แƒแƒœ. แƒ’แƒแƒ แƒ“แƒ แƒแƒ›แƒ˜แƒกแƒ, แƒ›แƒแƒ— แƒแƒฅแƒ•แƒ— แƒกแƒแƒ”แƒ แƒ—แƒ แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ แƒ˜ แƒฅแƒกแƒ”แƒšแƒ˜ แƒ“แƒ แƒคแƒ˜แƒ–แƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒ˜แƒœแƒแƒฎแƒ”แƒ‘แƒ แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ˜แƒก แƒแƒžแƒแƒ แƒแƒขแƒ˜แƒก แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒจแƒ˜.

แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ Docker แƒ“แƒ Gitlab CI-แƒ˜แƒ—

แƒ˜แƒ’แƒ˜แƒ•แƒ”, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ แƒ˜แƒชแƒฎแƒ•แƒ”แƒ‘แƒจแƒ˜. แƒ”แƒก แƒแƒ แƒ˜แƒก แƒกแƒแƒ“แƒแƒช แƒ™แƒแƒ“แƒ˜แƒก แƒฎแƒ”แƒšแƒแƒฎแƒแƒšแƒ˜ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜แƒ.

แƒ—แƒฃ แƒแƒ“แƒ แƒ” แƒ•แƒกแƒแƒฃแƒ‘แƒ แƒแƒ‘แƒ“แƒ˜แƒ— แƒ™แƒแƒ“แƒ˜แƒก แƒฎแƒ”แƒšแƒแƒฎแƒšแƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒ–แƒ” แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒฎแƒ˜แƒ—, แƒ›แƒแƒจแƒ˜แƒœ แƒแƒ› แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒจแƒ˜ แƒฉแƒ•แƒ”แƒœแƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒžแƒแƒกแƒฃแƒฎแƒแƒ‘แƒก Push แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒก, แƒฎแƒ”แƒšแƒแƒฎแƒšแƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ แƒแƒ’แƒแƒ แƒช แƒกแƒ แƒฃแƒšแƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜. แƒ˜แƒก แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒก API-แƒก. แƒ“แƒ แƒฉแƒ•แƒ”แƒœแƒ˜ แƒแƒฎแƒแƒšแƒ˜ แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ แƒฃแƒ™แƒ•แƒ” แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒก แƒ›แƒแƒกแƒ—แƒแƒœ.

แƒ˜แƒ› แƒ“แƒ แƒแƒก แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ“แƒ˜แƒ— NodeJS-แƒ˜แƒก แƒ›แƒ”-4 แƒ•แƒ”แƒ แƒกแƒ˜แƒแƒก. แƒแƒฎแƒšแƒ (2017 แƒฌแƒ”แƒšแƒก - แƒ แƒ”แƒ“. แƒจแƒ”แƒœแƒ˜แƒจแƒ•แƒœแƒ) แƒ‘แƒแƒšแƒ แƒ“แƒ แƒแƒก แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒฃแƒš แƒ›แƒแƒ•แƒšแƒ”แƒœแƒ”แƒ‘แƒจแƒ˜ แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— NodeJS-แƒ˜แƒก แƒ›แƒ”-7 แƒ•แƒ”แƒ แƒกแƒ˜แƒแƒก. แƒแƒ  แƒแƒ แƒ˜แƒก แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ แƒแƒฎแƒแƒš แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ”แƒ‘แƒจแƒ˜ แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ”แƒ‘แƒ˜แƒก แƒแƒฎแƒแƒšแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒ แƒ—แƒ•แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ“แƒแƒแƒ™แƒ”แƒ—แƒแƒ— แƒ“แƒ แƒ’แƒแƒ–แƒแƒ แƒ“แƒแƒ— NodeJS แƒ•แƒ”แƒ แƒกแƒ˜แƒ Push แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒ“แƒแƒœ.

แƒ“แƒ แƒ—แƒฃ แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒจแƒ”แƒ•แƒ˜แƒœแƒแƒ แƒฉแƒฃแƒœแƒแƒ— API แƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒแƒ“แƒแƒ‘แƒ, แƒ›แƒแƒจแƒ˜แƒœ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ›แƒ˜แƒกแƒ˜ แƒฉแƒแƒœแƒแƒชแƒ•แƒšแƒ”แƒ‘แƒ แƒกแƒฎแƒ•แƒ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒแƒ“แƒ แƒ” แƒ˜แƒงแƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜.

แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ Docker แƒ“แƒ Gitlab CI-แƒ˜แƒ—

แƒ แƒ แƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒ“แƒแƒ™แƒ”แƒ แƒ˜แƒก แƒ“แƒแƒกแƒแƒ›แƒแƒขแƒ”แƒ‘แƒšแƒแƒ“? แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ— Dockerfile-แƒก แƒฉแƒ•แƒ”แƒœแƒก แƒกแƒแƒชแƒแƒ•แƒจแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒฆแƒฌแƒ”แƒ แƒก แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒ”แƒš แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒก. แƒแƒ› แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒจแƒ˜ แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ”แƒ‘แƒ˜ แƒšแƒแƒ’แƒ˜แƒ™แƒฃแƒ แƒแƒ“ แƒ˜แƒงแƒแƒคแƒ. แƒ”แƒก แƒแƒ แƒ˜แƒก แƒกแƒแƒคแƒแƒœแƒ“แƒ แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ˜แƒก แƒ›แƒ˜แƒœแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜.

แƒแƒฎแƒแƒšแƒ˜ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒกแƒแƒก แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— Dockerfile-แƒก, แƒแƒฆแƒ•แƒฌแƒ”แƒ แƒ— แƒกแƒแƒกแƒฃแƒ แƒ•แƒ”แƒš แƒ”แƒ™แƒแƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒแƒก (Python, Ruby, NodeJS). Docker-compose-แƒจแƒ˜ แƒแƒฆแƒฌแƒ”แƒ แƒก แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒ”แƒš แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒแƒก - แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒก. แƒฉแƒ•แƒ”แƒœ แƒแƒฆแƒ•แƒฌแƒ”แƒ แƒ—, แƒ แƒแƒ› แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ แƒแƒ›แƒ แƒ—แƒฃ แƒ˜แƒ› แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒก, แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒœแƒแƒฎแƒ•แƒ แƒ˜แƒฅ แƒ“แƒ แƒ˜แƒฅ.

แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒชแƒแƒšแƒ™แƒ” แƒ›แƒ”แƒกแƒแƒ›แƒ” แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒก nginx-แƒ˜แƒ— แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ›แƒแƒกแƒแƒ›แƒกแƒแƒฎแƒฃแƒ แƒ”แƒ‘แƒšแƒแƒ“. แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒ˜แƒก แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ. Backend แƒแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒก แƒ›แƒแƒ— แƒฌแƒ˜แƒœแƒแƒกแƒฌแƒแƒ  แƒ›แƒแƒ›แƒ–แƒแƒ“แƒ”แƒ‘แƒฃแƒš แƒ›แƒแƒชแƒฃแƒšแƒแƒ‘แƒแƒจแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒกแƒ”แƒ•แƒ” แƒ“แƒแƒ›แƒแƒœแƒขแƒแƒŸแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒจแƒ˜ nginx-แƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ˜แƒซแƒšแƒ”แƒ•แƒ แƒกแƒขแƒแƒขแƒ˜แƒ™แƒแƒก.

nginx, mysql แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒกแƒแƒœแƒแƒฎแƒแƒ“ แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒ”แƒ— Docker แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ”, แƒ แƒแƒ›แƒ”แƒšแƒจแƒ˜แƒช แƒ•แƒ˜แƒœแƒแƒฎแƒแƒ•แƒ— แƒกแƒแƒญแƒ˜แƒ แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒก. แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ˜ แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒก แƒกแƒแƒชแƒแƒ•แƒ˜แƒก git แƒ™แƒšแƒแƒœแƒก แƒ—แƒแƒ•แƒ˜แƒก แƒแƒžแƒแƒ แƒแƒขแƒ–แƒ”, แƒ›แƒแƒก แƒฃแƒ™แƒ•แƒ” แƒแƒฅแƒ•แƒก แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜ แƒ›แƒ–แƒแƒ“ แƒšแƒแƒ™แƒแƒšแƒฃแƒ แƒ˜ แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒแƒ•แƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก, แƒ แƒ แƒžแƒแƒ แƒขแƒ˜ แƒแƒœ แƒ แƒ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ.

แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ Docker แƒ“แƒ Gitlab CI-แƒ˜แƒ—

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜, แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ˜: แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒขแƒแƒ แƒ˜, แƒ˜แƒœแƒคแƒแƒ แƒ›แƒ˜แƒ แƒ”แƒ‘แƒ-API, push แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜.

แƒแƒ› แƒงแƒ•แƒ”แƒšแƒแƒคแƒ แƒ˜แƒก แƒ“แƒแƒกแƒแƒฌแƒงแƒ”แƒ‘แƒแƒ“ แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ”แƒ แƒ—แƒ˜ แƒกแƒแƒชแƒแƒ•แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒ“แƒแƒ•แƒแƒ แƒฅแƒ•แƒ˜แƒ— dockerized-app. แƒแƒ› แƒ“แƒ แƒแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒกแƒแƒชแƒแƒ•แƒก แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ˜แƒก แƒฌแƒ˜แƒœ. แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒšแƒแƒ’แƒ˜แƒ™แƒฃแƒ แƒแƒ“ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ“แƒ”แƒ‘แƒ˜แƒแƒœ - GitLab-แƒจแƒ˜ แƒ˜แƒก แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ”แƒก แƒฐแƒ’แƒแƒ•แƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ˜แƒก แƒ›แƒแƒœแƒฅแƒแƒœแƒแƒ–แƒ”, แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ” แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒšแƒ˜ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ”แƒ แƒ—แƒ˜ แƒ“แƒแƒœแƒ˜แƒก แƒฅแƒ•แƒ”แƒ›แƒแƒ— แƒแƒ แƒ˜แƒก แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ’แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ“แƒ”แƒ‘แƒ.

แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ Docker แƒ“แƒ Gitlab CI-แƒ˜แƒ—

แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ dockerized-แƒแƒžแƒ˜แƒก แƒจแƒ˜แƒœแƒแƒแƒ แƒกแƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜. แƒฉแƒ•แƒ”แƒœ แƒแƒกแƒ”แƒ•แƒ” แƒ›แƒแƒ•แƒ˜แƒงแƒ•แƒแƒœแƒ— Docker แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒก, แƒ แƒแƒ›แƒ”แƒšแƒจแƒ˜แƒช แƒ•แƒแƒ•แƒกแƒ”แƒ‘แƒ— แƒงแƒ•แƒ”แƒšแƒ แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ˜แƒก แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒก. แƒแƒ แƒ˜แƒก README.md, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒแƒ™แƒšแƒ”แƒ“ แƒแƒฆแƒฌแƒ”แƒ แƒก, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒแƒฌแƒแƒ แƒ›แƒแƒแƒ— แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜.

แƒแƒฅ แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ— แƒแƒ แƒ˜ docker-compose แƒคแƒแƒ˜แƒšแƒ˜. แƒ”แƒก แƒ™แƒ”แƒ—แƒ“แƒ”แƒ‘แƒ แƒ˜แƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒจแƒ”แƒซแƒšแƒแƒ— แƒ”แƒขแƒแƒžแƒแƒ‘แƒ แƒ˜แƒ•แƒแƒ“ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ. แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ—แƒแƒœ, แƒ›แƒแƒก แƒแƒ  แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ push-แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜, แƒ˜แƒก แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒฃแƒจแƒ•แƒ”แƒ‘แƒก docker-compose แƒคแƒแƒ˜แƒšแƒก แƒ“แƒ, แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ“, แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ˜ แƒ˜แƒœแƒแƒฎแƒ”แƒ‘แƒ.

แƒ—แƒฃ แƒกแƒแƒญแƒ˜แƒ แƒแƒ push-แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ—แƒแƒœ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒ˜แƒ แƒ”แƒ‘แƒ, แƒ›แƒแƒจแƒ˜แƒœ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ 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.docker.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 - แƒ แƒ”แƒžแƒแƒ แƒขแƒแƒŸแƒ˜ Ruby Russia แƒ™แƒšแƒฃแƒ‘แƒ˜แƒ“แƒแƒœ - แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ“แƒ”แƒขแƒแƒšแƒฃแƒ แƒ˜ แƒ“แƒ แƒแƒšแƒ‘แƒแƒ— แƒ“แƒแƒ’แƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ”แƒ‘แƒ—.

แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ Docker แƒ“แƒ Gitlab CI-แƒ˜แƒ—

แƒแƒฎแƒšแƒ แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ“แƒแƒ•แƒฎแƒ”แƒ“แƒแƒ•แƒ— แƒ แƒ แƒแƒ แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ Gitlab CI-แƒ˜แƒก แƒ’แƒแƒกแƒแƒแƒฅแƒขแƒ˜แƒฃแƒ แƒ”แƒ‘แƒšแƒแƒ“. แƒ˜แƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒ“แƒแƒ•แƒ˜แƒฌแƒงแƒแƒ— Gitlab CI, แƒฉแƒ•แƒ”แƒœ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ•แƒแƒงแƒ”แƒœแƒแƒ— .gitlab-ci.yml แƒคแƒแƒ˜แƒšแƒ˜ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก root-แƒจแƒ˜.

แƒแƒฅ แƒฉแƒ•แƒ”แƒœ แƒแƒฆแƒ•แƒฌแƒ”แƒ แƒ—, แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒ˜แƒœแƒ“แƒ แƒจแƒ”แƒ•แƒแƒกแƒ แƒฃแƒšแƒแƒ— แƒ›แƒ“แƒ’แƒแƒ›แƒแƒ แƒ”แƒแƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒแƒ‘แƒ, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ แƒขแƒ”แƒกแƒขแƒ˜, แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ.

แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ— แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ”แƒ‘แƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒ›แƒแƒฃแƒฌแƒแƒ“แƒ”แƒ‘แƒ”แƒœ docker-compose-แƒก แƒฉแƒ•แƒ”แƒœแƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฅแƒ›แƒœแƒ”แƒšแƒแƒ“. แƒ”แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒฃแƒ™แƒแƒœแƒ แƒœแƒแƒฌแƒ˜แƒšแƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜แƒ.

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜, แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ›แƒ‘แƒแƒ‘แƒ—, แƒ แƒแƒ› แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ›แƒ˜แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒจแƒ”แƒกแƒแƒชแƒ•แƒšแƒ”แƒšแƒแƒ“ แƒ“แƒ แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒกแƒแƒจแƒ•แƒ”แƒ‘แƒแƒ“.

แƒ—แƒฃ แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ”แƒ‘แƒ˜ แƒกแƒฌแƒแƒ แƒแƒ“ แƒแƒ แƒ˜แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ“แƒ แƒแƒ  แƒ“แƒแƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ˜แƒก แƒ™แƒแƒ“แƒก, แƒ›แƒแƒจแƒ˜แƒœ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ”แƒแƒ แƒ” แƒ”แƒขแƒแƒžแƒ–แƒ”.

แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒ”แƒขแƒแƒžแƒ˜ แƒแƒ›แƒŸแƒแƒ›แƒแƒ“ แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ“แƒแƒ“แƒ’แƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒฉแƒ•แƒ”แƒœ แƒแƒ  แƒ›แƒแƒ•แƒแƒฌแƒงแƒ•แƒ”แƒ— แƒœแƒฃแƒšแƒแƒ•แƒแƒœแƒ˜ แƒจแƒ”แƒคแƒ”แƒ แƒฎแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ.

แƒฉแƒ•แƒ”แƒœ แƒซแƒแƒšแƒ˜แƒ— แƒ•แƒแƒฅแƒ แƒ”แƒ‘แƒ— แƒงแƒ•แƒ”แƒšแƒ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒก, แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ™แƒ˜ แƒ˜แƒกแƒ”แƒ• แƒแƒ•แƒฌแƒ”แƒ•แƒ— แƒงแƒ•แƒ”แƒšแƒ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ’แƒ แƒแƒ•แƒ“แƒ แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ”แƒขแƒแƒžแƒ–แƒ” แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒก.

แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ” แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒชแƒ•แƒšแƒแƒ“แƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒ›แƒ˜แƒ’แƒ แƒแƒชแƒ˜แƒแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ“แƒแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜แƒ แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ .

แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒจแƒ”แƒœแƒ˜แƒจแƒ•แƒœแƒ, แƒ แƒแƒ› แƒ”แƒก แƒ”แƒฎแƒ”แƒ‘แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ›แƒ—แƒแƒ•แƒแƒ  แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒก.

แƒกแƒฎแƒ•แƒ แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒชแƒ•แƒšแƒ˜แƒกแƒแƒก แƒแƒ  แƒกแƒ แƒฃแƒšแƒ“แƒ”แƒ‘แƒ.

แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒแƒ แƒ’แƒแƒœแƒ˜แƒ–แƒ”แƒ‘แƒ แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—.

แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ Docker แƒ“แƒ Gitlab CI-แƒ˜แƒ—

แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ’แƒแƒ›แƒ˜ แƒแƒ แƒ’แƒแƒœแƒ˜แƒ–แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ•แƒแƒงแƒ”แƒœแƒแƒ— Gitlab Runner.

แƒ”แƒก แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ แƒ“แƒแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜แƒ Golang-แƒจแƒ˜. แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ”แƒ แƒ—แƒ˜ แƒคแƒแƒ˜แƒšแƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒ”แƒก แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• แƒ’แƒแƒšแƒแƒœแƒ’แƒ˜แƒก แƒกแƒแƒ›แƒงแƒแƒ แƒแƒจแƒ˜แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ  แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒก แƒ แƒแƒ˜แƒ›แƒ” แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒแƒก.

แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒกแƒแƒก แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒ˜แƒ แƒ”แƒ‘แƒ— Gitlab Runner-แƒก.

แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒก Gitlab แƒ•แƒ”แƒ‘ แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒจแƒ˜.

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒฉแƒ•แƒ”แƒœ แƒ›แƒแƒ•แƒฃแƒฌแƒแƒ“แƒ”แƒ‘แƒ— แƒ˜แƒœแƒ˜แƒชแƒ˜แƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒแƒก แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒฎแƒแƒ–แƒ–แƒ”.

แƒ“แƒแƒแƒงแƒ”แƒœแƒ”แƒ— Gitlab Runner แƒ˜แƒœแƒขแƒ”แƒ แƒแƒฅแƒขแƒ˜แƒฃแƒšแƒแƒ“ (Shell, Docker, VirtualBox, SSH)

Gitlab Runner-แƒ˜แƒก แƒ™แƒแƒ“แƒ˜ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ“แƒ”แƒ‘แƒ แƒงแƒ•แƒ”แƒšแƒ แƒ“แƒแƒ•แƒแƒšแƒ”แƒ‘แƒแƒจแƒ˜, .gitlab-ci.yml แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—.

แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ Docker แƒ“แƒ Gitlab CI-แƒ˜แƒ—

แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒ แƒ•แƒ˜แƒ–แƒฃแƒแƒšแƒฃแƒ แƒแƒ“ Gitlab-แƒจแƒ˜ แƒ•แƒ”แƒ‘ แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒจแƒ˜. แƒ›แƒแƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ แƒแƒช แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ— GItlab CI-แƒก, แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒ“แƒ แƒแƒจแƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒก แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒก แƒ›แƒ“แƒ’แƒแƒ›แƒแƒ แƒ”แƒแƒ‘แƒแƒก แƒ›แƒแƒ›แƒ”แƒœแƒขแƒจแƒ˜.

แƒ•แƒฎแƒ”แƒ“แƒแƒ•แƒ—, แƒ แƒแƒ› 4 แƒฌแƒฃแƒ—แƒ˜แƒก แƒฌแƒ˜แƒœ แƒ’แƒแƒ™แƒ”แƒ—แƒ“แƒ แƒ•แƒแƒšแƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ›แƒแƒช แƒงแƒ•แƒ”แƒšแƒ แƒขแƒ”แƒกแƒขแƒ˜ แƒ’แƒแƒ˜แƒแƒ แƒ แƒ“แƒ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ แƒแƒ  แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒ.

แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ Docker แƒ“แƒ Gitlab CI-แƒ˜แƒ—

แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒฃแƒคแƒ แƒ แƒแƒฎแƒšแƒแƒก แƒ›แƒ˜แƒ•แƒฎแƒ”แƒ“แƒแƒ— แƒจแƒ”แƒœแƒแƒ‘แƒ”แƒ‘แƒก. แƒแƒฅ แƒฉแƒ•แƒ”แƒœ แƒ•แƒฎแƒ”แƒ“แƒแƒ•แƒ—, แƒ แƒแƒ› แƒแƒ แƒ˜ แƒกแƒแƒฎแƒ”แƒšแƒ›แƒฌแƒ˜แƒคแƒ แƒฃแƒ™แƒ•แƒ” แƒ’แƒแƒ•แƒ˜แƒ“แƒ. แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒขแƒแƒขแƒฃแƒกแƒ˜ แƒ“แƒ แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒกแƒขแƒแƒขแƒฃแƒกแƒ˜ แƒ“แƒแƒ“แƒ’แƒ›แƒแƒ–แƒ”.

แƒ—แƒฃ แƒ“แƒแƒ•แƒแƒฌแƒ™แƒแƒžแƒฃแƒœแƒ”แƒ‘แƒ— แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒš build-แƒ–แƒ”, แƒ›แƒแƒจแƒ˜แƒœ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ™แƒแƒœแƒกแƒแƒšแƒ˜แƒก แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒฅแƒœแƒ แƒžแƒ แƒแƒชแƒ”แƒกแƒจแƒ˜ .gitlab-ci.yml-แƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—.

แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ Docker แƒ“แƒ Gitlab CI-แƒ˜แƒ—

แƒแƒกแƒ” แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒ แƒฉแƒ•แƒ”แƒœแƒ˜ แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ˜แƒก แƒ˜แƒกแƒขแƒแƒ แƒ˜แƒ. แƒฉแƒ•แƒ”แƒœ แƒ•แƒฎแƒ”แƒ“แƒแƒ•แƒ—, แƒ แƒแƒ› แƒ˜แƒงแƒ แƒฌแƒแƒ แƒ›แƒแƒขแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒชแƒ“แƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜. แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ แƒฌแƒแƒ แƒ“แƒ’แƒ”แƒœแƒ˜แƒšแƒ˜แƒ, แƒ˜แƒก แƒแƒ  แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ”แƒขแƒแƒžแƒ–แƒ” แƒ“แƒ แƒ“แƒแƒ“แƒ’แƒ›แƒ˜แƒก แƒ™แƒแƒ“แƒ˜ แƒแƒ  แƒ’แƒแƒœแƒแƒฎแƒšแƒ“แƒ”แƒ‘แƒ.

แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ Docker แƒ“แƒ Gitlab CI-แƒ˜แƒ—

แƒ แƒ แƒแƒ›แƒแƒชแƒแƒœแƒ”แƒ‘แƒ˜ แƒ’แƒแƒ“แƒแƒ•แƒฌแƒงแƒ•แƒ˜แƒขแƒ”แƒ— แƒกแƒชแƒ”แƒœแƒแƒ–แƒ” แƒ“แƒแƒ™แƒ”แƒ แƒ˜แƒก แƒ“แƒแƒœแƒ”แƒ แƒ’แƒ•แƒ˜แƒกแƒแƒก? แƒฉแƒ•แƒ”แƒœแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ แƒจแƒ”แƒ“แƒ’แƒ”แƒ‘แƒ แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒกแƒ’แƒแƒœ แƒ“แƒ แƒ’แƒ•แƒฅแƒแƒœแƒ“แƒ แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒ แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ, แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒฌแƒ˜แƒšแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒœแƒแƒฎแƒšแƒ“แƒ แƒกแƒแƒชแƒแƒ•แƒจแƒ˜ แƒ“แƒ แƒแƒ แƒ แƒ›แƒ—แƒ”แƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ.

แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ’แƒ•แƒ”แƒขแƒ”แƒฎแƒ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒชแƒแƒšแƒ™แƒ”แƒฃแƒš แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ”แƒ”แƒ‘แƒจแƒ˜.

แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒฅแƒแƒœแƒ“แƒ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ แƒ˜แƒ›แƒ˜แƒกแƒ, แƒ แƒแƒ› 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 แƒ“แƒ แƒคแƒแƒ˜แƒšแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒฉแƒ•แƒ”แƒœ แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— แƒแƒ› แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒจแƒ˜, แƒ˜แƒฆแƒ”แƒ‘แƒก root แƒฃแƒคแƒšแƒ”แƒ‘แƒ”แƒ‘แƒก.

แƒ—แƒฃ แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ˜ แƒจแƒ”แƒ•แƒ˜แƒ“แƒ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒจแƒ˜ แƒ“แƒ แƒจแƒ”แƒแƒกแƒ แƒฃแƒšแƒ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฅแƒ›แƒœแƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒก, แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ“แƒแƒขแƒแƒ•แƒ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜, แƒ›แƒแƒจแƒ˜แƒœ แƒ›แƒแƒก แƒแƒฅแƒ•แƒก แƒคแƒแƒ˜แƒšแƒ˜ แƒ—แƒแƒ•แƒ˜แƒก แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒจแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ–แƒ”แƒช แƒ›แƒแƒก แƒแƒ  แƒแƒฅแƒ•แƒก แƒฌแƒ•แƒ“แƒแƒ›แƒ.

แƒ แƒแƒ’แƒแƒ  แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ›แƒ˜แƒกแƒ˜ แƒ›แƒแƒ’แƒ•แƒแƒ แƒ”แƒ‘แƒ? แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ“แƒแƒแƒ›แƒแƒขแƒแƒ— แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ˜แƒแƒœ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒจแƒ˜.

แƒ แƒ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒฌแƒแƒ แƒ›แƒแƒ˜แƒฅแƒ›แƒœแƒ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒ”แƒ— แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜?

แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒกแƒแƒก แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒแƒ  แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒฏแƒ’แƒฃแƒคแƒ˜แƒก ID (UID) แƒ“แƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก ID (GID).

แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒจแƒ˜ แƒแƒ› แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ˜แƒก แƒ›แƒแƒกแƒแƒ’แƒ•แƒแƒ แƒ”แƒ‘แƒšแƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒก ID 1000.

แƒฉแƒ•แƒ”แƒœแƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ”แƒก แƒ“แƒแƒ”แƒ›แƒ—แƒฎแƒ•แƒ แƒ˜แƒ› แƒคแƒแƒฅแƒขแƒก, แƒ แƒแƒ› แƒ—แƒ˜แƒ—แƒฅแƒ›แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ˜ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก Ubuntu OS-แƒก. Ubuntu-แƒ–แƒ” แƒ™แƒ˜ แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒก แƒแƒฅแƒ•แƒก ID 1000.

แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ Docker แƒ“แƒ Gitlab CI-แƒ˜แƒ—

แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒ’แƒ”แƒ’แƒ›แƒ”แƒ‘แƒ˜?

แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒ”แƒ— แƒ“แƒแƒ™แƒ”แƒ แƒ˜แƒก แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ. แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜ แƒแƒฅแƒขแƒ˜แƒฃแƒ แƒแƒ“ แƒ•แƒ˜แƒ—แƒแƒ แƒ“แƒ”แƒ‘แƒ, แƒ˜แƒชแƒ•แƒšแƒ”แƒ‘แƒ แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ. แƒแƒ แƒ˜-แƒกแƒแƒ›แƒ˜ แƒ—แƒ•แƒ˜แƒก แƒฌแƒ˜แƒœ แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒฃแƒ™แƒ•แƒ” แƒœแƒ”แƒš-แƒœแƒ”แƒšแƒ แƒ›แƒแƒซแƒ•แƒ”แƒšแƒ“แƒ”แƒ‘แƒ.

แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ˜ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ“แƒแƒ•แƒฌแƒงแƒ•แƒ˜แƒขแƒ”แƒ—, แƒจแƒ”แƒกแƒแƒซแƒšแƒแƒ แƒฃแƒ™แƒ•แƒ” แƒ›แƒแƒ’แƒ•แƒแƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒšแƒ˜ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒ—.

แƒแƒ›แƒ˜แƒขแƒแƒ› แƒ›แƒ˜แƒœแƒ“แƒ แƒฃแƒคแƒ แƒ แƒจแƒแƒ แƒก แƒฌแƒแƒ•แƒ˜แƒ“แƒ” แƒฃแƒ™แƒ•แƒ” แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒแƒ แƒ™แƒ”แƒกแƒขแƒ แƒ˜แƒ แƒ”แƒ‘แƒแƒ–แƒ”.

แƒ”แƒ แƒ—แƒ˜ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜แƒ Docker-แƒ˜แƒก แƒฉแƒแƒจแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒ”แƒฅแƒแƒœแƒ˜แƒ–แƒ›แƒ˜ แƒกแƒแƒฎแƒ”แƒšแƒแƒ“ Docker Swarm, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒ›แƒแƒ“แƒ˜แƒก แƒงแƒฃแƒ—แƒ˜แƒ“แƒแƒœ. แƒ›แƒกแƒฃแƒ แƒก แƒ แƒแƒฆแƒแƒชแƒ˜แƒก แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ Docker Swarm แƒขแƒ”แƒฅแƒœแƒแƒšแƒแƒ’แƒ˜แƒแƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ.

แƒฅแƒ•แƒ˜แƒ แƒ˜แƒ—แƒ˜แƒก แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒ˜ แƒฃแƒฎแƒ”แƒ แƒฎแƒฃแƒšแƒก แƒฎแƒ“แƒ˜แƒก แƒ›แƒแƒ แƒ”แƒ‘แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒแƒก. แƒแƒฎแƒšแƒ แƒ›แƒแƒ แƒ”แƒ‘แƒ˜ แƒ˜แƒ–แƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ. แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ›แƒ˜แƒ›แƒแƒคแƒแƒœแƒขแƒฃแƒšแƒ˜แƒ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒจแƒ˜. แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒแƒ›แƒแƒชแƒแƒœแƒแƒ แƒ•แƒ”แƒ‘ แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ— แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒ–แƒ” แƒ›แƒแƒกแƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒฌแƒ•แƒ“แƒแƒ›แƒ.

แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ Docker แƒ“แƒ Gitlab CI-แƒ˜แƒ—

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ