เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฑเบš Docker เปเบฅเบฐ Gitlab CI

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เบ—เปˆเบฒเบ™เบญเปˆเบฒเบ™เบšเบปเบ”เบšเบฑเบ™เบ—เบถเบเบ‚เบญเบ‡เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เป‚เบ”เบ Alexander Sigachev เบˆเบฒเบ Inventos "เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฑเบš Docker + Gitlab CI"

เบœเบนเป‰เบ—เบตเปˆเบžเบฝเบ‡เปเบ•เปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ Docker + Gitlab CI เบกเบฑเบเบˆเบฐเบ–เบฒเบกเบ„เปเบฒเบ–เบฒเบกเบžเบทเป‰เบ™เบ–เบฒเบ™. เบšเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™? เบเบฒเบ™เบˆเบฑเบ”เบฅเบฐเบšเบฝเบšเปเบ™เบงเปƒเบ”? เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปเบ™เบงเปƒเบ”?

เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบ”เบตเป€เบžเบฒเบฐเบงเปˆเบฒเบกเบฑเบ™เบชเบปเบ™เบ—เบฐเบ™เบฒเปƒเบ™เปเบšเบšเบ—เบตเปˆเบกเบตเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบเปˆเบฝเบงเบเบฑเบšเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป‚เบ”เบเปƒเบŠเป‰ Docker เปเบฅเบฐ Gitlab CI. เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡เปเบกเปˆเบ™เบกเบฒเบˆเบฒเบ 2017. เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบ„เบดเบ”โ€‹เบงเปˆเบฒโ€‹เบˆเบฒเบโ€‹เบšเบปเบ”โ€‹เบฅเบฒเบโ€‹เบ‡เบฒเบ™โ€‹เบ™เบตเป‰โ€‹เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เป€เบเบฑเบšโ€‹เบเปเบฒโ€‹เบžเบทเป‰เบ™โ€‹เบ–เบฒเบ™โ€‹, เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹, เบ„เบงเบฒเบกโ€‹เบ„เบดเบ”โ€‹, เปเบฅเบฐโ€‹เบ›เบฐโ€‹เบชเบปเบšโ€‹เบเบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹.

เปƒเบœเบชเบปเบ™เปƒเบˆ, เบเบฐเบฅเบธเบ™เบฒเบžเบฒเบเปƒเบ•เป‰เปเบกเบง.

เบ‚เป‰เบญเบเบŠเบทเปˆ Alexander Sigachev. เบ‚เป‰เบญเบเป€เบฎเบฑเบ”เบงเบฝเบเปƒเบซเป‰ Inventos. เบ‚เป‰เบญเบเบˆเบฐเบšเบญเบเบ—เปˆเบฒเบ™เบเปˆเบฝเบงเบเบฑเบšเบ›เบฐเบชเบปเบšเบเบฒเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบเบ—เบตเปˆเปƒเบŠเป‰ Docker เปเบฅเบฐเบงเบดเบ—เบตเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ„เปˆเบญเบเป†เบ›เบฐเบ•เบดเบšเบฑเบ”เบกเบฑเบ™เบขเบนเปˆเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เปƒเบ™เบšเปเบฅเบดเบชเบฑเบ”.

เบซเบปเบงเบ‚เปเป‰เบ‚เบญเบ‡เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™: เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ”เบเปƒเบŠเป‰ Docker เปเบฅเบฐ Gitlab CI.

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฑเบš Docker เปเบฅเบฐ Gitlab CI

เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบชเบปเบ™เบ—เบฐเบ™เบฒเบ—เบตเบชเบญเบ‡เบ‚เบญเบ‡เบ‚เป‰เบญเบเบเปˆเบฝเบงเบเบฑเบš Docker. เปƒเบ™เป€เบงเบฅเบฒเบ‚เบญเบ‡เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เปƒเบŠเป‰ Docker เบžเบฝเบ‡เปเบ•เปˆเปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ. เบˆเปเบฒเบ™เบงเบ™เบžเบฐเบ™เบฑเบเบ‡เบฒเบ™เบ—เบตเปˆเปƒเบŠเป‰ Docker เบกเบตเบ›เบฐเบกเบฒเบ™ 2-3 เบ„เบปเบ™. เบ„เปˆเบญเบเป†, เบ›เบฐเบชเบปเบšเบเบฒเบ™เป„เบ”เป‰เบฎเบฑเบšเปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบเป‰เบฒเบเป„เบ›เบ•เบทเปˆเบกเบญเบตเบเป€เบฅเบฑเบเบ™เป‰เบญเบ. เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบžเบงเบเป€เบฎเบปเบฒ เบšเบปเบ”โ€‹เบฅเบฒเบโ€‹เบ‡เบฒเบ™โ€‹เบ„เบฑเป‰เบ‡โ€‹เบ—เปเบฒโ€‹เบญเบดเบ”โ€‹.

เบˆเบฐเป€เบ›เบฑเบ™เปเบ™เบงเปƒเบ”เปƒเบ™เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เบ™เบตเป‰? เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปเบšเปˆเบ‡เบ›เบฑเบ™เบ›เบฐเบชเบปเบšเบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบเปˆเบฝเบงเบเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆ rakes เบžเบงเบเป€เบฎเบปเบฒเป€เบเบฑเบšเบเปเบฒ, เบšเบฑเบ™เบซเบฒเปƒเบ”เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเปเบเป‰เป„เบ‚. เบกเบฑเบ™โ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบ‡เบฒเบกโ€‹เบขเบนเปˆโ€‹เบ—เบปเปˆเบงโ€‹เบ—เบธเบโ€‹เปเบซเปˆเบ‡, เปเบ•เปˆโ€‹เบงเปˆเบฒโ€‹เบกเบฑเบ™โ€‹เป„เบ”เป‰โ€‹เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰โ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบ•เปเปˆโ€‹เป„เบ›.

เบ„เปเบฒเบ‚เบงเบฑเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ: dockerize เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบกเบทเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฑเบš Docker เปเบฅเบฐ Gitlab CI

เบžเบงเบเป€เบฎเบปเบฒเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบซเบเบฑเบ‡เปเบ”เปˆ?

เป€เบกเบทเปˆเบญเบšเปเบฅเบดเบชเบฑเบ”เบกเบตเบซเบผเบฒเบเป†เบ—เบตเบก, เบ™เบฑเบเบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเป€เบ›เบฑเบ™เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเปเบšเปˆเบ‡เบ›เบฑเบ™. เบกเบตเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบตเปˆเบ™เบฑเบเบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบ–เบทเบเบ”เบถเบ‡เบญเบญเบเบˆเบฒเบเป‚เบ„เบ‡เบเบฒเบ™เบซเบ™เบถเปˆเบ‡เปเบฅเบฐเบกเบญเบšเปƒเบซเป‰เป‚เบ„เบ‡เบเบฒเบ™เบญเบทเปˆเบ™เบชเปเบฒเบฅเบฑเบšเบšเบฒเบ‡เป€เบงเบฅเบฒ.

เป€เบžเบทเปˆเบญเปƒเบซเป‰เบ™เบฑเบเบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเป€เบ‚เบปเป‰เบฒเปƒเบˆเป„เบง, เบฅเบฒเบงเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบ”เบฒเบงเป‚เบซเบฅเบ”เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เปเบฅเบฐเป€เบ›เบตเบ”เบ•เบปเบงเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเป„เบงเป€เบ—เบปเปˆเบฒเบ—เบตเปˆเบˆเบฐเป„เบงเป„เบ”เป‰, เป€เบŠเบดเปˆเบ‡เบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบฅเบฒเบงเบกเบตเบ„เบงเบฒเบกเบเป‰เบฒเบงเบซเบ™เป‰เบฒเปƒเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ™เบตเป‰.

เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบง, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบˆเบฒเบ scratch, เบกเบตเป€เบญเบเบฐเบชเบฒเบ™เบžเบฝเบ‡เป€เบฅเบฑเบเบ™เป‰เบญเบเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™. เบกเบตเบžเบฝเบ‡เปเบ•เปˆเบ„เบปเบ™เป€เบเบปเปˆเบฒเบ—เบตเปˆเบกเบตเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบกเบฑเบ™. เบžเบฐเบ™เบฑเบเบ‡เบฒเบ™เบ•เบฑเป‰เบ‡เบšเปˆเบญเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡เปƒเบ™เบซเบ™เบถเปˆเบ‡เบซเบผเบทเบชเบญเบ‡เบกเบทเป‰. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป„เบงเบ‚เบถเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เปƒเบŠเป‰ Docker.

เป€เบซเบ”เบœเบปเบ™เบ•เปเปˆเป„เบ›เปเบกเปˆเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ. เปƒเบ™เบ›เบฐเบชเบปเบšเบเบฒเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบ, เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเบฐเป€เบซเบกเบตเป€เบญเบปเบฒเบเบฒเบ™เบฅเบดเป€เบฅเบตเปˆเบก. เปƒเบ™เบ—เบธเบเป†เบเปเบฅเบฐเบ™เบตเบ—เบตเบซเป‰เบฒ, เป‚เบ”เป€เบกเบ™เบ—เบตเปˆเบเปเบฒเบซเบ™เบปเบ”เป€เบญเบ‡เบ–เบทเบเปƒเบชเปˆ, เบ•เบปเบงเบขเปˆเบฒเบ‡ vasya.dev. เบ™เบฑเปˆเบ‡เบขเบนเปˆเบ‚เป‰เบฒเบ‡เบ‚เป‰เบญเบเปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบ™เบšเป‰เบฒเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบ Petya, เป€เบŠเบดเปˆเบ‡เป‚เบ”เป€เบกเบ™เปเบกเปˆเบ™ petya.dev. เบžเบงเบเป€เบ‚เบปเบฒเบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบงเบฑเบšเป„เบŠเบ—เปŒเบซเบผเบทเบšเบฒเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเป‚เบ”เบเปƒเบŠเป‰เบŠเบทเปˆเป‚เบ”เป€เบกเบ™เบ™เบตเป‰.

เป€เบกเบทเปˆเบญเบฅเบฐเบšเบปเบšเบˆเบฐเป€เบฅเบตเบ™เป€เบ•เบตเบšเป‚เบ•เปเบฅเบฐเบŠเบทเปˆเป‚เบ”เป€เบกเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ, เบ„เบงเบฒเบกเบ‚เบฑเบ”เปเบเป‰เบ‡เปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบเบตเบ”เบ‚เบทเป‰เบ™เปเบฅเบฐเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ–เบทเบเบ‚เบฝเบ™เบ„เบทเบ™เปƒเบซเบกเปˆ.

เบชเบดเปˆเบ‡เบ”เบฝเบงเบเบฑเบ™เป€เบเบตเบ”เบ‚เบถเป‰เบ™เบเบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™. เบšเบฒเบ‡เบ„เบปเบ™เบšเปเปˆเป€เบšเบทเปˆเบญเบเบฑเบšเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž เปเบฅเบฐเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เบฎเบฒเบเบ—เบตเปˆเบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ. เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡, MySQL เป„เบ”เป‰เบฎเป‰เบญเบ‡เบ‚เปเปƒเบซเป‰เบœเบนเป‰เปƒเบ”เบœเบนเป‰เบซเบ™เบถเปˆเบ‡เบชเปเบฒเบฅเบฑเบšเบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เปเบฅเบฐเบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เป„เบ”เป‰เบเบฒเบเบกเบฒเป€เบ›เบฑเบ™ 123. เบกเบฑเบ™เบกเบฑเบเบˆเบฐเป€เบเบตเบ”เบ‚เบทเป‰เบ™เบงเปˆเบฒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบ„เปเบฒเบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒเบ‚เบญเบ‡เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒ. เบšเบฒเบ‡เบ„เบปเบ™เปเบเป‰เป„เบ‚, เบšเบฒเบ‡เบ„เบปเบ™เบšเปเปˆเป„เบ”เป‰เปเบเป‰เป„เบ‚เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ. เบกเบต tricks เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบญเบปเบฒเบšเบฒเบ‡ config เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ .gitignore เปเบฅเบฐเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบ•เปˆเบฅเบฐเบ„เบปเบ™เบ•เป‰เบญเบ‡เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™. เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบกเบตเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเบซเบผเบฒเบ. เปƒเบ™เบšเบฑเบ™เบ”เบฒเบชเบดเปˆเบ‡เบญเบทเปˆเบ™เป†, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบˆเบทเปˆเบˆเปเบฒเบเปˆเบฝเบงเบเบฑเบšเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™. เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™, เบœเบนเป‰เปƒเบŠเป‰เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™, เบ›เป‰เบฒเบเบ•เป‰เบญเบ‡เบ–เบทเบเบชเป‰เบฒเบ‡, เปเบฅเบฐเบญเบทเปˆเบ™เป†.

เบšเบฑเบ™เบซเบฒเบญเบตเบเบญเบฑเบ™เบซเบ™เบถเปˆเบ‡เปเบกเปˆเบ™เบชเบฐเบšเบฑเบšเบ•เปˆเบฒเบ‡เป†เบ‚เบญเบ‡เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”. เบกเบฑเบ™เบกเบฑเบเบˆเบฐเป€เบเบตเบ”เบ‚เบทเป‰เบ™เบงเปˆเบฒเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เบกเบตเป‚เบ„เบ‡เบเบฒเบ™ Legacy, เป€เบŠเบดเปˆเบ‡เป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบซเป‰เบฒเบ›เบตเบเปˆเบญเบ™ (เบˆเบฒเบ 2017 - เบšเบฑเบ™เบ—เบถเบเบ‚เบญเบ‡เบšเบฑเบ™เบ™เบฒเบ—เบดเบเบฒเบ™). เปƒเบ™เบ•เบญเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ MySQL 5.5. เบเบฑเบ‡เบกเบตเป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบกเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบžเบฐเบเบฒเบเบฒเบกเบ›เบฐเบ•เบดเบšเบฑเบ” MySQL เบฎเบธเปˆเบ™เบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบกเบซเบผเบฒเบ, เบ•เบปเบงเบขเปˆเบฒเบ‡ 5.7 เบซเบผเบทเป€เบเบปเปˆเบฒเบเบงเปˆเบฒ (เปƒเบ™เบ›เบต 2017 - เบšเบฑเบ™เบ—เบถเบเบ‚เบญเบ‡เบšเบฑเบ™เบ™เบฒเบ—เบดเบเบฒเบ™)

เปƒเบœเบเปเปˆเบ•เบฒเบกเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš MySQL เบฎเบนเป‰เบงเปˆเบฒเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบช. เบกเบฑเบ™เป€เบ›เบฑเบ™เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบ—เบตเปˆเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ 2 เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบฎเปˆเบงเบกเบเบฑเบ™. เบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบ, เบกเบฑเบ™เป€เบ›เบฑเบ™เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบˆเบฐเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบฅเบนเบเบ„เป‰เบฒเป€เบเบปเปˆเบฒเบเบฑเบšเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปƒเบซเบกเปˆ. เบญเบฑเบ™เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบšเบฑเบ™เบซเบฒเบซเบผเบฒเบเบขเปˆเบฒเบ‡.

เบšเบฑเบ™เบซเบฒเบ•เปเปˆเป„เบ›เปเบกเปˆเบ™เป€เบกเบทเปˆเบญเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™, เบฅเบฒเบงเปƒเบŠเป‰เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™, เป„เบŸเบฅเปŒเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™, RAM เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™. เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเปเบกเปˆเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบขเบนเปˆเปƒเบ™เบ‚เบญเบšเบ‚เบญเบ‡เบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบกเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบ”เบฝเบง. เบ•เบปเบงเบขเปˆเบฒเบ‡เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบกเบตเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ backend เปƒเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ” 3, เปเบฅเบฐเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบˆเบฐเบšเบฑเบ™เบ—เบถเบเป„เบŸเบฅเปŒเป„เบ›เบซเบฒเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบฎเบฒเบเปเบฅเบฐเบˆเบฒเบเบ™เบฑเป‰เบ™ nginx เป€เบญเบปเบฒเป„เบŸเบฅเปŒเป€เบžเบทเปˆเบญเบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป. เป€เบกเบทเปˆเบญเบฅเบฐเบซเบฑเบ”เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”, เบกเบฑเบ™เบ›เบฒเบเบปเบ”เบงเปˆเบฒเป„เบŸเบฅเปŒเบกเบตเบขเบนเปˆเปƒเบ™เบซเบ™เบถเปˆเบ‡เปƒเบ™ 3 เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ.

เบ—เบดเบ”เบ—เบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบ™เบฅเบฐเบžเบฒเบเบเปเบฒเบฅเบฑเบ‡เบžเบฑเบ”เบ—เบฐเบ™เบฒเปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™. เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเปเบšเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบšเบฒเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบ—เบตเปˆเบžเบปเบงเบžเบฑเบ™เบเบฑเบšเบเบฑเบ™เปเบฅเบฐเบเบฑเบ™. เบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบฅเบทเบญเบเป€เบญเบปเบฒเป€เบ•เบฑเบเป‚เบ™เป‚เบฅเบขเบตเบชเปเบฒเบฅเบฑเบš stack เบงเบฝเบเบชเบฐเป€เบžเบฒเบฐ. เบ™เบตเป‰เบเบฑเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปเบšเปˆเบ‡เบงเบฝเบเปเบฅเบฐเบžเบทเป‰เบ™เบ—เบตเปˆเบ„เบงเบฒเบกเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบฅเบฐเบซเบงเปˆเบฒเบ‡เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ.

เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ frontend, เบžเบฑเบ”เบ—เบฐเบ™เบฒเปƒเบ™ JS, เป€เบเบทเบญเบšเบšเปเปˆเบกเบตเบญเบดเบ”เบ—เบดเบžเบปเบ™เบ•เปเปˆ backend. เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ backend, เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, Ruby on Rails เปเบฅเบฐเบšเปเปˆเปเบŠเบเปเบŠเบ‡ Frondend. เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเปเบกเปˆเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป‚เบ”เบเปƒเบŠเป‰ API.

เป€เบ›เบฑเบ™เป‚เบšเบ™เบฑเบ”, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ Docker เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบญเบปเบฒเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ„เบทเบ™เปƒเบซเบกเปˆเปƒเบ™ Staging. เปเบ•เปˆโ€‹เบฅเบฐโ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹, เป€เบ™เบทเปˆเบญเบ‡โ€‹เบˆเบฒเบโ€‹เบชเบฐโ€‹เป€เบžเบฒเบฐโ€‹เบ‚เบญเบ‡โ€‹เบ•เบปเบ™โ€‹, เบฎเบฝเบโ€‹เบฎเป‰เบญเบ‡โ€‹เปƒเบซเป‰โ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ„เปˆเบฒโ€‹เบชเบฐโ€‹เป€เบžเบฒเบฐโ€‹เปƒเบ”โ€‹เบซเบ™เบถเปˆเบ‡โ€‹. เบ—เบฒเบ‡เบ”เป‰เบฒเบ™เบฎเปˆเบฒเบ‡เบเบฒเบ, เบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบˆเบฑเบ”เบชเบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ virtual เปเบฅเบฐ configure เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ, เบซเบผเบทเปเบšเปˆเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบตเปˆเบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบ”เป‰เปเบฅเบฐเป‚เบ„เบ‡เบเบฒเบ™เบชเบฒเบกเบฒเบ”เบกเบตเบญเบดเบ”เบ—เบดเบžเบปเบ™เป€เบŠเบดเปˆเบ‡เบเบฑเบ™เปเบฅเบฐเบเบฑเบ™, เบ‚เบถเป‰เบ™เบเบฑเบšเบชเบฐเบšเบฑเบšเบ‚เบญเบ‡เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”.

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฑเบš Docker เปเบฅเบฐ Gitlab CI

เป€เบ„เบทเปˆเบญเบ‡เบกเบท. เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบซเบเบฑเบ‡?

  • Docker เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡. Dockerfile เบญเบฐเบ—เบดเบšเบฒเบเป€เบ–เบดเบ‡เบ„เบงเบฒเบกเป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ”เบฝเบง.
  • Docker-compose เปเบกเปˆเบ™เบŠเบธเบ”เบ—เบตเปˆเบ™เปเบฒเป€เบญเบปเบฒเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ Docker เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบซเบผเบฒเบเบญเบฑเบ™.
  • เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ GitLab เป€เบžเบทเปˆเบญเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡.
  • เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ GitLab-CI เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบฅเบฐเบšเบปเบš.

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฑเบš Docker เปเบฅเบฐ Gitlab CI

เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบชเบญเบ‡เบžเบฒเบเบชเปˆเบงเบ™.

เบชเปˆเบงเบ™เบ—เปเบฒเบญเบดเบ”เบˆเบฐเบšเบญเบเบ—เปˆเบฒเบ™เบงเบดเบ—เบตเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ Docker เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบ‚เบญเบ‡เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ.

เบชเปˆเบงเบ™เบ—เบตเบชเบญเบ‡เบˆเบฐเบชเบปเบ™เบ—เบฐเบ™เบฒเบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบžเบปเบงเบžเบฑเบ™เบเบฑเบš GitLab, เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปเบฅเบฐเบงเบดเบ—เบตเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบทเปˆเบญเบ™เบญเบญเบเป„เบ›เปƒเบ™ Staging.

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฑเบš Docker เปเบฅเบฐ Gitlab CI

Docker เปเบกเปˆเบ™เป€เบ•เบฑเบเป‚เบ™เป‚เบฅเบขเบตเบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰ (เปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™เบ›เบฐเบเบฒเบ”) เป€เบžเบทเปˆเบญเบญเบฐเบ—เบดเบšเบฒเบเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡ Dockerfile. เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบเบฒเบ”เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบกเปเบฅเบฐเบ”เบปเบเบˆเบฒเบเบฎเบนเบšเบžเบฒเบš Docker เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™เบ‚เบญเบ‡ Ruby: 2.3.0. เบกเบฑเบ™เบ›เบฐเบเบญเบšเบ”เป‰เบงเบ Ruby เบฎเบธเปˆเบ™ 2.3 เบ•เบดเบ”เบ•เบฑเป‰เบ‡. เบžเบงเบเป€เบฎเบปเบฒเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ›เบฐเบเบญเบšเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เปเบฅเบฐ NodeJS. เบžเบงเบเป€เบฎเบปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบชเป‰เบฒเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต /app. เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบ™เบปเบ”เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต app เป€เบ›เบฑเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบ. เปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบงเบฒเบ‡ Gemfile เปเบฅเบฐ Gemfile.lock เบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบเปเปˆเบชเป‰เบฒเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบฎเบนเบšเบžเบฒเบšเบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบ™เบตเป‰. เบžเบงเบเป€เบฎเบปเบฒเบŠเบตเป‰เบšเบญเบเบงเปˆเบฒเบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเบˆเบฐเบžเป‰เบญเบกเบ—เบตเปˆเบˆเบฐเบŸเบฑเบ‡เบขเบนเปˆเปƒเบ™เบžเบญเบ”เบžเบฒเบเบ™เบญเบ 3000. เบ„เปเบฒเบชเบฑเปˆเบ‡เบชเบธเบ”เบ—เป‰เบฒเบเปเบกเปˆเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเป€เบ›เบตเบ”เบ•เบปเบงเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป‚เบ”เบเบเบปเบ‡. เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป‚เบ„เบ‡เบเบฒเบ™, เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบˆเบฐเบžเบฐเบเบฒเบเบฒเบกเปเบฅเปˆเบ™เปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰.

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฑเบš Docker เปเบฅเบฐ Gitlab CI

เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบฅเบฑเบเบ™เป‰เบญเบเบ‚เบญเบ‡เป„เบŸเบฅเปŒ docker-compose. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒเบกเบตเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบฅเบฐเบซเบงเปˆเบฒเบ‡เบชเบญเบ‡เบ–เบฑเบ‡. เบ™เบตเป‰เปเบกเปˆเบ™เป‚เบ”เบเบเบปเบ‡เปƒเบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปเบฅเบฐเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบงเบฑเบšเป„เบŠเบ•เปŒ. เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบงเบฑเบšเป„เบŠเบ•เปŒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปƒเบ™เบเปเบฅเบฐเบ™เบตเบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบšเบฒเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เป€เบ›เบฑเบ™ backend เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ‚เปเป‰เบกเบนเบ™. เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ MySQL, เบ•เบปเบงเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบเบฑเบš MySQL - เปเบ•เปˆเบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบ›เป‰เบญเบ‡เบเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฒเบเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบญเบทเปˆเบ™ (PostgreSQL, Redis).

เบžเบงเบเป€เบฎเบปเบฒเป€เบญเบปเบฒเบฎเบนเบšเบžเบฒเบš MySQL 5.7.14 เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบˆเบฒเบเปเบซเบผเปˆเบ‡เบ—เบตเปˆเป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™เบˆเบฒเบ Docker hub. เบžเบงเบเป€เบฎเบปเบฒเป€เบเบฑเบšเบเปเบฒเบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบงเบฑเบšเป„เบŠเบ•เปŒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฒเบเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ›เบฐเบˆเบธเบšเบฑเบ™. เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”, เบฅเบฒเบงเป€เบเบฑเบšเบเปเบฒเบฎเบนเบšเบžเบฒเบšเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒ. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบกเบฑเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰. เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบเบฑเบšเบ„เบทเบ™เป„เบ›เบšเปˆเบญเบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบซเบฑเบ™เบงเปˆเบฒเบ„เปเบฒเบชเบฑเปˆเบ‡เป€เบ›เบตเบ”เบ•เบปเบงเป„เบ”เป‰เบ–เบทเบเบเปเบฒเบ™เบปเบ”เบœเปˆเบฒเบ™ Puma. Puma เปเบกเปˆเบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเบ‚เบฝเบ™เปƒเบ™ Ruby. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเบชเบญเบ‡, เบžเบงเบเป€เบฎเบปเบฒ override. เบ„เปเบฒเบชเบฑเปˆเบ‡เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบ•เบปเบงเบ•เบปเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบผเบทเบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.

เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบญเบฐเบ—เบดเบšเบฒเบเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเบปเปˆเบ‡เบ•เปเปˆเบžเบญเบ”เบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เป‚เบฎเบ”เบ‚เบญเบ‡เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฒเบ 3000 เบซเบฒ 3000 เบ—เปˆเบฒเป€เบฎเบทเบญเบšเบฑเบ™เบˆเบธ. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบฎเบฑเบ”เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เป‚เบ”เบเปƒเบŠเป‰ iptables เปเบฅเบฐเบเบปเบ™เป„เบเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡, เป€เบŠเบดเปˆเบ‡เบ–เบทเบเบเบฑเบ‡เป‚เบ”เบเบเบปเบ‡เปƒเบ™ Docker.

เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰, เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเบซเบฒเบ—เบตเปˆเบขเบนเปˆ IP เบ—เบตเปˆเบกเบตเบขเบนเปˆ, เบ•เบปเบงเบขเปˆเบฒเบ‡, 127.0.0.1 เบ—เบตเปˆเบขเบนเปˆ IP เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบซเบผเบทเบžเบฒเบเบ™เบญเบเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡.

เปเบ–เบงเบชเบธเบ”เบ—เป‰เบฒเบเบšเบญเบเบงเปˆเบฒ web container เปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบš db container. เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเป‚เบ—เบซเบฒ web container เป€เบžเบทเปˆเบญเป€เบ›เบตเบ”เบ•เบปเบง, docker-compose เบ—เปเบฒเบญเบดเบ”เบˆเบฐเป€เบ›เบตเบ”เบ•เบปเบงเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒ. เปเบฅเป‰เบงเปƒเบ™เบ•เบญเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™ (เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเบ‚เบญเบ‡ container! เบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบ„เบงเบฒเบกเบžเป‰เบญเบกเบ‚เบญเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™) เบกเบฑเบ™เบˆเบฐเป€เบ›เบตเบ”เบ•เบปเบงเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, backend เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.

เบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบšเปเปˆเบ‚เบถเป‰เบ™เปเบฅเบฐเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบซเบเบฑเบ”เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบขเบธเบ”เป€เบŠเบปเบฒเบเบฒเบ™เบšเบฑเบ™เบˆเบธเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เบ›เบปเบ”เบ›เปˆเบญเบเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบญเบทเปˆเบ™เป†.

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฑเบš Docker เปเบฅเบฐ Gitlab CI

เบเบฒเบ™เปƒเบŠเป‰เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™ dockerization เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เปƒเบซเป‰เบซเบเบฑเบ‡เปเบเปˆเบžเบงเบเป€เบฎเบปเบฒ? เบžเบงเบเป€เบฎเบปเบฒเบšเบฑเบ™เบ—เบถเบเบชเบฐเบšเบฑเบš MySQL เบชเปเบฒเบฅเบฑเบšเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เบฑเบ‡เบซเบกเบปเบ”. เบ™เบตเป‰เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเป€เบเบตเบ”เบ‚เบทเป‰เบ™เป€เบกเบทเปˆเบญเบฎเบธเปˆเบ™เปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, เป€เบกเบทเปˆเบญ syntax, configuration, เปเบฅเบฐเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡. เบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบฅเบฐเบšเบธเบŠเบทเปˆเป‚เบฎเบ”เบ—เบปเปˆเบงเป„เบ›เบชเปเบฒเบฅเบฑเบšเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™, เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบš, เบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™. เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบเป‰เบฒเบเบญเบญเบเป„เบ›เบˆเบฒเบเบชเบงเบ™เบชเบฑเบ”เบ‚เบญเบ‡เบŠเบทเปˆเปเบฅเบฐเบ‚เปเป‰เบ‚เบฑเบ”เปเบเปˆเบ‡เปƒเบ™เป„เบŸเบฅเปŒ config เบ—เบตเปˆเบกเบตเบขเบนเปˆเบเปˆเบญเบ™.

เบžเบงเบเป€เบฎเบปเบฒเบกเบตเป‚เบญเบเบฒเบ”เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เป€เบŠเบดเปˆเบ‡เบˆเบฐเปเบ•เบเบ•เปˆเบฒเบ‡เบˆเบฒเบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. MySQL เบ–เบทเบเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบชเปเบฒเบฅเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบ—เบตเปˆเบญเปˆเบญเบ™เปเบญเปเบฅเบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบกเบฑเบ™เบญเบญเบเบˆเบฒเบเบเปˆเบญเบ‡เปเบกเปˆเบ™เบ•เปเปˆเบฒเบซเบผเบฒเบ.

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฑเบš Docker เปเบฅเบฐ Gitlab CI

Docker เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เปƒเบŠเป‰เบ•เบปเบงเปเบ›เบžเบฒเบชเบฒ Python, Ruby, NodeJS, PHP เบ‚เบญเบ‡เบชเบฐเบšเบฑเบšเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™. เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบˆเบฑเบ”เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เบšเบฒเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™เบชเบฐเบšเบฑเบš. เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰, เบŠเบธเบ” rpm เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบš Ruby, เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เบฎเบธเปˆเบ™เป„เบ”เป‰เป‚เบ”เบเบญเบตเบ‡เบ•เบฒเบกเป‚เบ„เบ‡เบเบฒเบ™. เบ‚เปเบ‚เบญเบšเปƒเบˆเบเบฑเบš Docker container, เบ™เบตเป‰เบเบฑเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเป‰เบฒเบเบฅเบฐเบซเบฑเบ”เปเบฅเบฐเบชเบฐเบšเบฑเบšเบžเบฒเบชเบฒเป„เบ”เป‰เบขเปˆเบฒเบ‡เบฅเบฝเบšเบ‡เปˆเบฒเบเบžเป‰เบญเบกเบเบฑเบšเบเบฒเบ™เบ‚เบถเป‰เบ™เบเบฑเบš. เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบกเบตเบšเบฑเบ™เบซเบฒเปƒเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเปƒเบˆเบชเบฐเบšเบฑเบšเบ‚เบญเบ‡เบ—เบฑเบ‡เบ™เบฒเบเบžเบฒเบชเบฒ เปเบฅเบฐเบฅเบฐเบซเบฑเบ”. เป€เบžเบทเปˆเบญเบ›เบฑเบšเบ›เบธเบ‡เบชเบฐเบšเบฑเบš, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบซเบผเบธเบ”เบฅเบปเบ‡เบ–เบฑเบ‡เป€เบเบปเปˆเบฒเปเบฅเบฐเบเบปเบเบžเบฒเบŠเบฐเบ™เบฐเปƒเบซเบกเปˆ. เบ–เป‰เบฒเบกเบตเบšเบฒเบ‡เบขเปˆเบฒเบ‡เบœเบดเบ”เบžเบฒเบ”, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบซเบผเบธเบ”เบžเบฒเบŠเบฐเบ™เบฐเปƒเบซเบกเปˆ, เบเบปเบเบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเป€เบเบปเปˆเบฒ.

เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบš, เบเบฒเบ™เบšเบฑเบ™เบˆเบธเปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบเบฒเบ™เบœเบฐเบฅเบดเบ”เบ—เบฑเบ‡เบชเบญเบ‡เบˆเบฐเบ„เบทเบเบฑเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เบ„เบงเบฒเบกเบˆเบดเบ‡เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ.

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฑเบš Docker เปเบฅเบฐ Gitlab CI เปƒเบ™ Frontend เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ JavaScipt เปเบฅเบฐ NodeJS.

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบกเบตเป‚เบ„เบ‡เบเบฒเบ™เบชเบธเบ”เบ—เป‰เบฒเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบเปˆเบฝเบงเบเบฑเบš ReacJS. เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเป„เบ”เป‰เป€เบ›เบตเบ”เบ•เบปเบงเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบขเบนเปˆเปƒเบ™เบ–เบฑเบ‡เปเบฅเบฐเบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ”เบเปƒเบŠเป‰ hot-reload.

เบ•เปเปˆเป„เบ›, เบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ JavaScipt เป„เบ”เป‰เบ–เบทเบเป€เบ›เบตเบ”เบ•เบปเบงเปเบฅเบฐเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ›เบฐเบเบญเบšเปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆเบˆเบฐเบ–เบทเบเบชเบปเปˆเบ‡เบœเปˆเบฒเบ™ nginx, เบ›เบฐเบซเบเบฑเบ”เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™.

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฑเบš Docker เปเบฅเบฐ Gitlab CI

เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบชเบฐเบซเบ™เบญเบ‡เปเบœเบ™เบงเบฒเบ”เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบซเบฅเป‰เบฒเบชเบธเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.

เบ—เปˆเบฒเบ™เป„เบ”เป‰เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบซเบเบฑเบ‡เปเบ”เปˆ? เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบชเป‰เบฒเบ‡เบฅเบฐเบšเบปเบšเบ—เบตเปˆเบญเบธเบ›เบฐเบเบญเบ™เบกเบทเบ–เบทเบ•เบดเบ”เบ•เปเปˆเบžเบปเบงเบžเบฑเบ™. เบžเบงเบเป€เบ‚เบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบกเบนเบ™. เบซเบ™เบถเปˆเบ‡เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เปเบกเปˆเบ™เบเบฒเบ™เบชเบปเปˆเบ‡เบเบฒเบ™เปเบˆเป‰เบ‡เป€เบ•เบทเบญเบ™เบเบฒเบ™เบŠเบธเบเบเบนเป‰เปƒเบซเป‰เบญเบธเบ›เบฐเบเบญเบ™เบ™เบตเป‰.

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบฎเบฑเบ”เบซเบเบฑเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบตเป‰?

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เปเบšเปˆเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบญเบญเบเป€เบ›เบฑเบ™เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰: เบžเบฒเบเบชเปˆเบงเบ™ admin เปƒเบ™ JS, backend เบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš REST เบžเบฒเบเปƒเบ•เป‰ Ruby on Rails. Backend เบžเบปเบงเบžเบฑเบ™เบเบฑเบšเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™. เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปเบกเปˆเบ™เปƒเบซเป‰เบฅเบนเบเบ„เป‰เบฒ. เบเบฐเบ”เบฒเบ™ admin เป‚เบ•เป‰เบ•เบญเบšเบเบฑเบš backend เปเบฅเบฐเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš REST.

เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบกเบตเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบชเบปเปˆเบ‡เบเบฒเบ™เปเบˆเป‰เบ‡เป€เบ•เบทเบญเบ™ Push. เบเปˆเบญเบ™เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบกเบตเป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบเบปเบ™เป„เบเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเปƒเบ™เบเบฒเบ™เบชเบปเปˆเบ‡เบเบฒเบ™เปเบˆเป‰เบ‡เป€เบ•เบทเบญเบ™เป„เบ›เบเบฑเบ‡เปเบžเบฅเบฐเบ•เบฐเบŸเบญเบกเบกเบทเบ–เบท.

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ„เบ‡เบเบฒเบ™เบ•เปเปˆเป„เบ›เบ™เบตเป‰: เบœเบนเป‰เบ›เบฐเบเบญเบšเบเบฒเบ™เบˆเบฒเบเบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบšเบžเบปเบงเบžเบฑเบ™เบเบฑเบšเบเบฐเบ”เบฒเบ™ admin, เบเบฐเบ”เบฒเบ™ admin เบžเบปเบงเบžเบฑเบ™เบเบฑเบš backend, เบงเบฝเบเบ‡เบฒเบ™เปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบชเบปเปˆเบ‡เบเบฒเบ™เปเบˆเป‰เบ‡เป€เบ•เบทเบญเบ™ Push.

เบเบฒเบ™เปเบˆเป‰เบ‡เป€เบ•เบทเบญเบ™เบเบฒเบ™เบŠเบธเบเบเบนเป‰เบžเบปเบงเบžเบฑเบ™เบเบฑเบšเบญเบปเบ‡เบ›เบฐเบเบญเบšเบญเบทเปˆเบ™เบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบขเบนเปˆเปƒเบ™ NodeJS.

เบ„เบดเบงเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปเบฅเบฐเบเบฒเบ™เปเบˆเป‰เบ‡เป€เบ•เบทเบญเบ™เบ–เบทเบเบชเบปเปˆเบ‡เบ•เบฒเบกเบเบปเบ™เป„เบเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡.

เบชเบญเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ–เบทเบเปเบ•เป‰เบกเบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ Docker, เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ 2 เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เป€เบญเบเบฐเบฅเบฒเบ”เบ—เบตเปˆเบšเปเปˆเบกเบตเบ—เบฒเบ‡เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบ™. เบ™เบญเบเป€เบซเบ™เบทเบญเบˆเบฒเบเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบกเบตเป€เบ„เบทเบญเบ‚เปˆเบฒเบ virtual เบ—เบปเปˆเบงเป„เบ›, เปเบฅเบฐเบ‚เปเป‰เบกเบนเบ™เบ—เบฒเบ‡เบเบฒเบเบฐเบžเบฒเบšเบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบ‚เบญเบ‡เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒ.

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฑเบš Docker เปเบฅเบฐ Gitlab CI

เบชเบดเปˆเบ‡เบ”เบฝเบงเบเบฑเบ™เปเบ•เปˆเปƒเบ™เบ•เบปเบงเป€เบฅเบ. เบเบฒเบ™เปƒเบŠเป‰เบฅเบฐเบซเบฑเบ”เบ„เบทเบ™เปƒเบซเบกเปˆเปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบชเปเบฒเบ„เบฑเบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰.

เบ–เป‰เบฒเบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เปƒเบŠเป‰เบฅเบฐเบซเบฑเบ”เบ„เบทเบ™เปƒเบซเบกเปˆเปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ™เบตเป‰เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เป€เบŠเบดเปˆเบ‡เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบเบฑเบšเบเบฒเบ™เปเบˆเป‰เบ‡เป€เบ•เบทเบญเบ™ Push, เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบ„เบทเบ™เปƒเบซเบกเปˆเป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ—เบตเปˆเบชเบปเบกเบšเบนเบ™. เบกเบฑเบ™เบชเบฐเบซเบ™เบญเบ‡ API. เปเบฅเบฐเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปƒเบซเบกเปˆเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบžเบปเบงเบžเบฑเบ™เบเบฑเบšเบกเบฑเบ™.

เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ™เบฑเป‰เบ™โ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป„เบ”เป‰โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบชเบฐโ€‹เบšเบฑเบš 4 เบ‚เบญเบ‡ NodeJS. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™ (เปƒเบ™เบ›เบต 2017 - เบšเบฑเบ™เบ—เบถเบเบ‚เบญเบ‡เบšเบฑเบ™เบ™เบฒเบ—เบดเบเบฒเบ™) เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบซเบฅเป‰เบฒเบชเบธเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบชเบฐเบšเบฑเบš 7 เบ‚เบญเบ‡ NodeJS. เบšเปเปˆเบกเบตเบšเบฑเบ™เบซเบฒเปƒเบ™เบญเบปเบ‡เบ›เบฐเบเบญเบšเปƒเบซเบกเปˆเบ—เบตเปˆเบˆเบฐเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบฎเบธเปˆเบ™เปƒเบซเบกเปˆ.

เบ–เป‰เบฒเบˆเปเบฒเป€เบ›เบฑเบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ” refactor เปเบฅเบฐเบเบปเบเบชเบนเบ‡ NodeJS เบชเบฐเบšเบฑเบšเบ‚เบญเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เปเบˆเป‰เบ‡เบเบฒเบ™ Push.

เปเบฅเบฐเบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบฎเบฑเบเบชเบฒเบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰ API, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบฑเบ™เบเปเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบ—เบปเบ”เปเบ—เบ™เบกเบฑเบ™เบ”เป‰เบงเบเป‚เบ„เบ‡เบเบฒเบ™เบญเบทเปˆเบ™เป†เบ—เบตเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰.

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฑเบš Docker เปเบฅเบฐ Gitlab CI

เป€เบˆเบปเป‰เบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เป€เบžเบตเปˆเบก Docker? เบžเบงเบเป€เบฎเบปเบฒเป€เบžเบตเปˆเบก Dockerfile เปƒเบชเปˆเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เป€เบŠเบดเปˆเบ‡เบญเบฐเบ—เบดเบšเบฒเบเป€เบ–เบดเบ‡เบ„เบงเบฒเบกเป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™. เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ™เบตเป‰, เบญเบปเบ‡เบ›เบฐเบเบญเบšเป„เบ”เป‰เบ–เบทเบเปเบšเปˆเบ‡เบญเบญเบเบขเปˆเบฒเบ‡เบกเบตเป€เบซเบ”เบœเบปเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เบŠเบธเบ”เบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆเบชเปเบฒเบฅเบฑเบšเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ backend.

เป€เบกเบทเปˆเบญเบชเป‰เบฒเบ‡เป‚เบ„เบ‡เบเบฒเบ™เปƒเบซเบกเปˆ, เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡ Dockerfile เปเบฅเบฐเบญเบฐเบ—เบดเบšเบฒเบเบฅเบฐเบšเบปเบšเบ™เบดเป€เบงเบ”เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™ (Python, Ruby, NodeJS). เปƒเบ™ docker-compose, เบกเบฑเบ™เบญเบฐเบ—เบดเบšเบฒเบเป€เบ–เบดเบ‡เบ„เบงเบฒเบกเป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™ - เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™. เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบญเบฐโ€‹เบ—เบดโ€‹เบšเบฒเบโ€‹เบงเปˆเบฒโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ–เบฒเบ™โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบ‚เบญเบ‡โ€‹เบชเบฐโ€‹เบšเบฑเบšโ€‹เบ”เบฑเปˆเบ‡โ€‹เบเปˆเบฒเบงโ€‹เปเบฅเบฐโ€‹เบ”เบฑเปˆเบ‡โ€‹เบเปˆเบฒเบงโ€‹, เป€เบžเบทเปˆเบญโ€‹เป€เบเบฑเบšโ€‹เบฎเบฑเบโ€‹เบชเบฒโ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบ—เบตเปˆโ€‹เบ™เบฑเป‰เบ™โ€‹เปเบฅเบฐโ€‹เบกเบตโ€‹.

เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบ–เบฑเบ‡เบ—เบตเบชเบฒเบกเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบ—เบตเปˆเบกเบต nginx เป€เบžเบทเปˆเบญเบฎเบฑเบšเปƒเบŠเป‰เป€เบ™เบทเป‰เบญเบซเบฒเบ—เบตเปˆเบชเบฐเบ–เบดเบ”. เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบญเบฑเบšเป‚เบซเบฅเบ”เบฎเบนเบšเบžเบฒเบš. backend เปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเบขเบนเปˆเปƒเบ™เบ›เบฐเบฅเบดเบกเบฒเบ™เบ—เบตเปˆเบเบฝเบกเป„เบงเป‰เบเปˆเบญเบ™, เป€เบŠเบดเปˆเบ‡เบเบฑเบ‡เบ–เบทเบเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™เบ–เบฑเบ‡เบ—เบตเปˆเบกเบต nginx, เป€เบŠเบดเปˆเบ‡เบชเบฐเบซเบ™เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบชเบฐเบ–เบดเบ”.

เป€เบžเบทเปˆเบญเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ nginx เปเบฅเบฐ mysql, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบžเบตเปˆเบกเป‚เบŸเบ™เป€เบ”เบต Docker เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™. เป€เบกเบทเปˆเบญเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเป‰เบฒเบ‡ git clone เบ‚เบญเบ‡ repository เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบ‚เบญเบ‡เบฅเบฒเบง, เบฅเบฒเบงเบกเบตเป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบเบฝเบกเบžเป‰เบญเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™. เบšเปเปˆเบกเบตเบ„เปเบฒเบ–เบฒเบกเบเปˆเบฝเบงเบเบฑเบšเบžเบญเบ”เปƒเบ”เบซเบผเบทเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปƒเบ”เบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰.

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฑเบš Docker เปเบฅเบฐ Gitlab CI

เบ•เปเปˆเป„เบ›, เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบซเบผเบฒเบเบญเบปเบ‡เบ›เบฐเบเบญเบš: admin, info-API, push notifications.

เป€เบžเบทเปˆเบญเป€เบ›เบตเบ”เบ•เบปเบงเบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบชเป‰เบฒเบ‡เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เบญเบทเปˆเบ™เบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ dockerized-app. เบ›เบฐเบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบซเบผเบฒเบ repositories เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบญเบปเบ‡เบ›เบฐเบเบญเบš. เบžเบงเบเบกเบฑเบ™เปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบขเปˆเบฒเบ‡เบกเบตเป€เบซเบ”เบœเบปเบ™ - เปƒเบ™ GitLab เบกเบฑเบ™เบ„เป‰เบฒเบเบ„เบทเป‚เบŸเบ™เป€เบ”เบต, เปเบ•เปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบ‚เบญเบ‡เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบกเบฑเบ™เบ„เป‰เบฒเบเบ„เบทเป‚เบŸเบ™เป€เบ”เบตเบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบชเบฐเป€เบžเบฒเบฐ. เบฅเบฐเบ”เบฑเบšเบซเบ™เบถเปˆเบ‡เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เปเบกเปˆเบ™เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเบˆเบฐเบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™.

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฑเบš Docker เปเบฅเบฐ Gitlab CI

เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เป€เบ™เบทเป‰เบญเปƒเบ™เบ‚เบญเบ‡ dockerized-app. เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบงเบฒเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต Docker เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰, เป€เบŠเบดเปˆเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ•เบทเปˆเบกเบ‚เปเป‰เบกเบนเบ™เปƒเบชเปˆเปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”. เบกเบต README.md เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเบชเบฑเป‰เบ™เป†เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเป‚เบ„เบ‡เบเบฒเบ™.

เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ™เปเบฒเปƒเบŠเป‰เบชเบญเบ‡เป„เบŸเบฅเปŒ docker-compose. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบฎเบฑเบ”เป€เบžเบทเปˆเบญเปƒเบซเป‰เบชเบฒเบกเบฒเบ”เป€เบ›เบตเบ”เบ•เบปเบงเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ•เปˆเบฒเบ‡เป†. เป€เบกเบทเปˆเบญเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš kernel, เบฅเบฒเบงเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เปเบˆเป‰เบ‡เป€เบ•เบทเบญเบ™ Push, เบฅเบฒเบงเบžเบฝเบ‡เปเบ•เปˆเป€เบ›เบตเบ”เป„เบŸเบฅเปŒ docker-compose เปเบฅเบฐ, เบ•เบฒเบกเบ™เบฑเป‰เบ™, เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบˆเบฐเบ–เบทเบเบšเบฑเบ™เบ—เบถเบเป„เบงเป‰.

เบ–เป‰เบฒเบกเบตเบ„เบงเบฒเบกเบˆเปเบฒเป€เบ›เบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบเบฑเบšเบเบฒเบ™เปเบˆเป‰เบ‡เป€เบ•เบทเบญเบ™ Push, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ docker-compose.yaml เปเบฅเบฐ docker-compose-push.yaml เบ–เบทเบเป€เบ›เบตเบ”เบ•เบปเบง.

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบ docker-compose.yaml เปเบฅเบฐ docker-compose-push.yaml เบขเบนเปˆเปƒเบ™เป‚เบŸเบ™เป€เบ”เบต, เป€เบ„เบทเบญเบ‚เปˆเบฒเบ virtual เบ”เบฝเบงเบˆเบฐเบ–เบทเบเบชเป‰เบฒเบ‡เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”.

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฑเบš Docker เปเบฅเบฐ Gitlab CI

เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบš. เบ™เบตเป‰เปเบกเปˆเบ™เป„เบŸเบฅเปŒเบ—เบตเปˆเบเป‰เบฒเบงเบซเบ™เป‰เบฒเบ—เบฒเบ‡เบ”เป‰เบฒเบ™เบซเบผเบฒเบเบ—เบตเปˆเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบญเบปเบ‡เบ›เบฐเบเบญเบš. เบชเบดเปˆเบ‡เบ—เบตเปˆเป‚เบ”เบ”เป€เบ”เบฑเปˆเบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰? เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเปเบ™เบฐเบ™เปเบฒเบญเบปเบ‡เบ›เบฐเบเบญเบšเบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡.

เบ™เบตเป‰เปเบกเปˆเบ™เบฎเบนเบšเบžเบฒเบš Docker เบ—เบตเปˆเบเบฝเบกเบžเป‰เบญเบกเบ—เบตเปˆเปเบฅเปˆเบ™ nginx เปเบฅเบฐเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเบŸเบฑเบ‡เบŠเปˆเบญเบ‡เบชเบฝเบš Docker. เป„เบ”เบ™เบฒเบกเบดเบ, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเป€เบ›เบตเบ” เปเบฅเบฐเบ›เบดเบ”, เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ nginx เบˆเบฐเบ–เบทเบเบชเป‰เบฒเบ‡เปƒเปเปˆ. เบžเบงเบเป€เบฎเบปเบฒเปเบˆเบเบขเบฒเบเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบญเบปเบ‡เบ›เบฐเบเบญเบšเป‚เบ”เบเปƒเบŠเป‰เบŠเบทเปˆเป‚เบ”เป€เบกเบ™เบฅเบฐเบ”เบฑเบšเบชเบฒเบก.

เบชเปเบฒเบฅเบฑเบšเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เป‚เบ”เป€เบกเบ™ .dev - api.informer.dev . เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเบกเบตเป‚เบ”เป€เบกเบ™ .dev เบกเบตเบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบ‚เบญเบ‡เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒ.

เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, configs เป„เบ”เป‰เบ–เบทเบเป‚เบญเบ™เป„เบ›เบซเบฒเปเบ•เปˆเบฅเบฐเป‚เบ„เบ‡เบเบฒเบ™เปเบฅเบฐเป‚เบ„เบ‡เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เป„เบ”เป‰เบ–เบทเบเป€เบ›เบตเบ”เบ•เบปเบงเปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™.

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฑเบš Docker เปเบฅเบฐ Gitlab CI

เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบžเบฑเบ™เบฅเบฐเบ™เบฒเป€เบ›เบฑเบ™เบเบฒเบŸเบดเบ, เบกเบฑเบ™เบ›เบฐเบเบปเบ”เบงเปˆเบฒเบฅเบนเบเบ„เป‰เบฒเปเบกเปˆเบ™เบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบšเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบซเบผเบทเบšเบฒเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบฎเป‰เบญเบ‡เบ‚เปเปƒเบซเป‰เบœเบนเป‰เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡.

เบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเปเบฒเบ™เบปเบ”เบงเปˆเบฒเบšเบฑเบ™เบˆเบธเปƒเบ”เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบŠเบทเปˆเป‚เบ”เป€เบกเบ™.

เบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™ nginx, เป€เบŠเบดเปˆเบ‡เบชเบฐเบซเบ™เบญเบ‡ JS เปƒเบซเป‰เบเบฑเบšเบเบฐเบ”เบฒเบ™ admin. เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เป‚เบ”เบ nginx, เป€เบŠเบดเปˆเบ‡เบชเบฐเบซเบ™เบญเบ‡ API, เบซเบผเบทเป„เบŸเบฅเปŒ static, เป€เบŠเบดเปˆเบ‡เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เป‚เบ”เบ nginx เปƒเบ™เบฎเบนเบšเปเบšเบšเบเบฒเบ™เป‚เบซเบผเบ”เบฎเบนเบšเบžเบฒเบš.

เปเบœเบ™เบงเบฒเบ”เบชเบฐเปเบ”เบ‡เบงเปˆเบฒเบšเบฑเบ™เบˆเบธเบ–เบทเบเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบชเบฐเป€เปเบทเบญเบ™เบˆเบดเบ‡ เปเบฅเบฐเป€เบŠเบทเปˆเบญเบ‡เป„เบงเป‰เบขเบนเปˆเป€เบšเบทเป‰เบญเบ‡เบซเบผเบฑเบ‡เบ•เบปเบงเปเบ—เบ™.

เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบ‚เบญเบ‡เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป€เบ„เบทเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธเป‚เบ”เบเบฎเบนเป‰ IP, เปเบ•เปˆเปƒเบ™เบซเบผเบฑเบเบเบฒเบ™เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเปƒเบŠเป‰เบกเบฑเบ™. เบ•เบปเบงเบˆเบดเบ‡เปเบฅเป‰เบงเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบกเบตเบเบฒเบ™เบ•เบดเบ”เบ•เปเปˆเป‚เบ”เบเบเบปเบ‡.

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฑเบš Docker เปเบฅเบฐ Gitlab CI

เบ‚เป‰เบญเบเบ„เบงเบ™เป€เบšเบดเปˆเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เปƒเบ”เป€เบžเบทเปˆเบญ dockerize เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบ‚เป‰เบญเบ? เปƒเบ™เบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบ, เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบ”เบตเปเบกเปˆเบ™เบฎเบนเบšเบžเบฒเบš docker เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบš MySQL.

เบกเบฑเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบชเบฑเบšเบชเบปเบ™. เบกเบตเบซเบผเบฒเบเบชเบฐเบšเบฑเบš. เปเบ•เปˆเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบกเบฑเบ™เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเบงเบกเป€เบญเบปเบฒเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบผเบฒเบเบขเปˆเบฒเบ‡เบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเป€เบเบตเบ”เบ‚เบทเป‰เบ™เปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ•เบทเปˆเบกเบญเบตเบ. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เปƒเบŠเป‰เป€เบงเบฅเบฒเปเบฅเบฐเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเบกเบฑเบ™เบžเบปเบงเบžเบฑเบ™เบเบฑเบ™เปเบ™เบงเปƒเบ”, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ„เบดเบ”เบงเปˆเบฒเบ—เปˆเบฒเบ™เบˆเบฐเบšเปเปˆเบกเบตเบšเบฑเบ™เบซเบฒเปƒเบ”เป†เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบปเบงเป€เบญเบ‡.

Hub.docker.com เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเบกเบตเบฅเบดเป‰เบ‡เป„เบ›เบซเบฒ github.com, เบšเปˆเบญเบ™เบ—เบตเปˆเบ‚เปเป‰เบกเบนเบ™เบ”เบดเบšเป„เบ”เป‰เบ–เบทเบเบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เป‚เบ”เบเบเบปเบ‡เบˆเบฒเบเบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบšเบ•เบปเบงเบ—เปˆเบฒเบ™เป€เบญเบ‡.

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™เปƒเบ™ repository เบ™เบตเป‰เบกเบต script docker-endpoint.sh, เป€เบŠเบดเปˆเบ‡เบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เปเบฅเบฐเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบ•เบทเปˆเบกเบญเบตเบเบ‚เบญเบ‡เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™.

เบ™เบญเบเบˆเบฒเบเบ™เบตเป‰เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ™เบตเป‰เบกเบตเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป‚เบ”เบเปƒเบŠเป‰เบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก. เป‚เบ”เบเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปเบฅเปˆเบ™เบžเบฒเบŠเบฐเบ™เบฐเบ”เบฝเบงเบซเบผเบทเบœเปˆเบฒเบ™ docker-compose, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบงเบปเป‰เบฒเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ•เบฑเป‰เบ‡เบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒเบชเปเบฒเบฅเบฑเบš docker เบชเปเบฒเบฅเบฑเบšเบฎเบฒเบเปƒเบ™ MySQL เบซเบผเบทเปƒเบ”เบเปเปˆเบ•เบฒเบกเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™.

เบกเบตเบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เปเบšเบšเบชเบธเปˆเบก. เบžเบงเบเป€เบฎเบปเบฒเป€เบงเบปเป‰เบฒเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบœเบนเป‰เปƒเบŠเป‰, เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ•เบฑเป‰เบ‡เบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เปƒเบŠเป‰, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบชเป‰เบฒเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™.

เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เป€เบฅเบฑเบเบ™เป‰เบญเบ Dockerfile, เป€เบŠเบดเปˆเบ‡เบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ›เบฑเบšเบกเบฑเบ™เบ•เบฒเบกเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบžเบทเปˆเบญเบ‚เบฐเบซเบเบฒเบเบชเบดเบ”เบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปƒเบŠเป‰. เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบžเบฝเบ‡เปเบ•เปˆเบชเป‰เบฒเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบ app console เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”. เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ Ruby เบกเบตเบ„เปเบฒเบชเบฑเปˆเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡, เบ”เบฑเบ”เปเบเป‰, เปเบฅเบฐเบฅเบถเบšเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™.

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฑเบš Docker เปเบฅเบฐ Gitlab CI

เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบชเบฐเบšเบฑเบšเบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡ MySQL เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบขเบนเปˆเปƒเบ™ github.com. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบ›เบตเบ” Dockerfile เปเบฅเบฐเป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป€เบเบตเบ”เบ‚เบถเป‰เบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™เป„เบ”เป‰เปเบ™เบงเปƒเบ”.

docker-endpoint.sh script เบ—เบตเปˆเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบชเปเบฒเบฅเบฑเบšเบˆเบธเบ”เป€เบ‚เบปเป‰เบฒ. เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™, เบšเบฒเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบเบฐเบเบฝเบกเปเบกเปˆเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เปเบฅเบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบฅเบงเบกเบขเบนเปˆเปƒเบ™เบชเบฐเบ„เบดเบšเป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™.

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฑเบš 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 เบขเบนเปˆเปƒเบ™เบฎเบฒเบเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™.

เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเปเบฒเบ”เบฑเบšเบ‚เบญเบ‡เบฅเบฑเบ”เป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”.

เบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบ•เบดเบšเบฑเบ” scripts เป‚เบ”เบเบเบปเบ‡เป‚เบ—เบซเบฒ docker-compose build เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบžเบฝเบ‡เปเบ•เปˆ backend.

เบ•เปเปˆเป„เบ›เบžเบงเบเป€เบฎเบปเบฒเป€เบงเบปเป‰เบฒเบงเปˆเบฒเบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเป€เบžเบทเปˆเบญเบ›เปˆเบฝเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš.

เบ–เป‰เบฒเบชเบฐเบ„เบฃเบดเบšเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡เปเบฅเบฐเบšเปเปˆเบชเบปเปˆเบ‡เบ„เบทเบ™เบฅเบฐเบซเบฑเบ”เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบฅเบฐเบšเบปเบšเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบตเบชเบญเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡.

เบ›เบฐเบˆเบธเบšเบฑเบ™เบ™เบตเป‰, เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เปเบกเปˆเบ™เป„เบ”เป‰เบ–เบทเบเบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”. เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป„เบ”เป‰เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบเบฒเบ™เบ›เบดเบ”เป€เบ›เบตเบ”เปƒเปเปˆ.

เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป„เบ”เป‰โ€‹เบšเบฑเบ‡โ€‹เบ„เบฑเบšโ€‹เปƒเบซเป‰โ€‹เบ”เบฑเบšโ€‹เบกเบญเบ”โ€‹เบ–เบฑเบ‡โ€‹เบ—เบฑเบ‡โ€‹เปเบปเบ”, เปเบฅเบฐโ€‹เบˆเบฒเบโ€‹เบ™เบฑเป‰เบ™โ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบˆเบฐโ€‹เบเบปเบโ€‹เบžเบฒโ€‹เบŠเบฐเบ™เบฐโ€‹เบ—เบฑเบ‡โ€‹เปเบปเบ”โ€‹เบ„เบทเบ™โ€‹เบญเบตเบ, เป€เบเบฑเบšโ€‹เบเบณโ€‹เปƒเบ™โ€‹เบ‚เบฑเป‰เบ™โ€‹เบ•เบญเบ™โ€‹เบ—เบณโ€‹เบญเบดเบ”โ€‹เปƒเบ™โ€‹เบฅเบฐโ€‹เบซเบงเปˆเบฒเบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบปเบ”โ€‹เบชเบญเบš.

เปƒเบซเป‰เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบเป‰เบฒเบเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ–เบทเบเบ‚เบฝเบ™เป‚เบ”เบเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเปเบฒเบฅเบฑเบšเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™.

เบกเบตเบ‚เปเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบ™เบตเป‰เบ„เบงเบ™เบˆเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบเบฑเบšเบชเบฒเบ‚เบฒเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™.

เปƒเบŠเป‰เบšเปเปˆเป„เบ”เป‰เป€เบกเบทเปˆเบญเบ›เปˆเบฝเบ™เบชเบฒเบ‚เบฒเบญเบทเปˆเบ™.

เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบˆเบฑเบ”เบฅเบฐเบšเบฝเบšเบกเป‰เบงเบ™เบ•เบฒเบกเบชเบฒเบ‚เบฒ.

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฑเบš Docker เปเบฅเบฐ Gitlab CI

เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบญเบฑเบ™เบ™เบตเป‰เบ•เบทเปˆเบกเบญเบตเบ, เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบ•เบดเบ”เบ•เบฑเป‰เบ‡ Gitlab Runner.

เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ™เบตเป‰เปเบกเปˆเบ™เบ‚เบฝเบ™เปƒเบ™ Golang. เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบŸเบฅเปŒเบ”เบฝเบงเบ•เบฒเบกเบ—เบตเปˆเบžเบปเบšเป€เบฅเบทเป‰เบญเบเปƒเบ™เป‚เบฅเบ Golang, เป€เบŠเบดเปˆเบ‡เบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ„เบงเบฒเบกเป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเปƒเบ”เป†.

เปƒเบ™เบ•เบญเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™ Gitlab Runner.

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบฅเบฐเบซเบฑเบ”เปƒเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเป€เบงเบฑเบšเป„เบŠเบ•เปŒ Gitlab.

เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเป‚เบ—เบซเบฒเบ„เปเบฒเบชเบฑเปˆเบ‡เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบ™เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡.

เบเบณเบ™เบปเบ”เบ„เปˆเบฒ Gitlab Runner เปƒเบ™เป‚เปเบ”เป‚เบ•เป‰เบ•เบญเบš (Shell, Docker, VirtualBox, SSH)

เบฅเบฐเบซเบฑเบ”เปƒเบ™ Gitlab Runner เบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบ—เบธเบเป† commit เบ‚เบถเป‰เบ™เบเบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ .gitlab-ci.yml.

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฑเบš Docker เปเบฅเบฐ Gitlab CI

เบกเบฑเบ™เป€เบšเบดเปˆเบ‡เปเบ™เบงเปƒเบ”เปƒเบ™ Gitlab เปƒเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเป€เบงเบฑเบš. เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ GITlab CI, เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ—เบธเบ‡เบ—เบตเปˆเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒเบชเบดเปˆเบ‡เบ—เบตเปˆเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™.

เบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เบงเปˆเบฒ 4 เบ™เบฒเบ—เบตเบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰เบกเบตเบ„เปเบฒเบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒเบ—เบตเปˆเบœเปˆเบฒเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เปเบฅเบฐเบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบšเบฑเบ™เบซเบฒเปƒเบ”เป†.

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฑเบš Docker เปเบฅเบฐ Gitlab CI

เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปƒเบ™เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบก. เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เบงเปˆเบฒเบชเบญเบ‡เบฅเบฑเบ”เป„เบ”เป‰เบœเปˆเบฒเบ™เป„เบ›เปเบฅเป‰เบง. เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš เปเบฅเบฐเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบขเบนเปˆเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™.

เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบ„เบฅเบดเบเปƒเบชเปˆเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบชเบฐเป€เบžเบฒเบฐ, เบˆเบฐเบกเบตเบœเบปเบ™เบœเบฐเบฅเบดเบ” console เบ‚เบญเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบ–เบทเบเป€เบ›เบตเบ”เบ•เบปเบงเปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ•เบฒเบก .gitlab-ci.yml.

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฑเบš Docker เปเบฅเบฐ Gitlab CI

เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบฅเบทเปˆเบญเบ‡เบ‚เบญเบ‡เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒ. เบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เบงเปˆเบฒเบกเบตเบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเบ—เบตเปˆเบˆเบฐเบ›เบฐเบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”. เป€เบกเบทเปˆเบญเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ–เบทเบเบชเบปเปˆเบ‡, เบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเป„เบ”เป‰เบเป‰เบฒเบเป„เบ›เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ•เปเปˆเป„เบ›เปเบฅเบฐเบฅเบฐเบซเบฑเบ” staging เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡.

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฑเบš Docker เปเบฅเบฐ Gitlab CI

เบšเบฑเบ™เบซเบฒเบซเบเบฑเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เปเบเป‰เป„เบ‚เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบ•เบดเบšเบฑเบ” docker? เบฅเบฐเบšเบปเบšเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบญเบปเบ‡เบ›เบฐเบเบญเบšเปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™ restart เบžเบฝเบ‡เปเบ•เปˆเบšเบฒเบ‡เบชเปˆเบงเบ™เบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡เปƒเบ™ repository, เปเบฅเบฐเบšเปเปˆเปเบกเปˆเบ™เบฅเบฐเบšเบปเบšเบ—เบฑเบ‡เบซเบกเบปเบ”.

เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เปเบเบเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบญเบญเบเป€เบ›เบฑเบ™เป‚เบŸเบ™เป€เบ”เบตเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ.

เบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบšเบฑเบ™เบซเบฒเบเบฑเบšเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒ Docker-compose เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ—เบตเปˆเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเป‚เบŸเป€เบ”เบตเปเบฅเบฐเบšเปเปˆเป€เบซเบฑเบ™เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เป€เบžเบทเปˆเบญเบ™เบšเป‰เบฒเบ™เบ‚เบญเบ‡เบกเบฑเบ™.

เป€เบžเบทเปˆเบญเป„เบ›เบกเบฒ, เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡เปƒเบ™ Docker. เปƒเบ™ Docker-compose เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบ‚เบฝเบ™เบงเปˆเบฒเบ—เปˆเบฒเบ™เบ„เบงเบ™เปƒเบŠเป‰เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบ™เบตเป‰.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เปเบ•เปˆเบฅเบฐเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบ•เบฒเบซเบ™เปˆเบฒเบ‡เบ™เบตเป‰เป€เบซเบฑเบ™เบญเบปเบ‡เบ›เบฐเบเบญเบšเปƒเบ™เบžเบฒเบเบชเปˆเบงเบ™เบญเบทเปˆเบ™เป†เบ‚เบญเบ‡เบฅเบฐเบšเบปเบš.

เบšเบฑเบ™เบซเบฒเบ•เปเปˆเป„เบ›เปเบกเปˆเบ™เบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡.

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰เป€เบšเบดเปˆเบ‡เบ‡เบฒเบกเปเบฅเบฐเปƒเบเป‰เบŠเบดเบ”เป€เบ—เบปเปˆเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เปƒเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”, เบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบ”เบตเบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เบžเบญเบ” 80 เบซเบผเบท 443, เป€เบŠเบดเปˆเบ‡เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบขเบนเปˆเบ—เบปเปˆเบงเบ—เบธเบเปเบซเปˆเบ‡เปƒเบ™เป€เบงเบฑเบš.

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฑเบš Docker เปเบฅเบฐ Gitlab CI

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เปเบเป‰เป„เบ‚เบ™เบตเป‰เปเบ™เบงเปƒเบ”? เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบกเบญเบšเบซเบกเบฒเบเบ™เบฑเบเปเบฅเปˆเบ™ Gitlab เบซเบ™เบถเปˆเบ‡เปƒเบซเป‰เบเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบ—เบฑเบ‡เบซเบกเบปเบ”.

Gitlab เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบง Gitlab Runners เบ—เบตเปˆเปเบˆเบเบขเบฒเบเบซเบผเบฒเบ, เป€เบŠเบดเปˆเบ‡เบžเบฝเบ‡เปเบ•เปˆเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบ™เป‰เบฒเบงเบฝเบเบ—เบฑเบ‡เบซเบกเบปเบ”เบซเบ™เบถเปˆเบ‡เบ„เบฑเป‰เบ‡เปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบงเบธเปˆเบ™เบงเบฒเบเปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ.

เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบšเบฑเบ™เบซเบฒเปƒเบ™เป€เบฎเบทเบญเบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเบเบฑเบ”เบเบธเปˆเบกเป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปƒเบซเป‰เบซเบ™เบถเปˆเบ‡ Gitlab Runner, เป€เบŠเบดเปˆเบ‡เบฎเบฑเบšเบกเบทเบเบฑเบšเบ›เบฐเบฅเบดเบกเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป‚เบ”เบเบšเปเปˆเบกเบตเบšเบฑเบ™เบซเบฒ.

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบเป‰เบฒเบ nginx-proxy เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบชเบฐเบ„เบดเบšเป€เบ›เบตเบ”เบ•เบปเบงเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเปเบฅเบฐเบ‚เบฝเบ™เบ•เบฒเบ‚เปˆเบฒเบเป„เบŸเบŸเป‰เบฒเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เบกเบฑเบ™.

เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบกเบตโ€‹เบ•เบฒโ€‹เบ‚เปˆเบฒเบโ€‹เป„เบŸโ€‹เบŸเป‰เบฒโ€‹เบซเบ™เบถเปˆเบ‡โ€‹, เปเบฅเบฐ balancer เบกเบตโ€‹เบ•เบฒโ€‹เบ‚เปˆเบฒเบโ€‹เป„เบŸโ€‹เบŸเป‰เบฒโ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบซเบ™เบถเปˆเบ‡โ€‹เบญเบตเบ‡โ€‹เบ•เบฒเบกโ€‹เบŠเบทเปˆโ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹. เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ•เบทเปˆเบกเบญเบตเบเป‚เบ”เบเบŠเบทเปˆเป‚เบ”เป€เบกเบ™.

เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบกเบฒเบœเปˆเบฒเบ™เป‚เบ”เป€เบกเบ™เปƒเบ™เบžเบญเบ” 80 เปเบฅเบฐเบ–เบทเบเปเบเป‰เป„เบ‚เปƒเบซเป‰เบเบฑเบšเบเบธเปˆเบกเบšเบฑเบ™เบˆเบธเบ—เบตเปˆเปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เป‚เบ”เป€เบกเบ™เบ™เบตเป‰.

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฑเบš Docker เปเบฅเบฐ Gitlab CI

เบกเบตเบšเบฑเบ™เบซเบฒเบซเบเบฑเบ‡เบญเบตเบเปเบ”เปˆ? เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบšเบฑเบ™เบˆเบธเบ—เบฑเบ‡เบซเบกเบปเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป€เบ›เบฑเบ™เบฎเบฒเบเป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เบ™เบตเป‰เปเบกเปˆเบ™เบฎเบฒเบเบ—เบตเปˆเบšเปเปˆเป€เบ—เบปเปˆเบฒเบ—เบฝเบกเบเบฑเบ™เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบฎเบฒเบ.

เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบšเบฑเบ™เบˆเบธ, เบกเบฑเบ™เบˆเบฐเป€เบ›เบฑเบ™เบฎเบฒเบเปเบฅเบฐเป„เบŸเบฅเปŒเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เบขเบนเปˆเปƒเบ™เบšเบฑเบ™เบˆเบธเบ™เบตเป‰เป„เบ”เป‰เบฎเบฑเบšเบชเบดเบ”เบ—เบดเบฎเบฒเบ.

เบ–เป‰เบฒเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธเปเบฅเบฐเป€เบฎเบฑเบ”เบšเบฒเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™เบ—เบตเปˆเบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบญเบญเบเบˆเบฒเบเบเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบฅเบฒเบง, เบฅเบฒเบงเบกเบตเป„เบŸเบฅเปŒเบ—เบตเปˆเบฅเบฒเบงเบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป„เบ”เป‰.

เบ™เบตเป‰เบˆเบฐเปเบเป‰เป„เบ‚เป„เบ”เป‰เปเบ™เบงเปƒเบ”? เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบกเบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเบˆเบฐเบขเบนเปˆเปƒเบ™เบšเบฑเบ™เบˆเบธ.

เบšเบฑเบ™เบซเบฒเบซเบเบฑเบ‡เป€เบเบตเบ”เบ‚เบถเป‰เบ™เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเป€เบžเบตเปˆเบกเบœเบนเป‰เปƒเบŠเป‰?

เป€เบกเบทเปˆเบญเบชเป‰เบฒเบ‡เบœเบนเป‰เปƒเบŠเป‰, ID เบเบธเปˆเบก (UID) เปเบฅเบฐ ID เบœเบนเป‰เปƒเบŠเป‰ (GID) เบกเบฑเบเบˆเบฐเบšเปเปˆเบเบปเบ‡เบเบฑเบ™.

เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ™เบตเป‰เบขเบนเปˆเปƒเบ™ container เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเบกเบต ID 1000.

เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบ™เบตเป‰เบเบปเบ‡เบเบฑเบ™เบเบฑเบšเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบเบทเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบŠเป‰ Ubuntu OS. เปเบฅเบฐเปƒเบ™ Ubuntu OS เบœเบนเป‰เปƒเบŠเป‰เบ—เปเบฒเบญเบดเบ”เบกเบต ID 1000.

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฑเบš Docker เปเบฅเบฐ Gitlab CI

เบžเบงเบเป€เบฎเบปเบฒเบกเบตเปเบœเบ™เบเบฒเบ™เบšเป?

เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™ Docker เบ„เบทเบ™เปƒเปเปˆ. เป‚เบ„เบ‡เบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบเปเบฒเบฅเบฑเบ‡เบžเบฑเบ”เบ—เบฐเบ™เบฒเบขเปˆเบฒเบ‡เบซเป‰เบฒเบงเบซเบฑเบ™, เป€เบญเบเบฐเบชเบฒเบ™เบเปเบฒเบฅเบฑเบ‡เบ›เปˆเบฝเบ™เปเบ›เบ‡. เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบ—เบตเปˆโ€‹เป„เบ”เป‰โ€‹เบกเบฒโ€‹เปƒเบ™โ€‹เบชเบญเบ‡โ€‹เบซเบฒโ€‹เบชเบฒเบกโ€‹เป€เบ”เบทเบญเบ™โ€‹เบเปˆเบญเบ™โ€‹เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เบŠเป‰เบฒโ€‹เบเบฒเบโ€‹เป€เบ›เบฑเบ™โ€‹เบŠเป‰เบฒโ€‹.

เบšเบฒเบ‡เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเปเบเป‰เป„เบ‚เปเบฅเป‰เบงเบญเบฒเบ”เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚เบ”เป‰เบงเบเบงเบดเบ—เบตเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เปเบฅเป‰เบง.

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบเป‰เบฒเบงเบ•เปเปˆเป„เบ›เปเบฅเบฐเบเป‰เบฒเบเป‚เบ”เบเบเบปเบ‡เบเบฑเบš orchestration.

เบ•เบปเบงเบขเปˆเบฒเบ‡เบซเบ™เบถเปˆเบ‡เปเบกเปˆเบ™เบเบปเบ™เป„เบเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปƒเบ™ Docker เบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ Docker Swarm, เป€เบŠเบดเปˆเบ‡เบญเบญเบเบกเบฒเบˆเบฒเบเบเปˆเบญเบ‡. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบขเบฒเบเบˆเบฐเป€เบ›เบตเบ”เบ•เบปเบงเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เปƒเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเป€เบ—เบเป‚เบ™เป‚เบฅเบเบต Docker Swarm.

เบ•เบนเป‰เบšเบฑเบ™เบˆเบธเบเบฒเบ™เบงเบฒเบ‡เป„เบ‚เปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเป„เบกเป‰เบ—เปˆเบญเบ™เบšเปเปˆเบชเบฐเบ”เบงเบ. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เป„เบกเป‰เบ—เปˆเบญเบ™เป„เบ”เป‰เบ–เบทเบเป‚เบ”เบ”เบ”เปˆเบฝเบง. เบžเบงเบเบกเบฑเบ™เบ–เบทเบเบเบฐเปเบˆเบเบเบฐเบˆเบฒเบเบขเบนเปˆเปƒเบ™เบ–เบฑเบ‡. เบซเบ™เบถเปˆเบ‡เปƒเบ™เบงเบฝเบเบ‡เบฒเบ™เปเบกเปˆเบ™เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบชเบฐเบ”เบงเบเปƒเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบšเบฑเบ™เบ—เบถเบเป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเป€เบงเบฑเบšเป„เบŠเบ•เปŒ.

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฑเบš Docker เปเบฅเบฐ Gitlab CI

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™