рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░! рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рд╡рд┐рдХрд╛рд╕ рдЯреАрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕рд░реНрд╡рд░ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рдЕрдиреБрднрд╡ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рд░ - рдкреАрдПрдЪрдкреА рдореЗрдВ рдПрдХ рд╡рд┐рдХрд╛рд╕ рджрд▓ рдФрд░ рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВред рдЬрдм рд╣рдо рдХреБрдЫ рдереЗ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рдереА, рддрдм рд╣рдордиреЗ 1 рдкрд░реАрдХреНрд╖рдг рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдФрд░ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдХрд╛рд░реНрдп рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдбреЗрд╡рд▓рдкрд░ рдиреЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдХреЛ "рд╕реНрддрдВрднрд┐рдд" рдХрд┐рдпрд╛ред рдпрджрд┐ рд╕рдордп рдореЗрдВ "рдЦрд┐рдбрд╝рдХрд┐рдпрд╛рдВ" рдирд╣реАрдВ рд╣реЛрддреАрдВ, рддреЛ рд╣рдореЗрдВ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ред рд╕рдордп рдХреЗ рд╕рд╛рде, рдЯреАрдо рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдмрдврд╝рддреА рдЧрдИ, рдХреНрд░рдорд╢рдГ, рд╕рддреНрдпрд╛рдкрди рд╕рдордп рдФрд░ рдкрд░реАрдХреНрд╖рдг рд╕рд░реНрд╡рд░ рдХреА рд╡реНрдпрд╕реНрддрддрд╛ рдмрдврд╝ рдЧрдИ, рдЬрд┐рд╕рдиреЗ рд▓реАрдб рд╕рдордп рдФрд░ рдмреЛрдирд╕ рдХреЛ рдирдХрд╛рд░рд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ред рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреА рдереА рдФрд░ рдпрд╣ рдХрдЯреМрддреА рдХреЗ рддрд╣рдд рд╣реИред
рдкреГрд╖реНрдарднреВрдорд┐
рдХреНрдпрд╛ рдерд╛:
- рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕рд░реНрд╡рд░
- рдПрдХ рдЕрдиреНрдп рд╕рд░реНрд╡рд░ рдкрд░ Gitlab рдФрд░ redmine
- рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛
рд╕рднреА рд╕рд░реНрд╡рд░ рд╣рдорд╛рд░реЗ рд╕реНрдерд╛рдиреАрдп рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рд╣реИрдВ, рдкрд░реАрдХреНрд╖рдг рд╕рд░реНрд╡рд░ рдмрд╛рд╣рд░ рд╕реЗ рджреБрд░реНрдЧрдо рд╣реИред
рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛:
- рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ / рд╢рд╛рдЦрд╛рдУрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛
- рдбреЗрд╡рд▓рдкрд░ рд╕рд░реНрд╡рд░ рдкрд░ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕реЗ рд╕реЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рджреВрд╕рд░реЛрдВ рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рддреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ
- рд╕рдм рдХреБрдЫ рдпрдерд╛рд╕рдВрднрд╡ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ 1 рдмрдЯрди рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдзрд┐рдорд╛рдирддрдГ рдЧрд┐рдЯрд▓реИрдм (рд╕реАрдЖрдИ / рд╕реАрдбреА) рд╕реЗред
рдирд┐рд░реНрдгрдп рдХреЗ рд╡рд┐рдХрд▓реНрдк
1. рдПрдХ рд╕рд░реНрд╡рд░, рдХрдИ рд╣реЛрд╕реНрдЯ
рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╡рд┐рдХрд▓реНрдкред рд╣рдо рдПрдХ рд╣реА рдкрд░реАрдХреНрд╖рдг рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рд╢рд╛рдЦрд╛ / рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдореЗрдЬрдмрд╛рди рдмрдирд╛рдиреЗ рдФрд░ рдЗрд╕реЗ nginx / ap22 рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдкреЗрд╢реЗрд╡рд░реЛрдВ:
- рдЬрд▓реНрджреА рдФрд░ рд╕рдм рд▓реЛрдЧ рд╕рдордЭрддреЗ рд╣реИрдВ
- рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рд╡рд┐рдкрдХреНрд╖:
- рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХрд╛ рдЦрдВрдб 2 рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ - рдбреЗрд╡рд▓рдкрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░, рдХреБрдЫ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рд╕рдм рдХреБрдЫ (рд╣рд╛рдп рдПрдВрдбреНрд░реА) рдореЗрдВ рдбрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ!
- рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдХреЗ рд╕рд╛рде рд╕реБрдВрджрд░ рдЬрдЯрд┐рд▓ рд╕реНрд╡рдЪрд╛рд▓рди
2. рд╕рд░реНрд╡рд░ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП!
рдкреНрд░рддреНрдпреЗрдХ рд╕рд░реНрд╡рд░ рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рдХрд░реЗрдВ рдФрд░ рдбреЗрд╡рд▓рдкрд░ рдЕрдкрдиреА рдЕрд░реНрдерд╡реНрдпрд╡рд╕реНрдерд╛ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред
рдкреЗрд╢реЗрд╡рд░реЛрдВ:
- рдбреЗрд╡рд▓рдкрд░ рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝ рдХрд░ рд╕рдХрддрд╛ рд╣реИ
рд╡рд┐рдкрдХреНрд╖:
- рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХрд╛ рдЦрдВрдб 2 рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ
- рдорд╣рдВрдЧрд╛рдИ рдФрд░ рд╕рдВрд╕рд╛рдзрди рдмрд╕ рдмреЗрдХрд╛рд░ рдЦрдбрд╝реЗ рд░рд╣ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдмрдХрд┐ рд╡рд┐рдХрд╛рд╕ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ
- рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рдХрд╛рд░рдг рд╕реНрд╡рдЪрд╛рд▓рди рдмрд┐рдВрджреБ 1 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ
3. рдХрдВрдЯреЗрдирд░реАрдХрд░рдг - рдбреЙрдХрдЯрд░, рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕
рдпрд╣ рддрдХрдиреАрдХ рд╣рдорд╛рд░реЗ рдЬреАрд╡рди рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдкреНрд░рд╡реЗрд╢ рдХрд░ рд░рд╣реА рд╣реИред рдШрд░ рдкрд░, рдореИрдВ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП docker рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдбреЙрдХрд░ - рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╕реНрддрд░ рдкрд░ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рддреИрдирд╛рддреА рдФрд░ рдкреНрд░рдмрдВрдзрди рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ред рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╕рднреА рдкрд░рд┐рд╡реЗрд╢ рдФрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ "рдкреИрдХ" рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХрд░реНрдиреЗрд▓ рдореЗрдВ cgroups рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рд▓рд┐рдирдХреНрд╕ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдХрдВрдЯреЗрдирд░ рдкреНрд░рдмрдВрдзрди рд╡рд╛рддрд╛рд╡рд░рдг рднреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдкреЗрд╢реЗрд╡рд░реЛрдВ:
- рдПрдХ рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
- рд╕рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╡рд┐рдкрдХреНрд╖:
- рдЫрд╡рд┐рдпрд╛рдВ рдФрд░ рдХрдВрдЯреЗрдирд░ рдХрднреА-рдХрднреА рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реНрдерд╛рди рд▓реЗрддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдЙрди рдореБрдХреБрдЯреЛрдВ рдХреЛ рд╕рд╛рдл рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЦрд╛рд▓реА рд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП рдкреБрд░рд╛рдиреЗ рд╣реИрдВред
рдбреЙрдХрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдЧрд┐рдЯрд▓реИрдм, рдСрдЯреЛрдбреЗрд╡реИрдкреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдЕрдХреНрд╕рд░ рдореЗрд░реА рдЖрдВрдЦ рдкрдХрдбрд╝рд╛ рдЬрд╛рддрд╛ рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд┐рднрд┐рдиреНрди рдореАрдЯрдЕрдк рдкрд░ рджрд╛рдврд╝реА рд╡рд╛рд▓реЗ рд▓реЛрдЧ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд┐рддрдиреЗ рдЕрдЪреНрдЫреЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рдЕрдкрдиреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдкрд░ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛, рд╕рд░реНрд╡рд░ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдФрд░ рдЖрдк рдкрд░реАрдХреНрд╖рдг рдХреЛ рд╕реНрдкрд░реНрд╢ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рд▓реЛрдЧ рд╡рд╣рд╛рдВ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ) рдФрд░ рдпрд╣ рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛!
рдЪреВрдБрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ kubernetes 0 рдХреЗ рд╕рд╛рде рдЕрдиреБрднрд╡ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдореИрдиреБрдЕрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдпреЗ рд╕рднреА рдХреНрд▓рд╕реНрдЯрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдХреБрдЫ рд╕рдордп рдмрд╛рдж, рдореИрдВ рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛, рд▓реЗрдХрд┐рди рддрдм рдкреНрд░рдорд╛рдгрдкрддреНрд░, рдЪрд╛рдмрд┐рдпрд╛рдБ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддреИрдирд╛рддреА рдХреА рдХрдард┐рдирд╛рдИ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВред рдореБрдЭреЗ рдЕрдкрдиреЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЛ рдпрд╣ рд╕рд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА рдХрд┐ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╕реНрдХрд╛рдЗрдк рдкрд░ рдПрдХ рд╣реА рдЫреБрдЯреНрдЯреА рдмрд┐рддрд╛рдирд╛ рдФрд░ рд╕реЗрдЯрдЕрдк рдХреЗ рд╕рд╛рде рдорджрдж рдХрд░рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛)ред рдЗрд╕рд▓рд┐рдП рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЛ рдЕрдХреЗрд▓рд╛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдбреЙрдХрдЯрд░ рд╕реНрд╡рдпрдВ рдмрдиреЗ рд░рд╣реЗ рдФрд░ рдХрдВрдЯреЗрдирд░ рдорд╛рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рдЪреВрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рднрд┐рдиреНрди рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдкрд░ рдЙрдард╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЖрдВрддрд░рд┐рдХ рдкреБрдирд░реНрдкреНрд░реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдирдЧрдиреЗрдХреНрд╕ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛ред рдЗрд╕реЗ рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдПрдХ рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рд╣реИ рдЬреЛ рдмрд╛рд╣рд░реА рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рдЖрдВрддрд░рд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╕реНрдерд┐рдд рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЙрд╕реА рд╕рдордп, рдпрд╣ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рджрд┐рдЦрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдЕрдиреБрд░реЛрдз рдХрд┐рдП рдЧрдП рд╕рдВрд╕рд╛рдзрди рд╕реАрдзреЗ рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдерд┐рдд рд╣реИрдВред
рдкреНрд░реЙрдХреНрд╕реА рдХреЛ рдЙрд▓рдЯ рджреЗрдВ
рдкрд╣рд┐рдпрд╛ рдХреЛ рд╕реБрджреГрдврд╝ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рддрд▓рд╛рд╢ рд╢реБрд░реВ рдХрд░ рджреАред рдФрд░ рдпрд╣ рдкрд╛рдпрд╛ рдЧрдпрд╛ - рдпрд╣
рдЯреНрд░реИрдлрд┐рдХ рд╣реИ ред
Trfik рдПрдХ рдЖрдзреБрдирд┐рдХ HTTP рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдФрд░ рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рд╣реИ рдЬреЛ рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлрд╝реНрдЯрд░реНрд╕ рдХреА рддреИрдирд╛рддреА рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИред Trfik рдореМрдЬреВрджрд╛ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рдШрдЯрдХреЛрдВ (рдбреЙрдХрд░, рд╕реНрд╡рд╛рд░реНрдо рдореЛрдб, рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕, рдореИрд░рд╛рдерди, рдХреМрдВрд╕реБрд▓, Etcd, Rancher, рдЕрдореЗрдЬрд╝реЕрди ECS, ...) рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдФрд░ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдбреЙрдХрдЯрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд╕ рдЗрд╕рдХреЗ рд╕реЙрдХреЗрдЯ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣реА рд╣реИ, рдлрд┐рд░ рдЯреНрд░реЛрдлрд┐рдХ рдЦреБрдж рд╕рднреА рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдвреВрдВрдврддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд░реВрдЯ рдХрд░рддрд╛ рд╣реИ (рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП, "рдбреЙрдХрдЯрд░ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреИрдХрд┐рдВрдЧ рдХрд░реЗрдВ" рджреЗрдЦреЗрдВ)ред
Trfik рдХрдВрдЯреЗрдирд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рдирдореИрдВ рдЗрд╕реЗ docker-compose.yml рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реВрдВ
version: '3' services: traefik: image: traefik:latest # The official Traefik docker image command: --api --docker # Enables the web UI and tells Tr├жfik to listen to docker ports: - 443:443 - 80:80 # The HTTP port - 8080:8080 # The Web UI (enabled by --api) volumes: - /var/run/docker.sock:/var/run/docker.sock # So that Traefik can listen to the Docker events - /opt/traefik/traefik.toml:/traefik.toml - /opt/traefik/certs/:/certs/ networks: - proxy container_name: traefik restart: always networks: proxy: external: true
рдпрд╣рд╛рдБ рд╣рдо рдкреНрд░реЙрдХреНрд╕реА рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рдкреЛрд░реНрдЯреНрд╕ 80,443 рдФрд░ 8080 (рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рд╡реЗрдм рдлреЗрд╕) рд╕реБрдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдбреЙрдХ рд╕реЙрдХреЗрдЯ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╛рдЗрд▓ рдФрд░ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдлреЛрд▓реНрдбрд░ рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░реЗрдВред рдкрд░реАрдХреНрд╖рдг рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рдирд╛рдордХрд░рдг рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдбреЛрдореЗрди рдЬрд╝реЛрди * .est рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЗрд╕ рдкрд░ рдХрд┐рд╕реА рднреА рд╕рд╛рдЗрдЯ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рддреЗ рд╕рдордп, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рд╕рд░реНрд╡рд░ рдкрд░ рдкрд╣реБрдВрдЪ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЯреНрд░реИрдлрд╝рд┐рдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд▓реЗрдЯреНрд╕ рдПрдирдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдЬрдирд░реЗрд╢рди
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout domain.key -out domain.crt
рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдбреЙрдХрдЯрд░ рдореЗрдВ рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рдиреЗрдЯрд╡рд░реНрдХ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЖрдк рдЗрд╕реЗ рдЕрдкрдирд╛ рдирд╛рдо рджреЗ рд╕рдХрддреЗ рд╣реИрдВ)ред
docker network create proxy
рдпрд╣ php рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд╕рд╛рде рдЯреНрд░реИрдлрд┐рдХ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдиреЗрдЯрд╡рд░реНрдХ рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЗрд╕реЗ рд╕реЗрд╡рд╛ рдХреЗ рдиреЗрдЯрд╡рд░реНрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдФрд░ рдкреВрд░реА рдлрд╛рдЗрд▓ рдХреЗ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдмрд╛рд╣рд░реА рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ: рд╕рдЪред
Traefik.toml рдлрд╝рд╛рдЗрд▓ debug = false logLevel = "DEBUG" defaultEntryPoints = ["https","http"] # insecureSkipVerify = true # [entryPoints] [entryPoints.http] address = ":80" [entryPoints.https] address = ":443" [entryPoints.https.tls] [docker] endpoint = "unix:///var/run/docker.sock" domain = "docker.localhost" watch = true exposedbydefault = false
рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ - рд╣рдо http рдФрд░ https рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЗ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдпрджрд┐ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕реНрдерд╛рдиреАрдп рд╣реИрдВ рддреЛ insecureSkipVerify = true рд╕реЗрдЯ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВред EntryPoints.https.tls рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рдЖрдк рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ рдЯреНрд░реИрдлрд╝рд┐рдХ рдЗрд╕рдХреЗ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛ред
рдЖрдк рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
docker-compose up -d
рдпрджрд┐ рдЖрдк
site.test рдкрд░
рдЬрд╛рддреЗ рд╣реИрдВ , рддреЛ рдЖрдкрдХреЛ 404 рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдбреЛрдореЗрди рдХрд┐рд╕реА рднреА рдХрдВрдЯреЗрдирд░ рд╕реЗ рдмрдВрдзрд╛ рдирд╣реАрдВ рд╣реИред
рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдбреЙрдХрдЯрд░ рдореЗрдВ рдкреИрдХ рдХрд░рддреЗ рд╣реИрдВ
рдЕрдм рдЖрдкрдХреЛ рдХрдВрдЯреЗрдирд░ рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН:
1. рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рдиреЗрдЯрд╡рд░реНрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ
2. рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рд▓реЗрдмрд▓ рдЬреЛрдбрд╝реЗрдВ
рдиреАрдЪреЗ рдПрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИ
docker-compose.yml рдПрдкреНрд▓реАрдХреЗрд╢рди version: '3' services: app: build: data/docker/php # restart: always working_dir: /var/www/html/public volumes: - ./:/var/www/html # - /home/develop/site-files/f:/var/www/html/public/f # links: - mailcatcher - memcached - mysql labels: - traefik.enabled=true - traefik.frontend.rule=Host:TEST_DOMAIN,crm.TEST_DOMAIN,bonus.TEST_DOMAIN - traefik.docker.network=proxy - traefik.port=443 - traefik.protocol=https networks: - proxy - default mailcatcher: image: schickling/mailcatcher:latest restart: always memcached: image: memcached restart: always mysql: image: mysql:5.7 restart: always command: --max_allowed_packet=902505856 --sql-mode="" environment: MYSQL_ROOT_PASSWORD: 12345 MYSQL_DATABASE: site volumes: - ./data/cache/mysql-db:/var/lib/mysql # phpmyadmin: image: phpmyadmin/phpmyadmin restart: always links: - mysql environment: MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: 12345 PMA_ARBITRARY: 1 PMA_HOST: mysql_1 labels: - traefik.enabled=true - traefik.frontend.rule=Host:pma.TEST_DOMAIN - traefik.docker.network=proxy - traefik.port=80 - traefik.default.protocol=http networks: - proxy - default networks: proxy: external: true
рдРрдк рд╕реЗрд╡рд╛ рдореЗрдВ, рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рдЖрдкрдХреЛ рдкреНрд░реЙрдХреНрд╕реА рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рджреЛ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдореИрдВ рдмрд╛рд╣рд░ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛, рд╕рдм рдХреБрдЫ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдЧрд▓рд╛, рд▓реЗрдмрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
- traefik.enabled=true # traefik - traefik.frontend.rule=Host:TEST_DOMAIN,crm.TEST_DOMAIN,bonus.TEST_DOMAIN # traefik - traefik.docker.network=proxy # - traefik.port=443 #, ssl 80 http - traefik.protocol=https # # phpmyadmin http
рд╕рд╛рдорд╛рдиреНрдп рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рдмрд╛рд╣реНрдп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ: рд╕рддреНрдп
TEST_DOMAIN рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рдбреЛрдореЗрди рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, site.test
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ
docker-compose up -d
рдЕрдм рдпрджрд┐ рдЖрдк рдбреЛрдореЗрди site.test, crm.site.test, Bonus.site.test рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХрд╛рд░реНрдп рд╕реНрдерд▓ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдбреЛрдореЗрди pma.site.test рдкрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХрд╛рдо рдХреЗ рд▓рд┐рдП phpmyadmin рд╣реЛрдЧрд╛ред
GitLab рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
рд╣рдо рдПрдХ рдЯрд╛рд╕реНрдХ рд╣реИрдВрдбрд▓рд░ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рджреМрдбрд╝рддреЗ рд╣реИрдВ
gitlab-runner register
рд╣рдо рдЧрд┐рдЯрд▓реИрдм рдпреВрдЖрд░рдПрд▓, рдЯреЛрдХрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рд░реНрдп рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдирд┐рд╖реНрдкрд╛рджрдХ)ред рдЪреВрдВрдХрд┐ рдореЗрд░рд╛ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдЧрд┐рдЯрд▓реИрдм рд╡рд┐рднрд┐рдиреНрди рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ ssh рдирд┐рд╖реНрдкрд╛рджрдХ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реВрдВред рдЖрдкрдХреЛ ssh рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдХрд╛ рдкрддрд╛ рдФрд░ рд▓реЙрдЧрд┐рди / рдкрд╛рд╕рд╡рд░реНрдб рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рд░рдирд░ рдХреЛ рдПрдХ рдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЪреВрдБрдХрд┐ рдореЗрд░рд╛ рдХрд╛рд░реНрдп рддрд░реНрдХ рд╣рд░ рдЬрдЧрд╣ рд╕рдорд╛рди рд╣реИ, рдПрдХ рд╕рд╛рдЭрд╛ рдзрд╛рд╡рдХ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ (рд╕рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрдо)ред
рдФрд░ рдЕрдВрддрд┐рдо рд╕реНрдкрд░реНрд╢ рдПрдХ CI рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдирд╛ рд╣реИ
.gitlab-ci.yml stages: - build - clear # develop build_develop: stage: build # build tags: # - ssh-develop environment: # , - name: review/$CI_BUILD_REF_NAME # url: https://site$CI_PIPELINE_ID.test #url on_stop: clear when: manual script: - cd ../ && cp -r $CI_PROJECT_NAME $CI_PIPELINE_ID && cd $CI_PIPELINE_ID # - cp -r /home/develop/site-files/.ssh data/docker/php/.ssh # ssh - sed -i -e docker-compose.yml # - docker-compose down # - docker-compose up -d --build # - script -q -c cd ../ && php composer.phar install --prefer-dist \ # - script -q -c cd ../ && php composer.phar first-install $CI_PIPELINE_ID\ # # production build_prod: stage: build tags: - ssh-develop environment: name: review/$CI_BUILD_REF_NAME url: https://site$CI_PIPELINE_ID.test on_stop: clear when: manual script: - cd ../ && cp -r $CI_PROJECT_NAME $CI_PIPELINE_ID && cd $CI_PIPELINE_ID - cp -r /home/develop/site-files/.ssh data/docker/php/.ssh # ssh - docker-compose down - docker-compose up -d --build - script -q -c cd ../ && php composer.phar install --prefer-dist --no-dev\ - script -q -c cd ../ && php composer.phar first-install $CI_PIPELINE_ID\ clear: stage: clear tags: - ssh-develop environment: name: review/$CI_BUILD_REF_NAME action: stop script: - cd ../ && cd $CI_PIPELINE_ID && docker-compose down && cd ../ && echo password | sudo -S rm -rf $CI_PIPELINE_ID # when: manual
рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ, 2 рдЪрд░рдгреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдирд┐рд░реНрдорд╛рдг рдФрд░ рд╕реНрдкрд╖реНрдЯред рдмрд┐рд▓реНрдб рдЪрд░рдг рдХреЗ 2 рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ - build_develop рдФрд░ build_prod

Gitlab рдПрдХ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╡рд╛рд╣ рдЖрд░реЗрдЦ рдмрдирд╛рддрд╛ рд╣реИред рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИрдВ (рдЬрдм: рдореИрдиреБрдЕрд▓ рдкреИрд░рд╛рдореАрдЯрд░)ред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдбреЗрд╡рд▓рдкрд░, рдкрд░реАрдХреНрд╖рдг рд╕реНрдерд▓ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкреВрд░реЗ рдХрдВрдЯреЗрдирд░ рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд┐рдирд╛ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЕрдкрдиреЗ рд╕рдВрдкрд╛рджрди рдЦреАрдВрдЪ рд╕рдХреЗред рдПрдХ рдФрд░ рдХрд╛рд░рдг рдбреЛрдореЗрди рдирд╛рдо рд╣реИ - рд╕рд╛рдЗрдЯ $ CI_PIPELINE_ID.test, рдЬрд╣рд╛рдВ CI_PIPELINE_ID рдЕрд╕реЗрдВрдмрд▓реА рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рдбреЛрдореЗрди site123.test рдХреЗ рд╕рд╛рде рд╕рд╛рдЗрдЯ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛, рдФрд░ рдЧрд░реНрдо рд╕рдВрдкрд╛рджрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдбреЗрд╡рд▓рдкрд░ рддреБрд░рдВрдд рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдбрд╛рд▓рддрд╛ рд╣реИред
Ssh рдирд┐рд╖реНрдкрд╛рджрдХ рдХреА рдПрдХ рдЫреЛрдЯреА рд╡рд┐рд╢реЗрд╖рддрд╛ред рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдкрд░, рдкреНрд░рдкрддреНрд░ рдХрд╛ рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
/home//builds/_runner/0/_/_
рдЗрд╕рд▓рд┐рдП, рдПрдХ рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝реА рдЧрдИ рдереА
cd ../ && cp -r $CI_PROJECT_NAME $CI_PIPELINE_ID && cd $CI_PIPELINE_ID
рдЗрд╕рдореЗрдВ, рд╣рдо рдКрдкрд░ рдХреЗ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирдВрдмрд░ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдирдВрдмрд░ рд╡рд╛рд▓реЗ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВред рддреЛ рдЖрдк рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдХрдИ рд╢рд╛рдЦрд╛рдУрдВ рдХреЛ рддреИрдирд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣реИрдВрдбрд▓рд░ рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ, рдЖрдкрдХреЛ рд▓реЙрдХ рдХреЛ рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрдИ рд╢рд╛рдЦрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рд╕реНрдкрд╖реНрдЯ рдЪрд░рдг рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ рдФрд░ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ, рдЖрдкрдХреЛ рд░реВрдЯ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрдХреЛ рдкрд╛рд╕рд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ | sudo -S rm рдЬрд╣рд╛рдБ рдкрд╛рд╕рд╡рд░реНрдб рдЖрдкрдХрд╛ рдкрд╛рд╕рд╡рд░реНрдб рд╣реИред
рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣
рд╕рдордп-рд╕рдордп рдкрд░, рдЖрдкрдХреЛ рдЕрдкреНрд░рдпреБрдХреНрдд рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддрд╛рдХрд┐ рдЬрдЧрд╣ рдирд╣реАрдВ рд▓реА рдЬрд╛ рд╕рдХреЗ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдореБрдХреБрдЯ рдореЗрдВ рдРрд╕реА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рдЯрдХреА рд╣реБрдИ рд╣реИред
рджрд┐рди рдореЗрдВ рдПрдХ рдмрд╛рд░ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдиреЗ рд╣рдореЗрдВ рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдФрд░ рд░рд┐рд▓реАрдЬрд╝ рдХреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреАред рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░, рд░рдЪрдирд╛рддреНрдордХ рдЖрд▓реЛрдЪрдирд╛ рд╕реНрд╡реАрдХрд╛рд░ рдХреА рдЬрд╛рддреА рд╣реИред
рдмреЛрдирд╕
рд╣рд░ рдмрд╛рд░ рдбреЙрдХрдлрд╛рдЗрд▓ рд╕реЗ рдЫрд╡рд┐рдпрд╛рдВ рдПрдХрддреНрд░ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд╛рдиреАрдп рдбреЙрдХрдЯрд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдлрд╝рд╛рдЗрд▓ docker-compose.yml registry: restart: always image: registry:2 ports: - 5000:5000 volumes: - /opt/docker-registry/data:/var/lib/registry
рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ (!!!), рд▓реЗрдХрд┐рди рдпрд╣ рдЧреИрд░-рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИред
рдЖрдк рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЧрд┐рдЯрд▓реИрдм рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
gitlab_rails['registry_enabled'] = true gitlab_rails['registry_host'] = "registry.test" gitlab_rails['registry_port'] = "5000"
рдЙрд╕рдХреЗ рдмрд╛рдж, рдЧрд┐рдЯрд▓реИрдм рдореЗрдВ рдЫрд╡рд┐рдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ
