ΠŸΡ€ΠΎΡ†Π΅Ρ Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜ ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ со Docker ΠΈ Gitlab CI

Π’ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΠΌ Π΄Π° Π³ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚Π΅ транскриптот ΠΎΠ΄ ΠΈΠ·Π²Π΅ΡˆΡ‚Π°Ρ˜ΠΎΡ‚ Π½Π° АлСксандар Π‘ΠΈΠ³Π°Ρ‡Π΅Π² ΠΎΠ΄ Inventos β€žΠŸΡ€ΠΎΡ†Π΅Ρ Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜ ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ со Docker + Gitlab CIβ€œ

ОниС ΠΊΠΎΠΈ ΡˆΡ‚ΠΎΡ‚ΡƒΠΊΡƒ ΠΏΠΎΡ‡Π½ΡƒΠ²Π°Π°Ρ‚ Π΄Π° Π³ΠΎ спровСдуваат процСсот Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜ ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° Docker + Gitlab CI чСсто поставуваат основни ΠΏΡ€Π°ΡˆΠ°ΡšΠ°. КадС Π΄Π° сС Π·Π°ΠΏΠΎΡ‡Π½Π΅? Како Π΄Π° сС ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅? Како Π΄Π° сС тСстира?

Овој ΠΈΠ·Π²Π΅ΡˆΡ‚Π°Ρ˜ Π΅ Π΄ΠΎΠ±Π°Ρ€ Π·Π°Ρ‚ΠΎΠ° ΡˆΡ‚ΠΎ Π½Π° структуриран Π½Π°Ρ‡ΠΈΠ½ Π·Π±ΠΎΡ€ΡƒΠ²Π° Π·Π° процСсот Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜ ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ со помош Π½Π° Docker ΠΈ Gitlab CI. Π‘Π°ΠΌΠΈΠΎΡ‚ ΠΈΠ·Π²Π΅ΡˆΡ‚Π°Ρ˜ Π΅ ΠΎΠ΄ 2017 Π³ΠΎΠ΄ΠΈΠ½Π°. Мислам Π΄Π΅ΠΊΠ° ΠΎΠ΄ овој ΠΈΠ·Π²Π΅ΡˆΡ‚Π°Ρ˜ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΈ собСрСтС основитС, ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΡ˜Π°Ρ‚Π°, ΠΈΠ΄Π΅Ρ˜Π°Ρ‚Π° ΠΈ искуството Π·Π° ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅.

Кој сС Π³Ρ€ΠΈΠΆΠΈ, Π²Π΅ ΠΌΠΎΠ»Π°ΠΌ ΠΏΠΎΠ΄ ΠΌΠ°Ρ‡ΠΊΠ°Ρ‚Π°.

Јас сС Π²ΠΈΠΊΠ°ΠΌ АлСксандар Π‘ΠΈΠ³Π°Ρ‡Π΅Π². Π Π°Π±ΠΎΡ‚Π°ΠΌ Π·Π° Inventos. ЌС Π²ΠΈ ΠΊΠ°ΠΆΠ°ΠΌ Π·Π° ΠΌΠΎΠ΅Ρ‚ΠΎ искуство со ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° Docker ΠΈ ΠΊΠ°ΠΊΠΎ постСпСно Π³ΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°ΠΌΠ΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ Π²ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ˜Π°Ρ‚Π°.

Π’Π΅ΠΌΠ° Π½Π° ΠΈΠ·Π²Π΅ΡˆΡ‚Π°Ρ˜ΠΎΡ‚: ΠŸΡ€ΠΎΡ†Π΅Ρ Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜ со помош Π½Π° Docker ΠΈ Gitlab CI.

ΠŸΡ€ΠΎΡ†Π΅Ρ Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜ ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ со Docker ΠΈ Gitlab CI

Ова Π΅ ΠΌΠΎΡ˜ΠΎΡ‚ Π²Ρ‚ΠΎΡ€ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ Π·Π° Π”ΠΎΠΊΠ΅Ρ€. Π’ΠΎ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€Π²ΠΈΠΎΡ‚ ΠΈΠ·Π²Π΅ΡˆΡ‚Π°Ρ˜, Π³ΠΎ користСвмС Docker само Π²ΠΎ Ρ€Π°Π·Π²ΠΎΡ˜ΠΎΡ‚ Π½Π° ΠΌΠ°ΡˆΠΈΠ½ΠΈΡ‚Π΅ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈ. Π‘Ρ€ΠΎΡ˜ΠΎΡ‚ Π½Π° Π²Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈ ΠΊΠΎΠΈ користСлС Docker Π±ΠΈΠ» ΠΎΠΊΠΎΠ»Ρƒ 2-3 Π»ΠΈΡ†Π°. ΠŸΠΎΡΡ‚Π΅ΠΏΠ΅Π½ΠΎ сС стСкна искуство ΠΈ ΠΎΡ‚ΠΈΠ΄ΠΎΠ²ΠΌΠ΅ ΠΌΠ°Π»ΠΊΡƒ ΠΏΠΎΠ΄Π°Π»Π΅ΠΊΡƒ. Π›ΠΈΠ½ΠΊ Π΄ΠΎ Π½Π°ΡˆΠ°Ρ‚Π° ΠΏΡ€Π²ΠΈΠΎΡ‚ ΠΈΠ·Π²Π΅ΡˆΡ‚Π°Ρ˜.

Π¨Ρ‚ΠΎ ќС ΠΈΠΌΠ° Π²ΠΎ овој ΠΈΠ·Π²Π΅ΡˆΡ‚Π°Ρ˜? ЌС Π³ΠΎ сподСлимС Π½Π°ΡˆΠ΅Ρ‚ΠΎ искуство Π·Π° Ρ‚ΠΎΠ° ΠΊΠ°ΠΊΠ²ΠΈ Π³Ρ€Π΅Π±Π»Π° собравмС, ΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Ρ€Π΅ΡˆΠΈΠ²ΠΌΠ΅. НС бСшС насСкадС ΡƒΠ±Π°Π²ΠΎ, Π½ΠΎ Π½ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ Π΄Π° ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌΠ΅ ΠΏΠΎΠ½Π°Ρ‚Π°ΠΌΡƒ.

ΠΠ°ΡˆΠ΅Ρ‚ΠΎ ΠΌΠΎΡ‚ΠΎ: ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡Π΅Ρ‚Π΅ Π³ΠΎ сСто ΠΎΠ½Π° ΡˆΡ‚ΠΎ Π½ΠΈ Π΄ΠΎΠ°Ρ“Π° Π²ΠΎ Ρ€Π°ΠΊΠ°.

ΠŸΡ€ΠΎΡ†Π΅Ρ Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜ ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ со Docker ΠΈ Gitlab CI

Кои ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π³ΠΈ Ρ€Π΅ΡˆΠ°Π²Π°ΠΌΠ΅?

Кога Π΅Π΄Π½Π° компанија ΠΈΠΌΠ° Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ Ρ‚ΠΈΠΌΠΎΠ²ΠΈ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΎΡ‚ Π΅ Π·Π°Π΅Π΄Π½ΠΈΡ‡ΠΊΠΈ рСсурс. ΠŸΠΎΡΡ‚ΠΎΡ˜Π°Ρ‚ Ρ„Π°Π·ΠΈ ΠΊΠΎΠ³Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΎΡ‚ Π΅ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ ΠΎΠ΄ Π΅Π΄Π΅Π½ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ Π΄Π°Π΄Π΅Π½ Π½Π° Π΄Ρ€ΡƒΠ³ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅.

Π—Π° Π΄Π° ΠΌΠΎΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΎΡ‚ Π±Ρ€Π·ΠΎ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅, Ρ‚ΠΎΡ˜ Ρ‚Ρ€Π΅Π±Π° ΡˆΡ‚ΠΎ ΠΏΠΎΠ±Ρ€Π·ΠΎ Π΄Π° Π³ΠΎ ΠΏΡ€Π΅Π·Π΅ΠΌΠ΅ ΠΈΠ·Π²ΠΎΡ€Π½ΠΈΠΎΡ‚ ΠΊΠΎΠ΄ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ ΠΈ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅ срСдина, ΡˆΡ‚ΠΎ ќС ΠΌΡƒ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π° Π½Π°ΠΏΡ€Π΅Π΄ΡƒΠ²Π° Π²ΠΎ Ρ€Π΅ΡˆΠ°Π²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅ Π½Π° овој ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

ΠžΠ±ΠΈΡ‡Π½ΠΎ, Π°ΠΊΠΎ ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ ΠΎΠ΄ Π½ΡƒΠ»Π°, ΠΈΠΌΠ° ΠΌΠ°Π»Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Π²ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚. Π‘Π°ΠΌΠΎ ΠΎΠ»Π΄Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ ΠΈΠΌΠ°Π°Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π° Π³ΠΎ постават. Π’Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈΡ‚Π΅ сами Π³ΠΎ поставуваат своСто Ρ€Π°Π±ΠΎΡ‚Π½ΠΎ мСсто Π·Π° Π΅Π΄Π΅Π½ ΠΈΠ»ΠΈ Π΄Π²Π° Π΄Π΅Π½Π°. Π—Π° Π΄Π° Π³ΠΎ Π·Π°Π±Ρ€Π·Π°ΠΌΠ΅ ΠΎΠ²Π°, Π³ΠΎ користСвмС Docker.

Π‘Π»Π΅Π΄Π½Π°Ρ‚Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° Π΅ ΡΡ‚Π°Π½Π΄Π°Ρ€Π΄ΠΈΠ·Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° поставкитС Π²ΠΎ Development. Π‘ΠΏΠΎΡ€Π΅Π΄ ΠΌΠΎΠ΅Ρ‚ΠΎ искуство, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ сСкогаш ΠΏΡ€Π΅Π·Π΅ΠΌΠ°Π°Ρ‚ ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°Ρ‚ΠΈΠ²Π°. Π’ΠΎ сСкој ΠΏΠ΅Ρ‚Ρ‚ΠΈ ΡΠ»ΡƒΡ‡Π°Ρ˜ сС внСсува сопствСн Π΄ΠΎΠΌΠ΅Π½, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ vasya.dev. Π”ΠΎ ΠΌΠ΅Π½Π΅ сСди ΠΌΠΎΡ˜ΠΎΡ‚ сосСд ΠŸΠ΅Ρ‚Ρ˜Π°, Ρ‡ΠΈΡ˜ Π΄ΠΎΠΌΠ΅Π½ Π΅ petya.dev. Π’ΠΈΠ΅ Ρ€Π°Π·Π²ΠΈΠ²Π°Π°Ρ‚ Π²Π΅Π±-страница ΠΈΠ»ΠΈ нСкоја систСмска ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Π³ΠΎ ΠΎΠ²Π° ΠΈΠΌΠ΅ Π½Π° Π΄ΠΎΠΌΠ΅Π½.

Кога систСмот растС ΠΈ ΠΎΠ²ΠΈΠ΅ имиња Π½Π° Π΄ΠΎΠΌΠ΅Π½ΠΈ ΠΏΠΎΡ‡Π½ΡƒΠ²Π°Π°Ρ‚ Π΄Π° сС Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°Π°Ρ‚ Π²ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π°Ρ‚Π°, сС ΠΏΠΎΡ˜Π°Π²ΡƒΠ²Π° ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ Π²ΠΎ ΠΎΠΊΠΎΠ»ΠΈΠ½ΠΈΡ‚Π΅ Π·Π° Ρ€Π°Π·Π²ΠΎΡ˜ ΠΈ ΠΏΠ°Ρ‚Π΅ΠΊΠ°Ρ‚Π° Π½Π° страницата сС ΠΏΡ€Π΅ΠΏΠΈΡˆΡƒΠ²Π°.

Π˜ΡΡ‚ΠΎΡ‚ΠΎ сС случува ΠΈ со поставкитС Π·Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ. НСкои Π»ΡƒΡ“Π΅ Π½Π΅ сС ΠΌΠ°Ρ‡Π°Ρ‚ со бСзбСдноста ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ со ΠΏΡ€Π°Π·Π½Π° Π»ΠΎΠ·ΠΈΠ½ΠΊΠ° Π·Π° root. Π’ΠΎ Ρ„Π°Π·Π°Ρ‚Π° Π½Π° ΠΈΠ½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Π°, MySQL ΠΏΠΎΠ±Π°Ρ€Π° Π½Π΅ΠΊΠΎΠ³ΠΎ Π»ΠΎΠ·ΠΈΠ½ΠΊΠ° ΠΈ Π»ΠΎΠ·ΠΈΠ½ΠΊΠ°Ρ‚Π° сС ΠΏΠΎΠΊΠ°ΠΆΠ° Π΄Π΅ΠΊΠ° Π΅ 123. ЧСсто сС случува ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΏΠΎΡΡ‚ΠΎΡ˜Π°Π½ΠΎ Π΄Π° сС ΠΌΠ΅Π½ΡƒΠ²Π° Π²ΠΎ зависност ΠΎΠ΄ посвСтСноста Π½Π° Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‡ΠΎΡ‚. НСкој ја ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π», нСкој Π½Π΅ ја ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π°Ρ‚Π°. ИмашС Ρ‚Ρ€ΠΈΠΊΠΎΠ²ΠΈ ΠΊΠΎΠ³Π° ставивмС тСст ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° .gitignore ΠΈ сСкој Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‡ ΠΌΠΎΡ€Π°ΡˆΠ΅ Π΄Π° ја инсталира Π±Π°Π·Π°Ρ‚Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ. Ова Π³ΠΎ ΠΎΡ‚Π΅ΠΆΠ½Π° процСсот Π½Π° Π·Π°ΠΏΠΎΡ‡Π½ΡƒΠ²Π°ΡšΠ΅. ΠœΠ΅Ρ“Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΡ‚ΠΎ, Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ ΠΈ Π·Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ. Π‘Π°Π·Π°Ρ‚Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΌΠΎΡ€Π° Π΄Π° сС ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°Π»ΠΈΠ·ΠΈΡ€Π°, Π΄Π° сС рСгистрира Π»ΠΎΠ·ΠΈΠ½ΠΊΠ°, Π΄Π° сС рСгистрира корисник, Π΄Π° сС ΠΊΡ€Π΅ΠΈΡ€Π° Π·Π½Π°ΠΊ ΠΈΡ‚Π½.

Π”Ρ€ΡƒΠ³ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ сС Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π²Π΅Ρ€Π·ΠΈΠΈ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅. ЧСсто сС случува ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ. Има ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Legacy, кој Π·Π°ΠΏΠΎΡ‡Π½Π° ΠΏΡ€Π΅Π΄ ΠΏΠ΅Ρ‚ Π³ΠΎΠ΄ΠΈΠ½ΠΈ (ΠΎΠ΄ 2017 Π³ΠΎΠ΄ΠΈΠ½Π° - забСлСшка Π½Π° ΡƒΡ€Π΅Π΄Π½ΠΈΠΊΠΎΡ‚). На ΠΏΠΎΡ‡Π΅Ρ‚ΠΎΠΊΠΎΡ‚ Π·Π°ΠΏΠΎΡ‡Π½Π°Π²ΠΌΠ΅ со MySQL 5.5. Има ΠΈ ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ ΠΊΠ°Π΄Π΅ ΡˆΡ‚ΠΎ сС ΠΎΠ±ΠΈΠ΄ΡƒΠ²Π°ΠΌΠ΅ Π΄Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°ΠΌΠ΅ ΠΏΠΎΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈ Π²Π΅Ρ€Π·ΠΈΠΈ Π½Π° MySQL, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 5.7 ΠΈΠ»ΠΈ постари (Π²ΠΎ 2017 Π³ΠΎΠ΄ΠΈΠ½Π° - забСлСшка Π½Π° ΡƒΡ€Π΅Π΄Π½ΠΈΠΊΠΎΡ‚)

БСкој кој Ρ€Π°Π±ΠΎΡ‚ΠΈ со MySQL Π·Π½Π°Π΅ Π΄Π΅ΠΊΠ° ΠΎΠ²ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ носат зависности. ΠŸΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎ Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π΄Π° сС ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°Π°Ρ‚ 2 Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π·Π°Π΅Π΄Π½ΠΎ. Π’ΠΎ најмала Ρ€Π°ΠΊΠ°, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π΅ Π΄Π° сС ΠΏΠΎΠ²Ρ€Π·Π°Ρ‚ старитС ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ со Π½ΠΎΠ²Π°Ρ‚Π° Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ. Ова ΠΏΠ°ΠΊ ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΡƒΠ²Π° Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ.

Π‘Π»Π΅Π΄Π½ΠΈΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π΅ ΠΊΠΎΠ³Π° Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‡ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° Π»ΠΎΠΊΠ°Π»Π½Π° машина, Ρ‚ΠΎΡ˜ користи Π»ΠΎΠΊΠ°Π»Π½ΠΈ рСсурси, Π»ΠΎΠΊΠ°Π»Π½ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ, Π»ΠΎΠΊΠ°Π»Π½Π° RAM ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°. Π¦Π΅Π»Π°Ρ‚Π° ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ†ΠΈΡ˜Π° Π²ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΡ‚ Π½Π° Ρ€Π°Π·Π²ΠΈΠ²Π°ΡšΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅ сС Π²Ρ€ΡˆΠΈ Π²ΠΎ Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° Ρ„Π°ΠΊΡ‚ΠΎΡ‚ Π΄Π΅ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° Π΅Π΄Π½Π° машина. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π±ΠΈ Π±ΠΈΠ» ΠΊΠΎΠ³Π° ΠΈΠΌΠ°ΠΌΠ΅ Π·Π°Π΄Π½ΠΈ сСрвСри Π²ΠΎ Production 3, Π° Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‡ΠΎΡ‚ Π³ΠΈ Π·Π°Ρ‡ΡƒΠ²ΡƒΠ²Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ Π²ΠΎ root Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΎΡ‚ ΠΈ ΠΎΠ΄ Ρ‚Π°ΠΌΡƒ nginx Π³ΠΈ Π·Π΅ΠΌΠ° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ Π·Π° Π΄Π° ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€ΠΈ Π½Π° Π±Π°Ρ€Π°ΡšΠ΅Ρ‚ΠΎ. Кога Ρ‚Π°ΠΊΠΎΠ² ΠΊΠΎΠ΄ ќС Π²Π»Π΅Π·Π΅ Π²ΠΎ Production, ΠΈΠ·Π»Π΅Π³ΡƒΠ²Π° Π΄Π΅ΠΊΠ° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Π΅ присутна Π½Π° Π΅Π΄Π΅Π½ ΠΎΠ΄ 3-Ρ‚Π΅ сСрвСри.

Π’ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ² сС Ρ€Π°Π·Π²ΠΈΠ²Π° насоката Π½Π° микросСрвиситС. Кога Π³ΠΈ Π΄Π΅Π»ΠΈΠΌΠ΅ Π½Π°ΡˆΠΈΡ‚Π΅ Π³ΠΎΠ»Π΅ΠΌΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° Π½Π΅ΠΊΠΎΠΈ ΠΌΠ°Π»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ ΠΊΠΎΠΈ ΠΊΠΎΠΌΡƒΠ½ΠΈΡ†ΠΈΡ€Π°Π°Ρ‚ Π΅Π΄Π½ΠΈ со Π΄Ρ€ΡƒΠ³ΠΈ. Ова Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π·Π° ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ ΠΊΡƒΠΏ Π·Π°Π΄Π°Ρ‡ΠΈ. Ова исто Ρ‚Π°ΠΊΠ° Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° ја ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° ΠΈ областа Π½Π° одговорност ΠΏΠΎΠΌΠ΅Ρ“Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅.

Π Π°Π·Π²ΠΈΠ²Π°Ρ‡ Π½Π° ΠΏΡ€Π΅Π΄Π΅Π½ Π΄Π΅Π», кој сС Ρ€Π°Π·Π²ΠΈΠ²Π° Π²ΠΎ JS, ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΎ Π½Π΅ΠΌΠ° Π½ΠΈΠΊΠ°ΠΊΠ²ΠΎ влијаниС Π²Ρ€Π· Π·Π°Π΄Π½ΠΈΠΎΡ‚ Π΄Π΅Π». Π Π°Π·Π²ΠΈΠ²Π°Ρ‡ΠΎΡ‚ Π½Π° Π·Π°Π΄Π½ΠΈΠ½Π°Ρ‚Π°, ΠΏΠ°ΠΊ, Ρ€Π°Π·Π²ΠΈΠ²Π°, Π²ΠΎ Π½Π°ΡˆΠΈΠΎΡ‚ ΡΠ»ΡƒΡ‡Π°Ρ˜, 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. ОвдС ΠΈΠ·Ρ˜Π°Π²ΡƒΠ²Π°ΠΌΠ΅ Π΄Π΅ΠΊΠ° наслСдувамС ΠΎΠ΄ ΠΎΡ„ΠΈΡ†ΠΈΡ˜Π°Π»Π½Π°Ρ‚Π° Docker слика Π½Π° Ruby:2.3.0. Π‘ΠΎΠ΄Ρ€ΠΆΠΈ инсталирана Π²Π΅Ρ€Π·ΠΈΡ˜Π° Π½Π° Ruby 2.3. Π“ΠΈ инсталирамС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈΡ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π·Π° ΡΠΊΠ»ΠΎΠΏΡƒΠ²Π°ΡšΠ΅ ΠΈ NodeJS. ΠžΠΏΠΈΡˆΡƒΠ²Π°ΠΌΠ΅ Π΄Π΅ΠΊΠ° создавамС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌ /app. Π“ΠΎ Π΄ΠΎΠ΄Π΅Π»ΡƒΠ²Π°ΠΌΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΎΡ‚ Π·Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΊΠ°ΠΊΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅Π½ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌ. Π’ΠΎ овој Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌ Π³ΠΎ ставамС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈΠΎΡ‚ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Gemfile ΠΈ Gemfile.lock. ΠŸΠΎΡ‚ΠΎΠ° Π³Ρ€Π°Π΄ΠΈΠΌΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ ΠΊΠΎΠΈ ја инсталираат ΠΎΠ²Π°Π° слика Π·Π° зависност. ΠŸΠΎΡΠΎΡ‡ΡƒΠ²Π°ΠΌΠ΅ Π΄Π΅ΠΊΠ° ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΎΡ‚ ќС Π±ΠΈΠ΄Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ Π·Π° ΡΠ»ΡƒΡˆΠ°ΡšΠ΅ Π½Π° Π½Π°Π΄Π²ΠΎΡ€Π΅ΡˆΠ½Π°Ρ‚Π° ΠΏΠΎΡ€Ρ‚Π° 3000. ΠŸΠΎΡΠ»Π΅Π΄Π½Π°Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° ΡˆΡ‚ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ја стартува Π½Π°ΡˆΠ°Ρ‚Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°. Ако ја ΠΈΠ·Π²Ρ€ΡˆΠΈΠΌΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Π·Π° ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚, Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° ќС сС ΠΎΠ±ΠΈΠ΄Π΅ Π΄Π° ја ΠΈΠ·Π²Ρ€ΡˆΠΈ ΠΈ ΠΈΠ·Π²Ρ€ΡˆΠΈ Π½Π°Π²Π΅Π΄Π΅Π½Π°Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°.

ΠŸΡ€ΠΎΡ†Π΅Ρ Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜ ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ со Docker ΠΈ Gitlab CI

Ова Π΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° со Π΄ΠΎΠΊΠ΅Ρ€-ΠΊΠΎΠΌΠΏΠΎΠ½ΠΈΡ€Π°ΡšΠ΅. Π’ΠΎ овој ΡΠ»ΡƒΡ‡Π°Ρ˜, ΠΏΠΎΠΊΠ°ΠΆΡƒΠ²Π°ΠΌΠ΅ Π΄Π΅ΠΊΠ° постои врска ΠΏΠΎΠΌΠ΅Ρ“Ρƒ Π΄Π²Π° ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈ. Ова Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π²ΠΎ услугата Π·Π° Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΈ Π²Π΅Π±-услугата. ΠΠ°ΡˆΠΈΡ‚Π΅ Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π²ΠΎ ΠΏΠΎΠ²Π΅ΡœΠ΅Ρ‚ΠΎ случаи Π±Π°Ρ€Π°Π°Ρ‚ Π½Π΅ΠΊΠ°ΠΊΠ²Π° Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΊΠ°ΠΊΠΎ Π·Π°Π΄Π½ΠΈΠ½Π° Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ. Π‘ΠΈΠ΄Π΅Ρ˜ΡœΠΈ користимС MySQL, ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΡ‚ Π΅ со MySQL - Π½ΠΎ Π½ΠΈΡˆΡ‚ΠΎ Π½Π΅ Π½Π΅ спрСчува Π΄Π° користимС нСкоја Π΄Ρ€ΡƒΠ³Π° Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ (PostgreSQL, Redis).

Ја Π·Π΅ΠΌΠ°ΠΌΠ΅ сликата MySQL 5.7.14 Π±Π΅Π· ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ ΠΎΠ΄ ΠΎΡ„ΠΈΡ†ΠΈΡ˜Π°Π»Π½ΠΈΠΎΡ‚ ΠΈΠ·Π²ΠΎΡ€ ΠΎΠ΄ Ρ†Π΅Π½Ρ‚Π°Ρ€ΠΎΡ‚ Π½Π° Docker. Π‘Π»ΠΈΠΊΠ°Ρ‚Π° ΡˆΡ‚ΠΎ Π΅ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€Π½Π° Π·Π° Π½Π°ΡˆΠ°Ρ‚Π° Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° ја собирамС ΠΎΠ΄ Ρ‚Π΅ΠΊΠΎΠ²Π½ΠΈΠΎΡ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌ. Π—Π° Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΏΡ€Π²ΠΎΡ‚ΠΎ Π»Π°Π½ΡΠΈΡ€Π°ΡšΠ΅, Ρ‚ΠΎΡ˜ собира слика Π·Π° нас. ΠŸΠΎΡ‚ΠΎΠ° ја ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° ΡˆΡ‚ΠΎ ја ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΠΌΠ΅ ΠΎΠ²Π΄Π΅. Ако сС Π²Ρ€Π°Ρ‚ΠΈΠΌΠ΅ Π½Π°Π·Π°Π΄, ќС Π²ΠΈΠ΄ΠΈΠΌΠ΅ Π΄Π΅ΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Π·Π° Π»Π°Π½ΡΠΈΡ€Π°ΡšΠ΅ Π΅ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½Π° ΠΏΡ€Π΅ΠΊΡƒ 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 Ρ‚ΠΎΠ»ΠΊΡƒΠ²Π°Ρ‡ Π½Π° саканата Π²Π΅Ρ€Π·ΠΈΡ˜Π°. Π‘Π΅ ослободувамС ΠΎΠ΄ ΠΏΠΎΡ‚Ρ€Π΅Π±Π°Ρ‚Π° Π΄Π° користимС нСкој Π²ΠΈΠ΄ ΠΌΠ΅Π½Π°ΡŸΠ΅Ρ€ Π½Π° Π²Π΅Ρ€Π·ΠΈΠΈ. ΠŸΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎ, Π·Π° Ruby сС ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡˆΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ Π²Ρ€Ρ‚Π΅ΠΆΠΈ Π²ΠΎ ΠΌΠΈΠ½ΡƒΡ‚Π°, ΡˆΡ‚ΠΎ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ Π΄Π° ја ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π²Π΅Ρ€Π·ΠΈΡ˜Π°Ρ‚Π° Π²ΠΎ зависност ΠΎΠ΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚. Π‘Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΎΡ‚ Docker, ΠΎΠ²Π° исто Ρ‚Π°ΠΊΠ° Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π½Π΅ΠΏΡ€Π΅Ρ‡Π΅Π½ΠΎ Π΄Π° Π³ΠΎ ΠΌΠΈΠ³Ρ€ΠΈΡ€Π°Ρ‚Π΅ ΠΊΠΎΠ΄ΠΎΡ‚ ΠΈ Π΄Π° Π³ΠΎ Π²Π΅Ρ€Π·ΠΈΡ˜Π°Ρ‚Π° Π·Π°Π΅Π΄Π½ΠΎ со зависноститС. НСмамС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π΄Π° ја Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌΠ΅ Π²Π΅Ρ€Π·ΠΈΡ˜Π°Ρ‚Π° ΠΈ Π½Π° Ρ‚ΠΎΠ»ΠΊΡƒΠ²Π°Ρ‡ΠΎΡ‚ ΠΈ Π½Π° ΠΊΠΎΠ΄ΠΎΡ‚. Π—Π° Π΄Π° ја Π°ΠΆΡƒΡ€ΠΈΡ€Π°Ρ‚Π΅ Π²Π΅Ρ€Π·ΠΈΡ˜Π°Ρ‚Π°, Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π³ΠΎ ΡΠΏΡƒΡˆΡ‚ΠΈΡ‚Π΅ стариот сад ΠΈ Π΄Π° Π³ΠΎ ΠΏΠΎΠ΄ΠΈΠ³Π½Π΅Ρ‚Π΅ Π½ΠΎΠ²ΠΈΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€. Ако Π½Π΅ΡˆΡ‚ΠΎ Ρ‚Ρ€Π³Π½Π΅ Π½Π°ΠΎΠΏΠ°ΠΊΡƒ, ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π³ΠΎ ΡΠΏΡƒΡˆΡ‚ΠΈΠΌΠ΅ Π½ΠΎΠ²ΠΈΠΎΡ‚ сад, Π΄Π° Π³ΠΎ ΠΏΠΎΠ΄ΠΈΠ³Π½Π΅ΠΌΠ΅ стариот сад.

По ΠΈΠ·Π³Ρ€Π°Π΄Π±Π°Ρ‚Π° Π½Π° сликата, ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈΡ‚Π΅ ΠΈ Π²ΠΎ Ρ€Π°Π·Π²ΠΎΡ˜ ΠΈ Π²ΠΎ производство ќС Π±ΠΈΠ΄Π°Ρ‚ исти. Ова Π΅ особСно Ρ‚ΠΎΡ‡Π½ΠΎ Π·Π° Π³ΠΎΠ»Π΅ΠΌΠΈ инсталации.

ΠŸΡ€ΠΎΡ†Π΅Ρ Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜ ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ со Docker ΠΈ Gitlab CI На Frontend користимС JavaScipt ΠΈ NodeJS.

Π‘Π΅Π³Π° Π³ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π½Π°ΡˆΠΈΠΎΡ‚ послСдСн ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° ReacJS. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΎΡ‚ Π»Π°Π½ΡΠΈΡ€Π°ΡˆΠ΅ сè Π²ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΎΡ‚ ΠΈ Π³ΠΎ Ρ€Π°Π·Π²ΠΈ со помош Π½Π° Π²Ρ‡ΠΈΡ‚ΡƒΠ²Π°ΡšΠ΅ Π½Π° Ρ‚ΠΎΠΏΠ»ΠΎ.

Π‘Π»Π΅Π΄Π½ΠΎ, Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π° Π·Π° ΡΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ JavaScipt Π΅ лансирана ΠΈ статички составСниот ΠΊΠΎΠ΄ сС ΠΈΡΠΏΡ€Π°ΡœΠ° ΠΏΡ€Π΅ΠΊΡƒ nginx, Π·Π°ΡˆΡ‚Π΅Π΄ΡƒΠ²Π°Ρ˜ΡœΠΈ рСсурси.

ΠŸΡ€ΠΎΡ†Π΅Ρ Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜ ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ со Docker ΠΈ Gitlab CI

ОвдС Π΄Π°Π΄ΠΎΠ² Π΄ΠΈΡ˜Π°Π³Ρ€Π°ΠΌ Π½Π° Π½Π°ΡˆΠΈΠΎΡ‚ послСдСн ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

Кои ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π³ΠΈ Ρ€Π΅ΡˆΠΈΠ²Ρ‚Π΅? ИмавмС ΠΏΠΎΡ‚Ρ€Π΅Π±Π° Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌΠ΅ систСм со кој ΠΌΠΎΠ±ΠΈΠ»Π½ΠΈΡ‚Π΅ ΡƒΡ€Π΅Π΄ΠΈ ΠΊΠΎΠΌΡƒΠ½ΠΈΡ†ΠΈΡ€Π°Π°Ρ‚. Π’ΠΈΠ΅ Π΄ΠΎΠ±ΠΈΠ²Π°Π°Ρ‚ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ. Π•Π΄Π½Π° ΠΎΠ΄ моТноститС Π΅ Π΄Π° ΠΈΡΠΏΡ€Π°ΡœΠ°Ρ‚Π΅ push ΠΈΠ·Π²Π΅ΡΡ‚ΡƒΠ²Π°ΡšΠ° Π½Π° овој ΡƒΡ€Π΅Π΄.

Π¨Ρ‚ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΠ²ΠΌΠ΅ Π·Π° ΠΎΠ²Π°?

ΠΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° ја ΠΏΠΎΠ΄Π΅Π»ΠΈΠ²ΠΌΠ΅ Π½Π° слСднитС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ: административСн Π΄Π΅Π» Π²ΠΎ JS, Π·Π°Π΄Π½ΠΈΠ½Π° ΡˆΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΏΡ€Π΅ΠΊΡƒ ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ REST ΠΏΠΎΠ΄ Ruby on Rails. Π—Π°Π΄Π½ΠΈΠ½Π°Ρ‚Π° Π΅ Π²ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ†ΠΈΡ˜Π° со Π±Π°Π·Π°Ρ‚Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ. Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΎΡ‚ ΡˆΡ‚ΠΎ сС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° ΠΌΡƒ сС Π΄Π°Π²Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΡ‚. Администраторскиот ΠΏΠ°Π½Π΅Π» Π΅ Π²ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ†ΠΈΡ˜Π° со Π·Π°Π΄Π½ΠΈΠΎΡ‚ Π΄Π΅Π» ΠΈ Π±Π°Π·Π°Ρ‚Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΏΡ€Π΅ΠΊΡƒ ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ REST.

ИмавмС ΠΏΠΎΡ‚Ρ€Π΅Π±Π° ΠΈ Π΄Π° ΠΈΡΠΏΡ€Π°ΡœΠ°ΠΌΠ΅ Push ΠΈΠ·Π²Π΅ΡΡ‚ΡƒΠ²Π°ΡšΠ°. ΠŸΡ€Π΅Π΄ ΠΎΠ²Π° ΠΈΠΌΠ°Π²ΠΌΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π²ΠΎ кој бСшС ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·Π°ΠΌ кој бСшС ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€Π΅Π½ Π·Π° Π΄ΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ ΠΈΠ·Π²Π΅ΡΡ‚ΡƒΠ²Π°ΡšΠ° Π΄ΠΎ ΠΌΠΎΠ±ΠΈΠ»Π½ΠΈΡ‚Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ.

Ја Ρ€Π°Π·Π²ΠΈΠ²ΠΌΠ΅ слСднава шСма: ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΡ‚ ΠΎΠ΄ прСлистувачот ΠΊΠΎΠΌΡƒΠ½ΠΈΡ†ΠΈΡ€Π° со администраторскиот ΠΏΠ°Π½Π΅Π», административниот ΠΏΠ°Π½Π΅Π» ΠΊΠΎΠΌΡƒΠ½ΠΈΡ†ΠΈΡ€Π° со Π·Π°Π΄Π½ΠΈΠΎΡ‚ Π΄Π΅Π», Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π° Π΅ Π΄Π° ΠΈΡΠΏΡ€Π°ΡœΠ° ΠΈΠ·Π²Π΅ΡΡ‚ΡƒΠ²Π°ΡšΠ° Π·Π° Push.

Push ΠΈΠ·Π²Π΅ΡΡ‚ΡƒΠ²Π°ΡšΠ°Ρ‚Π° ΠΊΠΎΠΌΡƒΠ½ΠΈΡ†ΠΈΡ€Π°Π°Ρ‚ со Π΄Ρ€ΡƒΠ³Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΡˆΡ‚ΠΎ Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π½Π° Π²ΠΎ NodeJS.

Π Π΅Π΄ΠΈΡ†ΠΈΡ‚Π΅ сС Π³Ρ€Π°Π΄Π°Ρ‚ ΠΈ ΠΈΠ·Π²Π΅ΡΡ‚ΡƒΠ²Π°ΡšΠ°Ρ‚Π° сС ΠΈΡΠΏΡ€Π°ΡœΠ°Π°Ρ‚ спорСд сопствСн ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·Π°ΠΌ.

Π’ΡƒΠΊΠ° сС Π½Π°Ρ†Ρ€Ρ‚Π°Π½ΠΈ Π΄Π²Π΅ Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ. Π’ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Π³ΠΎ Docker, користимС 2 нСзависни Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΊΠΎΠΈ Π½Π° Π½ΠΈΠΊΠ°ΠΊΠΎΠ² Π½Π°Ρ‡ΠΈΠ½ Π½Π΅ сС ΠΏΠΎΠ²Ρ€Π·Π°Π½ΠΈ Π΅Π΄Π½Π° со Π΄Ρ€ΡƒΠ³Π°. ΠŸΠΎΠΊΡ€Π°Ρ˜ Ρ„Π°ΠΊΡ‚ΠΎΡ‚ Π΄Π΅ΠΊΠ° Ρ‚ΠΈΠ΅ ΠΈΠΌΠ°Π°Ρ‚ Π·Π°Π΅Π΄Π½ΠΈΡ‡ΠΊΠ° Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½Π° ΠΌΡ€Π΅ΠΆΠ°, Π° Ρ„ΠΈΠ·ΠΈΡ‡ΠΊΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ сС складираат Π²ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΈ Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π°Ρ‚Π° Π½Π° Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‡ΠΎΡ‚.

ΠŸΡ€ΠΎΡ†Π΅Ρ Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜ ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ со Docker ΠΈ Gitlab CI

Π˜ΡΡ‚ΠΎΡ‚ΠΎ Π½ΠΎ Π²ΠΎ Π±Ρ€ΠΎΡ˜ΠΊΠΈ. ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½Π°Ρ‚Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° Π½Π° ΠΊΠΎΠ΄ΠΎΡ‚ Π΅ Π²Π°ΠΆΠ½Π° ΠΎΠ²Π΄Π΅.

Ако ΠΏΠΎΡ€Π°Π½ΠΎ Π·Π±ΠΎΡ€ΡƒΠ²Π°Π²ΠΌΠ΅ Π·Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° Π½Π° ΠΊΠΎΠ΄ Π²ΠΎ Ρ„ΠΎΡ€ΠΌΠ° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ‚ΠΎΠ³Π°Ρˆ Π²ΠΎ овој ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π°ΡˆΠ°Ρ‚Π° услуга, која ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π° Π½Π° ΠΈΠ·Π²Π΅ΡΡ‚ΡƒΠ²Π°ΡšΠ°Ρ‚Π° Π·Π° Push, ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ сС користи ΠΊΠ°ΠΊΠΎ цСлосСн сСрвСр. ΠžΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° API. И Π½Π°ΡˆΠΈΠΎΡ‚ Π½ΠΎΠ² Ρ€Π°Π·Π²ΠΎΡ˜ Π΅ Π²ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ†ΠΈΡ˜Π° со Π½Π΅Π³ΠΎ.

Π’ΠΎ Ρ‚ΠΎΠ° Π²Ρ€Π΅ΠΌΠ΅ ја користСвмС Π²Π΅Ρ€Π·ΠΈΡ˜Π°Ρ‚Π° 4 Π½Π° NodeJS. Π‘Π΅Π³Π° (Π²ΠΎ 2017 Π³ΠΎΠ΄ΠΈΠ½Π° - забСлСшка Π½Π° ΡƒΡ€Π΅Π΄Π½ΠΈΠΊΠΎΡ‚) Π²ΠΎ Π½Π°ΡˆΠΈΡ‚Π΅ најнови ΡΠ»ΡƒΡ‡ΡƒΠ²Π°ΡšΠ° ја користимС Π²Π΅Ρ€Π·ΠΈΡ˜Π°Ρ‚Π° 7 Π½Π° NodeJS. НСма ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π²ΠΎ Π½ΠΎΠ²ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π·Π° Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π½ΠΎΠ²ΠΈ Π²Π΅Ρ€Π·ΠΈΠΈ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

Π”ΠΎΠΊΠΎΠ»ΠΊΡƒ Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ја Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΡ€Π°Ρ‚Π΅ ΠΈ ΠΏΠΎΠ΄ΠΈΠ³Π½Π΅Ρ‚Π΅ Π²Π΅Ρ€Π·ΠΈΡ˜Π°Ρ‚Π° NodeJS Π½Π° услугата Π·Π° ΠΈΠ·Π²Π΅ΡΡ‚ΡƒΠ²Π°ΡšΠ΅ Push.

И Π°ΠΊΠΎ ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ја ΠΎΠ΄Ρ€ΠΆΠΈΠΌΠ΅ компатибилноста со API, Ρ‚ΠΎΠ³Π°Ρˆ ќС Π±ΠΈΠ΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ја Π·Π°ΠΌΠ΅Π½ΠΈΠΌΠ΅ со Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ ΡˆΡ‚ΠΎ Π±ΠΈΠ»Π΅ користСни ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎ.

ΠŸΡ€ΠΎΡ†Π΅Ρ Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜ ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ со Docker ΠΈ Gitlab CI

Π¨Ρ‚ΠΎ Π²ΠΈ Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ Π·Π° Π΄Π° Π΄ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ Docker? Π”ΠΎΠ΄Π°Π²Π°ΠΌΠ΅ Dockerfile Π²ΠΎ Π½Π°ΡˆΠ΅Ρ‚ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅, ΠΊΠΎΠ΅ Π³ΠΈ ΠΎΠΏΠΈΡˆΡƒΠ²Π° ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈΡ‚Π΅ зависности. Π’ΠΎ овој ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅ сС ΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ. Ова Π΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈΠΎΡ‚ ΠΊΠΎΠΌΠΏΠ»Π΅Ρ‚ Π·Π° Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‡ Π½Π° Π·Π°Π΄Π½ΠΈΠ½Π°.

Кога ΠΊΡ€Π΅ΠΈΡ€Π°ΠΌΠ΅ Π½ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΊΡ€Π΅ΠΈΡ€Π°ΠΌΠ΅ Dockerfile ΠΈ Π³ΠΎ ΠΎΠΏΠΈΡˆΡƒΠ²Π°ΠΌΠ΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈΠΎΡ‚ СкосистСм (Python, Ruby, NodeJS). Π’ΠΎ docker-compose, ја ΠΎΠΏΠΈΡˆΡƒΠ²Π° ΠΏΠΎΡ‚Ρ€Π΅Π±Π½Π°Ρ‚Π° зависност - Π±Π°Π·Π°Ρ‚Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ. ΠžΠΏΠΈΡˆΡƒΠ²Π°ΠΌΠ΅ Π΄Π΅ΠΊΠ° Π½ΠΈ Ρ‚Ρ€Π΅Π±Π° Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π·Π° Ρ‚Π°ΠΊΠ²Π° ΠΈ Ρ‚Π°ΠΊΠ²Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π°, Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Ρ‚Π°ΠΌΡƒ ΠΈ Ρ‚Π°ΠΌΡƒ.

НиС користимС посСбСн Ρ‚Ρ€Π΅Ρ‚ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ со nginx Π·Π° Π΄Π° слуТимС статична содрТина. МоТно Π΅ Π΄Π° ΠΏΡ€ΠΈΠΊΠ°Ρ‡ΡƒΠ²Π°Ρ‚Π΅ слики. Π—Π°Π΄Π½ΠΈΠ½Π°Ρ‚Π° Π³ΠΈ става Π²ΠΎ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ Π²ΠΎΠ»ΡƒΠΌΠ΅Π½, кој исто Ρ‚Π°ΠΊΠ° Π΅ ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½ Π²ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ со nginx, кој ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° статички ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ.

Π—Π° Π΄Π° ја Π·Π°Ρ‡ΡƒΠ²Π°ΠΌΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° nginx ΠΈ mysql, Π΄ΠΎΠ΄Π°Π΄ΠΎΠ²ΠΌΠ΅ ΠΏΠ°ΠΏΠΊΠ° Docker Π²ΠΎ која Π³ΠΈ Ρ‡ΡƒΠ²Π°ΠΌΠ΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. Кога Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‡ΠΎΡ‚ ΠΏΡ€Π°Π²ΠΈ git ΠΊΠ»ΠΎΠ½ Π½Π° ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅Ρ‚ΠΎ Π½Π° Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° машина, Ρ‚ΠΎΡ˜ вСќС ΠΈΠΌΠ° ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π·Π° Π»ΠΎΠΊΠ°Π»Π΅Π½ Ρ€Π°Π·Π²ΠΎΡ˜. НСма ΠΏΡ€Π°ΡˆΠ°ΡšΠ΅ Π·Π° Ρ‚ΠΎΠ° која ΠΏΠΎΡ€Ρ‚Π° ΠΈΠ»ΠΈ ΠΊΠΎΠΈ поставки Π΄Π° сС ΠΏΡ€ΠΈΠΌΠ΅Π½Π°Ρ‚.

ΠŸΡ€ΠΎΡ†Π΅Ρ Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜ ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ со Docker ΠΈ Gitlab CI

Π‘Π»Π΅Π΄Π½ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ: администратор, ΠΈΠ½Ρ„ΠΎ-API, притисни ΠΈΠ·Π²Π΅ΡΡ‚ΡƒΠ²Π°ΡšΠ°.

Π‘ΠΎ Ρ†Π΅Π» Π΄Π° Π³ΠΎ стартувамС сСто ΠΎΠ²Π°, создадовмС Π΄Ρ€ΡƒΠ³ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ Π½Π°Ρ€Π΅Ρ‡Π΅Π½ΠΎ dockerized-app. Π’ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ² користимС повСќС ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π° Π·Π° сСкоја ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. Π’ΠΈΠ΅ Сдноставно сС Π»ΠΎΠ³ΠΈΡ‡ΠΊΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ - Π²ΠΎ GitLab ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΊΠ°ΠΊΠΎ ΠΏΠ°ΠΏΠΊΠ°, Π½ΠΎ Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π°Ρ‚Π° Π½Π° Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‡ΠΎΡ‚ ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΊΠ°ΠΊΠΎ ΠΏΠ°ΠΏΠΊΠ° Π·Π° ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Π•Π΄Π½ΠΎ Π½ΠΈΠ²ΠΎ ΠΏΠΎΠ΄ΠΎΠ»Ρƒ сС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅ ΡˆΡ‚ΠΎ ќС сС ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π°Ρ‚.

ΠŸΡ€ΠΎΡ†Π΅Ρ Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜ ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ со Docker ΠΈ Gitlab CI

Ова Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° содрТината Π½Π° dockerized-app. ОвдС поставувамС ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌ Docker, Π²ΠΎ кој Π³ΠΈ ΠΏΠΎΠΏΠΎΠ»Π½ΡƒΠ²Π°ΠΌΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈΡ‚Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ Π·Π° ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ†ΠΈΠΈΡ‚Π΅ Π½Π° ситС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΈ README.md кој Π½Π°ΠΊΡ€Π°Ρ‚ΠΊΠΎ ΠΎΠΏΠΈΡˆΡƒΠ²Π° ΠΊΠ°ΠΊΠΎ Π΄Π° Π³ΠΎ Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚.

ОвдС ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ²ΠΌΠ΅ Π΄Π²Π΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ со Π΄ΠΎΠΊΠ΅Ρ€-ΠΊΠΎΠΌΠΏΠΎΠ½ΠΈΡ€Π°ΡšΠ΅. Ова Π΅ Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΎ Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС лансира Π²ΠΎ Ρ„Π°Π·ΠΈ. Кога Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‡ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚ΠΈ со ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚, Π½Π΅ ΠΌΡƒ Ρ‚Ρ€Π΅Π±Π°Π°Ρ‚ ΠΈΠ·Π²Π΅ΡΡ‚ΡƒΠ²Π°ΡšΠ° Π·Π° Push, Ρ‚ΠΎΡ˜ Сдноставно ја стартува Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Π·Π° ΡΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ docker ΠΈ, соодвСтно, рСсурситС сС Π·Π°Ρ‡ΡƒΠ²ΡƒΠ²Π°Π°Ρ‚.

Π”ΠΎΠΊΠΎΠ»ΠΊΡƒ ΠΈΠΌΠ° ΠΏΠΎΡ‚Ρ€Π΅Π±Π° ΠΎΠ΄ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ˜Π° со 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, кој Π΅ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€Π΅Π½ Π·Π° ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π°. Π’Π°ΠΌΡƒ Π³ΠΎ приспособивмС Π½Π° Π½Π°ΡˆΠΈΡ‚Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈ Π·Π° Сдноставно Π΄Π° Π³ΠΈ ΠΏΡ€ΠΎΡˆΠΈΡ€ΠΈΠΌΠ΅ корисничкитС ΠΏΡ€Π°Π²Π° ΡˆΡ‚ΠΎ Π³ΠΈ користи Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π°. Ова ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ Сдноставно Π΄Π° сС создадС Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΎΠ΄ ΠΊΠΎΠ½Π·ΠΎΠ»Π°Ρ‚Π° Π·Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π²ΠΎ ΠΈΠ΄Π½ΠΈΠ½Π°. Π ΡƒΠ±ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈΡ‚Π΅ ΠΈΠΌΠ°Π°Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ΅, ΠΌΠ΅Π½ΡƒΠ²Π°ΡšΠ΅ ΠΈ Π±Ρ€ΠΈΡˆΠ΅ΡšΠ΅ Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ.

ΠŸΡ€ΠΎΡ†Π΅Ρ Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜ ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ со Docker ΠΈ Gitlab CI

Ова Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Ρ‚ΠΎΠ° ΠΊΠ°ΠΊΠΎ ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π° Π½Π° MySQL Π½Π° github.com. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ ΠΎΡ‚Π²ΠΎΡ€ΠΈΡ‚Π΅ Dockerfile ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΊΠ°ΠΊΠΎ сС ΠΎΠ΄Π²ΠΈΠ²Π° ΠΈΠ½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Ρ‚Π°ΠΌΡƒ.

docker-endpoint.sh скрипта ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€Π½Π° Π·Π° Π²Π»Π΅Π·Π½Π°Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ°. Π—Π° Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΏΠΎΡ‡Π΅Ρ‚Π½Π°Ρ‚Π° ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π°, ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ сС Π½Π΅ΠΊΠΎΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²ΠΈΡ‚Π΅Π»Π½ΠΈ Π΄Π΅Ρ˜ΡΡ‚Π²Π° ΠΈ ситС ΠΎΠ²ΠΈΠ΅ Π΄Π΅Ρ˜ΡΡ‚Π²Π° сС Π²ΠΊΠ»ΡƒΡ‡Π΅Π½ΠΈ Π²ΠΎ скриптата Π·Π° ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π°.

ΠŸΡ€ΠΎΡ†Π΅Ρ Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜ ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ со Docker ΠΈ Gitlab CI

Π”Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ΠΌΠ΅ Π½Π° Π²Ρ‚ΠΎΡ€ΠΈΠΎΡ‚ Π΄Π΅Π».

Π‘Π΅ ΠΏΡ€Π΅Ρ„Ρ€Π»ΠΈΠ²ΠΌΠ΅ Π½Π° gitlab Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΈΠ·Π²ΠΎΡ€Π½ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ΠΎΠ²ΠΈ. Ова Π΅ ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎ моќСн систСм кој ΠΈΠΌΠ° Π²ΠΈΠ·ΡƒΠ΅Π»Π΅Π½ ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ.

Π•Π΄Π½Π° ΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅ Π½Π° Gitlab Π΅ Gitlab CI. Π’ΠΎΠ° Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° ΠΎΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΡΠ΅Ρ€ΠΈΡ˜Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΊΠΎΠΈ послСдоватСлно ќС сС користат Π·Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°ΡšΠ΅ систСм Π·Π° испорака Π½Π° ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ Π·Π° ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅ Π½Π° автоматско Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅.

Π˜Π·Π²Π΅ΡˆΡ‚Π°Ρ˜ Π·Π° Gitlab CI 2 https://goo.gl/uohKjI - Π˜Π·Π²Π΅ΡˆΡ‚Π°Ρ˜ΠΎΡ‚ ΠΎΠ΄ ΠΊΠ»ΡƒΠ±ΠΎΡ‚ Π ΡƒΠ±ΠΈ Π ΡƒΡΠΈΡ˜Π° Π΅ доста Π΄Π΅Ρ‚Π°Π»Π΅Π½ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π²Π΅ интСрСсира.

ΠŸΡ€ΠΎΡ†Π΅Ρ Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜ ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ со Docker ΠΈ Gitlab CI

Π‘Π΅Π³Π° ќС ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌΠ΅ ΡˆΡ‚ΠΎ Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ Π·Π° Π΄Π° сС Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° Gitlab CI. Π—Π° Π΄Π° Π³ΠΎ стартувамС Gitlab CI, само Ρ‚Ρ€Π΅Π±Π° Π΄Π° ја ставимС Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° .gitlab-ci.yml Π²ΠΎ ΠΊΠΎΡ€Π΅Π½ΠΎΡ‚ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚.

ОвдС ΠΎΠΏΠΈΡˆΡƒΠ²Π°ΠΌΠ΅ Π΄Π΅ΠΊΠ° сакамС Π΄Π° ΠΈΠ·Π²Ρ€ΡˆΠΈΠΌΠ΅ Π½ΠΈΠ·Π° ΡΠΎΡΡ‚ΠΎΡ˜Π±ΠΈ ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС тСст, Ρ€Π°ΡΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅.

Π˜Π·Π²Ρ€ΡˆΡƒΠ²Π°ΠΌΠ΅ скрипти ΠΊΠΎΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ја ΠΏΠΎΠ²ΠΈΠΊΡƒΠ²Π°Π°Ρ‚ ΠΈΠ·Π³Ρ€Π°Π΄Π±Π°Ρ‚Π° Π½Π° docker-compose Π½Π° Π½Π°ΡˆΠ°Ρ‚Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°. Ова Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° само Π·Π°Π΄Π½ΠΈΠΎΡ‚ Π΄Π΅Π».

Π‘Π»Π΅Π΄Π½ΠΎ Π²Π΅Π»ΠΈΠΌΠ΅ Π΄Π΅ΠΊΠ° Π΅ Π½Π΅ΠΎΠΏΡ…ΠΎΠ΄Π½ΠΎ Π΄Π° сС ΠΈΠ·Π²Ρ€ΡˆΠ°Ρ‚ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π·Π° Π΄Π° сС смСни Π±Π°Π·Π°Ρ‚Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΈ Π΄Π° сС ΠΈΠ·Π²Ρ€ΡˆΠ°Ρ‚ тСстови.

Ако скриптитС сС ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ ΠΈΠ·Π²Ρ€ΡˆΠ΅Π½ΠΈ ΠΈ Π½Π΅ Π²Ρ€Π°ΡœΠ°Π°Ρ‚ ΠΊΠΎΠ΄ Π·Π° Π³Ρ€Π΅ΡˆΠΊΠ°, Ρ‚ΠΎΠ³Π°Ρˆ систСмот ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΡƒΠ²Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° Ρ„Π°Π·Π° Π½Π° Ρ€Π°ΡΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅.

Π€Π°Π·Π°Ρ‚Π° Π½Π° Ρ€Π°ΡΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»Π½ΠΎ Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π½Π° Π·Π° постановка. НС ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π²ΠΌΠ΅ Ρ€Π΅ΡΡ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΡšΠ΅ Π±Π΅Π· ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ.

Насилно Π³ΠΈ гасимС ситС ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈ, Π° ΠΏΠΎΡ‚ΠΎΠ° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π³ΠΈ ΠΊΡ€Π΅Π²Π°ΠΌΠ΅ ситС ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈ собрани Π²ΠΎ ΠΏΡ€Π²Π°Ρ‚Π° Ρ„Π°Π·Π° ΠΏΡ€ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ.

АјдС Π΄Π° Π³ΠΈ ΠΈΠ·Π²Ρ€ΡˆΠΈΠΌΠ΅ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΡˆΡ‚ΠΎ Π±Π΅Π° напишани ΠΎΠ΄ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‡ΠΈΡ‚Π΅ Π·Π° Ρ‚Π΅ΠΊΠΎΠ²Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° ΠΎΠΊΠΎΠ»ΠΈΠ½Π°.

Има забСлСшка Π΄Π΅ΠΊΠ° ΠΎΠ²Π° Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈ само Π½Π° Π³Π»Π°Π²Π½Π°Ρ‚Π° Π³Ρ€Π°Π½ΠΊΠ°.

НС Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΊΠΎΠ³Π° ΠΌΠ΅Π½ΡƒΠ²Π°Ρ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΈ Π³Ρ€Π°Π½ΠΊΠΈ.

МоТно Π΅ Π΄Π° сС ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π°Ρ‚ ΠΏΡƒΡˆΡ‚Π°ΡšΠ° ΠΏΠΎ Π³Ρ€Π°Π½ΠΊΠΈ.

ΠŸΡ€ΠΎΡ†Π΅Ρ Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜ ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ со Docker ΠΈ Gitlab CI

Π—Π° Π΄Π° Π³ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ ΠΎΠ²Π° ΠΏΠΎΠ½Π°Ρ‚Π°ΠΌΡƒ, Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π³ΠΎ инсталирамС Gitlab Runner.

Оваа Π°Π»Π°Ρ‚ΠΊΠ° Π΅ напишана Π½Π° 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

МоТСмС ΠΏΠΎΠ΄Π΅Ρ‚Π°Π»Π½ΠΎ Π΄Π° Π³ΠΈ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π³Ρ€Π°Π΄Π±ΠΈΡ‚Π΅. ОвдС Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π΄Π΅ΠΊΠ° вСќС ΠΏΠΎΠΌΠΈΠ½Π°Π»Π΅ Π΄Π²Π΅ Π΄Ρ€ΠΆΠ°Π²ΠΈ. Бтатусот Π½Π° Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ ΠΈ статусот Π½Π° Ρ€Π°ΡΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ ΠΏΡ€ΠΈ ΠΏΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅.

Ако ΠΊΠ»ΠΈΠΊΠ½Π΅ΠΌΠ΅ Π½Π° ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½Π° Π³Ρ€Π°Π΄Π±Π°, ќС ΠΈΠΌΠ° ΠΈΠ·Π»Π΅Π· ΠΎΠ΄ ΠΊΠΎΠ½Π·ΠΎΠ»Π°Ρ‚Π° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡ‚Π΅ ΡˆΡ‚ΠΎ Π±Π΅Π° лансирани Π²ΠΎ процСсот спорСд .gitlab-ci.yml.

ΠŸΡ€ΠΎΡ†Π΅Ρ Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜ ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ со Docker ΠΈ Gitlab CI

Π’Π°ΠΊΠ° ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΏΡ€ΠΈΠΊΠ°Π·Π½Π°Ρ‚Π° Π·Π° Π½Π°ΡˆΠΈΠΎΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄. Π“Π»Π΅Π΄Π°ΠΌΠ΅ Π΄Π΅ΠΊΠ° ΠΈΠΌΠ°Π»ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΈ ΠΎΠ±ΠΈΠ΄ΠΈ. Кога сС поднСсуваат тСстовитС, Ρ‚ΠΈΠ΅ Π½Π΅ сС ΠΏΡ€Π΅Ρ„Ρ€Π»Π°Π°Ρ‚ Π½Π° слСдниот Ρ‡Π΅ΠΊΠΎΡ€ ΠΈ ΠΊΠΎΠ΄ΠΎΡ‚ Π·Π° Ρ„Π°Π·Π° Π½Π΅ сС Π°ΠΆΡƒΡ€ΠΈΡ€Π°.

ΠŸΡ€ΠΎΡ†Π΅Ρ Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜ ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ со Docker ΠΈ Gitlab CI

Кои ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π³ΠΈ Ρ€Π΅ΡˆΠΈΠ²ΠΌΠ΅ ΠΏΡ€ΠΈ ΠΈΠ½ΡΡ†Π΅Π½ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ ΠΊΠΎΠ³Π° Π³ΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π²ΠΌΠ΅ docker? ΠΠ°ΡˆΠΈΠΎΡ‚ систСм сС состои ΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ ΠΈ Ρ‚Ρ€Π΅Π±Π°ΡˆΠ΅ Π΄Π° Π³ΠΈ рСстартирамС само Π½Π΅ΠΊΠΎΠΈ ΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅ ΡˆΡ‚ΠΎ Π±Π΅Π° Π°ΠΆΡƒΡ€ΠΈΡ€Π°Π½ΠΈ Π²ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅Ρ‚ΠΎ, Π° Π½Π΅ Ρ†Π΅Π»ΠΈΠΎΡ‚ систСм.

Π—Π° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΎΠ²Π°, ΠΌΠΎΡ€Π°Π²ΠΌΠ΅ Π΄Π° ΠΎΠ΄Π²ΠΎΠΈΠΌΠ΅ сè Π²ΠΎ посСбни ΠΏΠ°ΠΏΠΊΠΈ.

ΠžΡ‚ΠΊΠ°ΠΊΠΎ Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΠ²ΠΌΠ΅ ΠΎΠ²Π°, ΠΈΠΌΠ°Π²ΠΌΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ со Ρ„Π°ΠΊΡ‚ΠΎΡ‚ Π΄Π΅ΠΊΠ° Docker-compose создава сопствСн ΠΌΡ€Π΅ΠΆΠ΅Π½ простор Π·Π° сСкоја ΠΏΠ°ΠΏΠΊΠ° ΠΈ Π½Π΅ Π³ΠΈ Π³Π»Π΅Π΄Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅ Π½Π° ΡΠ²ΠΎΡ˜ΠΎΡ‚ сосСд.

Π—Π° Π΄Π° сС Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»ΠΈΠΌΠ΅, ја создадовмС ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Ρ€Π°Ρ‡Π½ΠΎ Π²ΠΎ Docker. Π’ΠΎ Docker-compose ΠΏΠΈΡˆΡƒΠ²Π°ΡˆΠ΅ Π΄Π΅ΠΊΠ° Ρ‚Ρ€Π΅Π±Π° Π΄Π° користитС Ρ‚Π°ΠΊΠ²Π° ΠΌΡ€Π΅ΠΆΠ° Π·Π° овој ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

Π’Π°ΠΊΠ°, сСкоја ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΡˆΡ‚ΠΎ Π·Π°ΠΏΠΎΡ‡Π½ΡƒΠ²Π° со ΠΎΠ²Π°Π° ΠΌΡ€Π΅ΠΆΠ° Π³ΠΈ Π³Π»Π΅Π΄Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅ Π²ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ Π΄Π΅Π»ΠΎΠ²ΠΈ Π½Π° систСмот.

Π‘Π»Π΅Π΄Π½ΠΈΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π΅ ΠΏΠΎΠ΄Π΅Π»Π±Π°Ρ‚Π° Π½Π° сцСната ΠΏΠΎΠΌΠ΅Ρ“Ρƒ Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ.

Π‘ΠΈΠ΄Π΅Ρ˜ΡœΠΈ Π·Π° сСто ΠΎΠ²Π° Π΄Π° ΠΈΠ·Π³Π»Π΅Π΄Π° ΡƒΠ±Π°Π²ΠΎ ΠΈ ΡˆΡ‚ΠΎ Π΅ ΠΌΠΎΠΆΠ½ΠΎ поблиску Π΄ΠΎ производството, Π΄ΠΎΠ±Ρ€ΠΎ Π΅ Π΄Π° сС користи ΠΏΠΎΡ€Ρ‚Π°Ρ‚Π° 80 ΠΈΠ»ΠΈ 443, која сС користи насСкадС Π²ΠΎ WEB.

ΠŸΡ€ΠΎΡ†Π΅Ρ Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜ ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ со Docker ΠΈ Gitlab CI

Како Π³ΠΎ Ρ€Π΅ΡˆΠΈΠ²ΠΌΠ΅ ΠΎΠ²Π°? На ситС Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ ΠΌΡƒ Π΄ΠΎΠ΄Π΅Π»ΠΈΠ²ΠΌΠ΅ Π΅Π΄Π΅Π½ Gitlab Runner.

Gitlab Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° лансиратС Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ дистрибуирани Gitlab Runners, ΠΊΠΎΠΈ Сдноставно ќС Π³ΠΈ ΠΏΡ€Π΅Π·Π΅ΠΌΠ°Ρ‚ ситС Π·Π°Π΄Π°Ρ‡ΠΈ Π΅Π΄Π½Π° ΠΏΠΎ Π΅Π΄Π½Π° Π²ΠΎ Ρ…Π°ΠΎΡ‚ΠΈΡ‡Π΅Π½ рСдослСд ΠΈ ќС Π³ΠΈ ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°Π°Ρ‚.

Π—Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΠΌΠ΅ ΠΊΡƒΡœΠ½ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, ја ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²ΠΌΠ΅ Π³Ρ€ΡƒΠΏΠ°Ρ‚Π° Π½Π° Π½Π°ΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ Π½Π° Π΅Π΄Π΅Π½ Gitlab Runner, кој сС справува со Π½Π°ΡˆΠΈΡ‚Π΅ Ρ‚ΠΎΠΌΠΎΠ²ΠΈ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ.

Π“ΠΎ прСмСстивмС nginx-proxy Π²ΠΎ посСбна скрипта Π·Π° Π»Π°Π½ΡΠΈΡ€Π°ΡšΠ΅ ΠΈ Π³ΠΈ напишавмС ΠΌΡ€Π΅ΠΆΠΈΡ‚Π΅ Π½Π° ситС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ Π²ΠΎ Π½Π΅Π³ΠΎ.

ΠΠ°ΡˆΠΈΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈΠΌΠ° Π΅Π΄Π½Π° ΠΌΡ€Π΅ΠΆΠ°, Π° балансСрот ΠΈΠΌΠ° Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ ΠΌΡ€Π΅ΠΆΠΈ засновани Π½Π° имиња Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ. МоТС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π° сС прокси со имиња Π½Π° Π΄ΠΎΠΌΠ΅Π½ΠΈ.

ΠΠ°ΡˆΠΈΡ‚Π΅ Π±Π°Ρ€Π°ΡšΠ° Π΄ΠΎΠ°Ρ“Π°Π°Ρ‚ ΠΏΡ€Π΅ΠΊΡƒ Π΄ΠΎΠΌΠ΅Π½ΠΎΡ‚ Π½Π° ΠΏΠΎΡ€Ρ‚Π°Ρ‚Π° 80 ΠΈ сС Ρ€Π΅ΡˆΠ°Π²Π°Π°Ρ‚ Π½Π° Π³Ρ€ΡƒΠΏΠ° ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈ ΡˆΡ‚ΠΎ Π³ΠΎ опслуТуваат овој Π΄ΠΎΠΌΠ΅Π½.

ΠŸΡ€ΠΎΡ†Π΅Ρ Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜ ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ со Docker ΠΈ Gitlab CI

Какви Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ имашС? Ова Π΅ ΠΎΠ½Π° ΡˆΡ‚ΠΎ ситС ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈ стандардно Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ ΠΊΠ°ΠΊΠΎ root. Ова Π΅ ΠΊΠΎΡ€Π΅Π½ΠΎΡ‚ Π½Π΅Π΅Π΄Π½Π°ΠΊΠΎΠ² ΠΊΠΎΡ€Π΅Π½ домаќин Π½Π° систСмот.

ΠœΠ΅Ρ“ΡƒΡ‚ΠΎΠ°, Π°ΠΊΠΎ Π³ΠΎ внСсСтС ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΎΡ‚, Ρ‚ΠΎΡ˜ ќС Π±ΠΈΠ΄Π΅ root ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° ΡˆΡ‚ΠΎ ја создавамС Π²ΠΎ овој ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ Π΄ΠΎΠ±ΠΈΠ²Π° root ΠΏΡ€Π°Π²Π°.

Ако нСкој ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ Π²Π»Π΅Π³ΠΎΠ» Π²ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΎΡ‚ ΠΈ Π½Π°ΠΏΡ€Π°Π²ΠΈΠ» Π½Π΅ΠΊΠΎΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Ρ‚Π°ΠΌΡƒ ΡˆΡ‚ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π»Π΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ, Π° ΠΏΠΎΡ‚ΠΎΠ° Π³ΠΎ Π½Π°ΠΏΡƒΡˆΡ‚ΠΈΠ» ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΎΡ‚, Ρ‚ΠΎΠ³Π°Ρˆ Π²ΠΎ Π½Π΅Π³ΠΎΠ²ΠΈΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚Π΅Π½ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌ ΠΈΠΌΠ° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° Π΄ΠΎ која Π½Π΅ΠΌΠ° пристап.

Како ΠΌΠΎΠΆΠ΅ ΠΎΠ²Π° Π΄Π° сС Ρ€Π΅ΡˆΠΈ? ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π΄ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ корисници ΠΊΠΎΠΈ ќС Π±ΠΈΠ΄Π°Ρ‚ Π²ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΎΡ‚.

Кои ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ сС појавија ΠΊΠΎΠ³Π° Π³ΠΎ Π΄ΠΎΠ΄Π°Π΄ΠΎΠ²ΠΌΠ΅ корисникот?

Кога ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚Π΅ корисник, ID Π½Π° Π³Ρ€ΡƒΠΏΠ°Ρ‚Π° (UID) ΠΈ кориснички ID (GID) чСсто Π½Π΅ сС совпаѓаат.

Π—Π° Π΄Π° Π³ΠΎ Ρ€Π΅ΡˆΠΈΠΌΠ΅ овој ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π²ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΎΡ‚ користимС корисници со ID 1000.

Π’ΠΎ Π½Π°ΡˆΠΈΠΎΡ‚ ΡΠ»ΡƒΡ‡Π°Ρ˜, ΠΎΠ²Π° сС совпадна со Ρ„Π°ΠΊΡ‚ΠΎΡ‚ Π΄Π΅ΠΊΠ° скоро ситС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈ користат Ubuntu OS. И Π²ΠΎ Ubuntu OS ΠΏΡ€Π²ΠΈΠΎΡ‚ корисник ΠΈΠΌΠ° ID 1000.

ΠŸΡ€ΠΎΡ†Π΅Ρ Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜ ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ со Docker ΠΈ Gitlab CI

Π”Π°Π»ΠΈ ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΠ»Π°Π½ΠΎΠ²ΠΈ?

ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ˜Ρ‚Π΅ ја Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° Docker. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ сС Ρ€Π°Π·Π²ΠΈΠ²Π°, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° сС ΠΌΠ΅Π½ΡƒΠ²Π°. ΠŸΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅ ΠΊΠΎΠΈ Π±Π΅Π° Π΄ΠΎΠ±ΠΈΠ΅Π½ΠΈ ΠΏΡ€Π΅Π΄ Π΄Π²Π°-Ρ‚Ρ€ΠΈ мСсСци ΠΏΠΎΠ»Π΅ΠΊΠ° стануваат застарСни.

НСкои ΠΎΠ΄ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅ ΡˆΡ‚ΠΎ Π³ΠΈ Ρ€Π΅ΡˆΠΈΠ²ΠΌΠ΅ ΠΌΠΎΠΆΠ΅Π±ΠΈ вСќС сС Ρ€Π΅ΡˆΠ΅Π½ΠΈ со стандардни срСдства.

Навистина сакам Π΄Π° ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΌ ΠΏΠΎΠ½Π°Ρ‚Π°ΠΌΡƒ ΠΈ Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π°ΠΌ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π½Π° ΠΎΡ€ΠΊΠ΅ΡΡ‚Ρ€Π°Ρ†ΠΈΡ˜Π°.

Π•Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΅ Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈΠΎΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·Π°ΠΌ Π½Π° Docker Π½Π°Ρ€Π΅Ρ‡Π΅Π½ Docker Swarm, кој ΠΈΠ·Π»Π΅Π³ΡƒΠ²Π° ΠΎΠ΄ ΠΊΡƒΡ‚ΠΈΡ˜Π°Ρ‚Π°. Π‘ΠΈ сакал Π΄Π° лансира Π½Π΅ΡˆΡ‚ΠΎ Π²ΠΎ производство Π²Ρ€Π· основа Π½Π° Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡ˜Π°Ρ‚Π° Docker Swarm.

ΠšΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈΡ‚Π΅ Π·Π° ΠΌΡ€Π΅ΡΡ‚Π΅ΡšΠ΅ Π³ΠΎ ΠΏΡ€Π°Π²Π°Ρ‚ Π½Π΅Π·Π³ΠΎΠ΄Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ΡšΠ΅Ρ‚ΠΎ со Ρ‚Ρ€ΡƒΠΏΡ†ΠΈ. Π‘Π΅Π³Π° Ρ‚Ρ€ΡƒΠΏΡ†ΠΈΡ‚Π΅ сС ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½ΠΈ. Π’ΠΈΠ΅ сС расфрлани Π²ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈ. Π•Π΄Π½Π° ΠΎΠ΄ Π·Π°Π΄Π°Ρ‡ΠΈΡ‚Π΅ Π΅ Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ ΡƒΠ΄ΠΎΠ±Π΅Π½ пристап Π΄ΠΎ Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈΡ‚Π΅ ΠΏΡ€Π΅ΠΊΡƒ Π²Π΅Π±-ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ.

ΠŸΡ€ΠΎΡ†Π΅Ρ Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜ ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ со Docker ΠΈ Gitlab CI

Π˜Π·Π²ΠΎΡ€: www.habr.com

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€