рдореИрдВрдиреЗ 90 рдХреЗ рджрд╢рдХ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЕрдкрдиреА рдкрд╣рд▓реА рд╕рд╛рдЗрдЯреЗрдВ рд▓рд┐рдЦреА рдереАрдВред рддрдм рдЙрдиреНрд╣реЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд▓рд╛рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рдерд╛ред рдХреБрдЫ рд╕рд╛рдЭрд╛ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкрд░ рдПрдХ рдЕрдкрд╛рдЪреЗ рд╕рд░реНрд╡рд░ рдерд╛, рдЖрдк рдПрдлрд╝рдЯреАрдкреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕ рд╕рд░реНрд╡рд░ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд▓рд╛рдЗрди рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ ftp://ftp.example.com
ред рдлрд┐рд░ рд╕рд░реНрд╡рд░ рдореЗрдВ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░рдирд╛ рдФрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рдЕрдиреНрдп рд╕рдордп рдереЗ, рдЕрдм рд╕реЗ рд╕рдм рдХреБрдЫ рдЖрд╕рд╛рди рдерд╛ред рдкрд┐рдЫрд▓реЗ рджреЛ рджрд╢рдХреЛрдВ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдмрджрд▓ рдЧрдпрд╛ рд╣реИред рд╕рд╛рдЗрдЯреЗрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЧрдИ рд╣реИрдВ, рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЬрд╛рд░реА рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрдиреНрд╣реЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ рдПрдХрд▓ рд╕рд░реНрд╡рд░ рд▓реЛрдб рдмреИрд▓реЗрдиреНрд╕рд░реНрд╕ рдХреЗ рдкреАрдЫреЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рд░реНрд╡рд░реЛрдВ рдХреА рдмрд╣реБрд▓рддрд╛ рдмрди рдЧрдпрд╛ рд╣реИ; рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдо рд╣реЛ рдЧрдпрд╛ рд╣реИред
рдореЗрд░реА рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдерд╛ред рдФрд░ рдореБрдЭреЗ рдкрддрд╛ рдерд╛ рдХрд┐ рдореБрдЭреЗ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдПрдХ рд╕рд╛рдЗрдЯ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдПрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рддреЗ рд╣реБрдП: master
рдЧрд┐рдЯрд╣рдм рдкрд░ рдПрдХ рд╢рд╛рдЦрд╛ рдХреЛ рдХреЛрдб рд▓рд┐рдЦрдирд╛ ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореБрдЭреЗ рдкрддрд╛ рдерд╛ рдХрд┐ рдЕрдкрдиреЗ рдЫреЛрдЯреЗ рд╕реЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ рд╡рд┐рд╢рд╛рд▓ рдХреБрдмреЗрд░рдиреЗрдЯ рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдпрд╛ рдбреЙрдХрд░ рдЭреБрдВрдб рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдпрд╛ рдкреЙрдбреНрд╕, рдПрдЬреЗрдВрдЯреЛрдВ рдФрд░ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреА рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░реНрд╡рд░ рдкрд╛рд░реНрдХ рдмрдирд╛рдП рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдпрдерд╛рд╕рдВрднрд╡ рдХрд╛рд░реНрдп рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рдХреНрд╖реНрдп рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд╕реАрдЖрдИ / рд╕реАрдбреА рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАредрдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдо рдПрдХ Node.js рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ) рдФрд░ рдЖрдк рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рддреИрдирд╛рддреА рдХреЛ рдХреИрд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рднрдВрдбрд╛рд░ рдореЗрдВ рдХреНрдпрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдХреНрдпрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛ рд╕рдХрддреА рд╣реИредрдЖрд╡рд╢реНрдпрдХ рд╢рд░реНрддреЗрдВ
рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдкрд╛рдардХ рдХреЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдмреБрдирд┐рдпрд╛рджреА рдЬреНрдЮрд╛рди рдФрд░ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдиреНрд╣реЗрдВ рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рдФрд░ рдбреЙрдХрд░ рд╣рдм рдЦрд╛рддреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА редрд▓рдХреНрд╖реНрдп
рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдмрд┐рдирд╛ рд╢рд░реНрдд "рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдореИрдиреБрдЕрд▓" рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдореИрдВ рдЬреЛ рдХреБрдЫ рднреА рд╕реАрдЦрддрд╛ рд╣реВрдВ рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдХреЛрдб рдХреЗ рдкрд░реАрдХреНрд╖рдг рдФрд░ рддреИрдирд╛рддреА рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдореБрдЭреЗ рд╕реВрдЯ рдХрд░рддрд╛ рд╣реИ, рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд╛рд╕ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛редрдЗрд╕ рддрд░рд╣ рдореЗрд░реЗ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХрд╛ рдЕрдВрдд рд╣реБрдЖредрд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА рдХрд┐рд╕реА рднреА рд╢рд╛рдЦрд╛ рдХреЛ рднреЗрдЬреЗ рдЧрдП рдХреЛрдб рдХреЛ рдЫреЛрдбрд╝рдХрд░, master
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рд┐рдпрд╛рдПрдВ рдХреА рдЬрд╛рддреА рд╣реИрдВ:- рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рдкрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдгред
- рд╕рднреА рдЗрдХрд╛рдИ, рдПрдХреАрдХрд░рдг рдФрд░ рдПрдВрдб-рдЯреВ-рдПрдВрдб рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдХреЗрд╡рд▓ рдЙрд╕ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЬреЛ master
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реЛрд▓реНрдб рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИ :- рдКрдкрд░ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╕рднреА, рдкреНрд▓рд╕ ...
- рд╡рд░реНрддрдорд╛рди рдХреЛрдб, рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдФрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдбреЙрдХрд░ рдЫрд╡рд┐ рдмрдирд╛рдПрдВред
- рдбреЙрдХрд░ рд╣рдм рдкрд░ рдПрдХ рдЫрд╡рд┐ рд░рдЦрдирд╛ред
- рдЙрддреНрдкрд╛рджрди рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрд╢рдиред
- рдбреЙрдХрд░ рд╣рдм рд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдЫрд╡рд┐ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ред
- рд╡рд░реНрддрдорд╛рди рдХрдВрдЯреЗрдирд░ рдХреЛ рд░реЛрдХреЗрдВ рдФрд░ рдирдИ рдЫрд╡рд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдирдпрд╛ рд╢реБрд░реВ рдХрд░реЗрдВред
рдпрджрд┐ рдЖрдк рдбреЙрдХрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдХреБрдЫ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рддреЛ рдЫрд╡рд┐рдпреЛрдВ рдФрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ - рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВред рдореИрдВ рдЖрдк рд╕рднреА рдХреЛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реВрдБредCI / CD рдХреНрдпрд╛ рд╣реИ?
рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо CI / CD рдХрд╛ рдЕрд░реНрде рд╣реИ "рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг / рдирд┐рд░рдВрддрд░ рддреИрдирд╛рддреА" - "рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг / рдирд┐рд░рдВрддрд░ рддреИрдирд╛рддреАред"Integration рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг
рд╕рддрдд рдПрдХреАрдХрд░рдг рдПрдХ рдРрд╕реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рджреМрд░рд╛рди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реНрд░реЛрдд рдХреЛрдб (рдЖрдорддреМрд░ рдкрд░ рдПрдХ рд╢рд╛рдЦрд╛ master
) рдХреЗ рдореБрдЦреНрдп рднрдВрдбрд╛рд░ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ ред рдЙрд╕реА рд╕рдордп, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рдЖрдпреЛрдЬрд┐рдд рдХрд░рдХреЗ рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИредLoyment рд╕рддрдд рддреИрдирд╛рддреА
рдирд┐рд░рдВрддрд░ рддреИрдирд╛рддреА рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдХреЛрдб рдХреА рд▓рдЧрд╛рддрд╛рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рддреИрдирд╛рддреА рд╣реИред рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо CI / CD рдХреЗ рджреВрд╕рд░реЗ рднрд╛рдЧ рдХреЛ рдХрднреА-рдХрднреА "рдирд┐рд░рдВрддрд░ рд╡рд┐рддрд░рдг" ("рдирд┐рд░рдВрддрд░ рд╡рд┐рддрд░рдг") рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдХрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, "рдирд┐рд░рдВрддрд░ рдкрд░рд┐рдирд┐рдпреЛрдЬрди" рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди "рдирд┐рд░рдВрддрд░ рд╡рд┐рддрд░рдг" рд╕реЗ рддрд╛рддреНрдкрд░реНрдп рд╣реИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдореИрдиреНрдпреБрдЕрд▓ рдкреБрд╖реНрдЯрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛редрдХрд╛рдо рдХреА рд╢реБрд░реБрдЖрдд
рдЬрд┐рд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХреА, рдЙрд╕реЗ рдЯреЗрдХрдиреЛрдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдпрд╣ рд╡реЗрдм рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдореИрдВ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕реЗ рдиреЛрдЯреНрд╕ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкрд╣рд▓реЗ рддреЛ рдореИрдВрдиреЗ рдиреЗрдЯрд▓рд╛рдЗрдл рджреНрд╡рд╛рд░рд╛ рдкреЗрд╢ рдХреА рдЧрдИ рдорд╛рдирдХ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдФрд░ рддреИрдирд╛рддреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░реНрд╡рд░ рдХреЗ рдмрд┐рдирд╛ JAMStack рдкреНрд░реЛрдЬреЗрдХреНрдЯ, рдпрд╛ рд╕рд░реНрд╡рд░ рдХреЗ рдмрд┐рдирд╛ рд╕рд┐рд░реНрдл рдПрдХ рдлреНрд░рдВрдЯрдПрдВрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА ред рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдмрдврд╝рддреА рдЧрдИ, рдореБрдЭреЗ рдЗрд╕рдХреЗ рд╕рд░реНрд╡рд░ рднрд╛рдЧ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реБрдИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рдерд╛ рдХрд┐ рдореБрдЭреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдПрдХреАрдХрд░рдг рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд░рдгрдиреАрддрд┐ рдмрдирд╛рдиреА рд╣реЛрдЧреАредрдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдХ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд╕рд░реНрд╡рд░ рд╣реИ рдЬреЛ Node.js рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдПрдХ-рдкреГрд╖реНрда рд░рд┐рдПрдХреНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╕реЗрд╡рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рд╕рд░реНрд╡рд░ рдПрдкреАрдЖрдИ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдЗрд╕ рдкреВрд░реНрдг-рд╕реНрдЯреИрдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдореЗрдВ рдорд┐рд▓реА рд░рдгрдиреАрддрд┐ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИ редрдореИрдВрдиреЗ рдПрдХ рджреЛрд╕реНрдд рдХреЗ рд╕рд╛рде рдкрд░рд╛рдорд░реНрд╢ рдХрд┐рдпрд╛, рдЬреЛ рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рди рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рд╣реИ рдФрд░ рдЙрд╕рд╕реЗ рдкреВрдЫрд╛ рдХрд┐ рдореБрдЭреЗ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЬрд╝рд░реВрд░рдд рдереА, рдЙрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ рдПрдХ рд╡рд┐рдЪрд╛рд░ рджрд┐рдпрд╛ рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓рдХреНрд╖реНрдп рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреИрд╕рд╛ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдРрд╕реЗ рд▓рдХреНрд╖реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рд╣реИрдВ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдбреЙрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПредрдбрд╛рдХ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗрд╡рд╛рд▓рд╛ рдордЬрд╝рджреВрд░
рдбреЙрдХрд░ рдПрдХ рдРрд╕рд╛ рдЙрдкрдХрд░рдг рд╣реИ, рдЬреЛ рдХрдВрдЯреЗрдирд░реАрдХрд░рдг рддрдХрдиреАрдХ рдХреА рдмрджреМрд▓рдд, рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЙрдиреНрд╣реЗрдВ рддреИрдирд╛рдд рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЙрд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдбреЙрдХрд░ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реЛред рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдЕрдкрдиреЗ рдирд┐рдкрдЯрд╛рди рдореЗрдВ рдбреЙрдХрд░ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓реНрд╕ (рд╕реАрдПрд▓рдЖрдИ) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдбреЙрдХрд░ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдФрд░ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕рд╕реЗ рд╕реАрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдерд╛рдкрдирд╛ рдХрд╛ рдкрд╣рд▓рд╛ рдЪрд░рдг рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдбреЙрдХрд░ рдбреЗрд╕реНрдХрдЯреЙрдк (рдореИрдХ рдпрд╛ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП) рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛редрдбреЛрдХрд░ рд╣рдм рдХреЗ рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реИ GitHub Git рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП, рдпрд╛ NPM рд░рдЬрд┐рд╕реНрдЯреНрд░реАрдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрдХреБрд▓ рдХреЗ рд▓рд┐рдПред рдпрд╣ рдбреЙрдХрд░ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдСрдирд▓рд╛рдЗрди рднрдВрдбрд╛рд░ рд╣реИред рдпрд╣ рдЗрд╕реЗ рдбреЙрдХрд░ рдбреЗрд╕реНрдХрдЯреЙрдк рд╕реЗ тАЛтАЛрдЬреЛрдбрд╝рддрд╛ рд╣реИредрдЗрд╕рд▓рд┐рдП, рдбреЙрдХрд░ рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рджреЛ рдХрд╛рдо рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ:рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдбреЙрдХрд░ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЙрдХрд░ рд╕реАрдПрд▓рдЖрдИ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдЪрд▓рд╛рдХрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ:docker -v
рдЕрдЧрд▓рд╛, рджрд░реНрдЬ рдХрд░рдХреЗ рдбреЛрдХрд░ рд╣рдм рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░реЗрдВ, рдЬрдм рдкреВрдЫрд╛ рдЬрд╛рдП, рддреЛ рдЖрдкрдХрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб:docker login
рдбреЙрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЫрд╡рд┐рдпреЛрдВ рдФрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рд┐рдПредтЦН рдЫрд╡рд┐рдпрд╛рдБ
рдПрдХ рдЫрд╡рд┐ рдПрдХ рдпреЛрдЬрдирд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдХрдВрдЯреЗрдирд░ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВред рдпрд╣ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдПрдХ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕реНрдиреИрдкрд╢реЙрдЯ рд╣реИред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЖрд╕рд╛рдиреА рд╕реЗ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред#
docker images
рдпрд╣ рдХрдорд╛рдВрдб рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢реАрд░реНрд╖рдХ рдХреЗ рд╕рд╛рде рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧреА:REPOSITORY TAG IMAGE ID CREATED SIZE
---
рдЕрдЧрд▓рд╛, рд╣рдо рдПрдХ рд╣реА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдХрдорд╛рдВрдб рдХреЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ - рдкрд╣рд▓реЗ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд╕рд╛рде рдПрдХ рдХрдорд╛рдВрдб рдЖрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдпрд╣ рдЖрдЙрдЯрдкреБрдЯ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИредтЦНContainers
рдПрдХ рдХрдВрдЯреЗрдирд░ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдкреИрдХреЗрдЬ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд╣ рд╕рдм рдХреБрдЫ рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдПрдХ рдЖрд╡реЗрджрди рд╣рдореЗрд╢рд╛ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рд╣реА рдХрд╛рдо рдХрд░реЗрдЧрд╛: рдПрдХ рдЕрд▓рдЧ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдФрд░ рдПрдХ рд╣реА рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВред рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рд╡рд╛рддрд╛рд╡рд░рдгреЛрдВ рдореЗрдВ, рдПрдХ рд╣реА рдЫрд╡рд┐ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред#
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
---
тЦНTags
рдПрдХ рдЯреИрдЧ рдПрдХ рдЫрд╡рд┐ рдХреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдПрдХ рд╕рдВрдХреЗрдд рд╣реИредтЦН рдбреЙрдХрд░ рдХрдорд╛рдВрдб рд╕рд╛рд░рд╛рдВрд╢
рдпрд╣рд╛рдБ рдХреБрдЫ рдЖрдорддреМрд░ рдкрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдбреЙрдХрд░ рдХрдорд╛рдВрдб рдХрд╛ рдЕрд╡рд▓реЛрдХрди рд╣реИредF рдбреЙрдХрд░рдлрд╛рдЗрд▓
рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЙрддреНрдкрд╛рджрди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреИрд╕реЗ рдЪрд▓рд╛рдирд╛ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИ рдЬреЛ рддреИрдпрд╛рд░-рдХрд┐рдП рдЧрдП рд░рд┐рдПрдХреНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдЧрд▓рд╛, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдХрдорд╛рдВрдб рд╣реИ рдЬреЛ рдкреЛрд░реНрдЯ рдкрд░ Node.js- рдЖрдзрд╛рд░рд┐рдд рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ 5000
ред рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ:npm i #
npm run build # React-
npm run start # Node-
рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЖрд╡реЗрджрди рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ, рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдХреЛрдИ рднреА рд╕рд░рд▓ рдиреЛрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЙрдкрдпреБрдХреНрдд рд╣реИредрдХрдВрдЯреЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдбреЙрдХрд░ рдХреЛ рдирд┐рд░реНрджреЗрд╢ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ Dockerfile
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд╕реНрдерд┐рдд рдлрд╛рдЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдлрд╝рд╛рдЗрд▓, рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ, рдмрд╣реБрдд рдЕрд╕реНрдкрд╖реНрдЯ рд▓рдЧрддреА рд╣реИредрд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдХреНрдпрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдХреЗрд╡рд▓ рд╡рд┐рд╢реЗрд╖ рдЖрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде, рдПрдХ рдХрд╛рдо рдХреЗ рдорд╛рд╣реМрд▓ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рди рд╣реИред рдпрд╣рд╛рдБ рдЗрди рдЖрджреЗрд╢реЛрдВ рдореЗрдВ рд╕реЗ рдХреБрдЫ рд╣реИрдВ:- FROM - рдпрд╣ рдХрдорд╛рдВрдб рдПрдХ рдлрд╛рдЗрд▓ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдореВрд▓ рдЫрд╡рд┐ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
- рдХреЙрдкреА - рдПрдХ рд╕реНрдерд╛рдиреАрдп рд╕реНрд░реЛрдд рд╕реЗ рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБред
- рдХрд╛рд░реНрдп - рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рд╕реНрдерд╛рдкрдирд╛ред
- RUN - рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдВред
- рд╡рд┐рд╕реНрддрд╛рд░ - рдкреЛрд░реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ред
- ENTRYPOINT - рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред
Dockerfile
рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ:#
FROM node:12-alpine
# app/
COPY . app/
# app/
WORKDIR app/
# ( npm ci npm i, )
RUN npm ci --only-production
# React-
RUN npm run build
#
EXPOSE 5000
# Node-
ENTRYPOINT npm run start
рдЪрдпрдирд┐рдд рдЖрдзрд╛рд░ рдЫрд╡рд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрдкрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдХреБрдЫ рдмреБрдирд┐рдпрд╛рджреА рдЫрд╡рд┐рдпрд╛рдВ (рдЬреИрд╕реЗ рдХрд┐ рдиреЛрдб рдЕрд▓реНрдкрд╛рдЗрди рд▓рд┐рдирдХреНрд╕) рдЙрдиреНрд╣реЗрдВ рдпрдерд╛рд╕рдВрднрд╡ рдХреЙрдореНрдкреИрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ рд╣реИрдВред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЧрд┐рдиреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рд╕реЗ рдХреБрдЫ рди рд╣реЛрдВредтЦН рдирд┐рд░реНрдорд╛рдг, рдЯреИрдЧ рдФрд░ рд▓реЙрдиреНрдЪ рдХрдВрдЯреЗрдирд░
рдХрдВрдЯреЗрдирд░ рдХреА рд╕реНрдерд╛рдиреАрдп рдЕрд╕реЗрдВрдмрд▓реА рдФрд░ рд▓реЙрдиреНрдЪ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж Dockerfile
, рдХрд╛рд░реНрдп рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИрдВред рдбреЙрдХрд░ рд╣рдм рдореЗрдВ рдПрдХ рдЫрд╡рд┐ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИредтЦН рд╡рд┐рдзрд╛рдирд╕рднрд╛
рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдПрдХ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдЫрд╡рд┐ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ , рдФрд░, рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдПрдХ рдЯреИрдЧ (рдпрджрд┐ рдЯреИрдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╕рд┐рд╕реНрдЯрдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЫрд╡рд┐ рдХреЛ рдПрдХ рдЯреИрдЧ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ latest
)ред#
docker build -t <image>:<tag> .
рдЗрд╕ рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдпрд╣ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдбреЛрдХрд░ рдЫрд╡рд┐ рдХреИрд╕реЗ рдмрдирд╛рддрд╛ рд╣реИредSending build context to Docker daemon 2.88MB
Step 1/9 : FROM node:12-alpine
---> ... ...
Successfully built 123456789123
Successfully tagged <image>:<tag>
рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ рдХреБрдЫ рдорд┐рдирдЯ рд▓рдЧ рд╕рдХрддреЗ рд╣реИрдВ - рдпрд╣ рд╕рдм рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд┐рддрдиреА рдирд┐рд░реНрднрд░рддрд╛ рд╣реИред рдЕрд╕реЗрдВрдмрд▓реА рдкреВрд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ docker images
рдФрд░ рдЕрдкрдиреА рдирдИ рдЫрд╡рд┐ рдХреЗ рд╡рд┐рд╡рд░рдг рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВредREPOSITORY TAG IMAGE ID CREATED SIZE
<image> latest 123456789123 About a minute ago x.xxGB
тЦНStart
рдЫрд╡рд┐ рдмрдирд╛рдИ рдЧрдИ рд╣реИред рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдХрдВрдЯреЗрдирд░ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдЪреВрдВрдХрд┐ рдореИрдВ рдЕрдЧрд▓реЗ рдЖрджреЗрд╢ рдореЗрдВ localhost:5000
рдЬреЛрдбрд╝реА рдХреЗ рдмрд╛рдИрдВ рдУрд░ 5000:5000
рд╕реНрдерд╛рдкрд┐рдд рдкрддреЗ рдкрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ 5000
ред рджрд╛рдИрдВ рдУрд░ рдХрдВрдЯреЗрдирд░ рдкреЛрд░реНрдЯ рд╣реИред# 5000 5000
docker run -p 5000:5000 <image>:<tag>
рдЕрдм рдЬрдм рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдпрд╛ рдФрд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЖрдк docker ps
рдЗрд╕ рдХрдВрдЯреЗрдирд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдпрд╛ рдЖрдк рдЙрд╕ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ docker ps -a
рд╕рднреА рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рди рдХрд┐ рдХреЗрд╡рд▓ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ)редCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
987654321234 <image> "/bin/sh -c 'npm runтАж" 6 seconds ago Up 6 seconds 0.0.0.0:5000->5000/tcp stoic_darwin
рдпрджрд┐ рдЖрдк рдЕрдм рдкрддреЗ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ localhost:5000
, рддреЛ рдЖрдк рдХрд╛рд░реНрдпрд╢реАрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╛ рдкреГрд╖реНрда рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдареАрдХ рдЙрд╕реА рдкреНрд░рдХрд╛рд░ рджрд┐рдЦрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдЙрддреНрдкрд╛рджрди рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╛ рдкреГрд╖реНрдаредтЦН рдЯреИрдЧ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдФрд░ рдкреНрд░рдХрд╛рд╢рди
рдЙрддреНрдкрд╛рджрди рд╕рд░реНрд╡рд░ рдкрд░ рдмрдирд╛рдИ рдЧрдИ рдЫрд╡рд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрд╕ рдЫрд╡рд┐ рдХреЛ рдбреЙрдХрд░ рд╣рдм рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдбреЙрдХрд░ рд╣рдм рдкрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рднрдВрдбрд╛рд░ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣рдорд╛рд░реЗ рдирд┐рдкрдЯрд╛рди рдореЗрдВ рдПрдХ рдЬрдЧрд╣ рд╣реЛрдЧреА рдЬрд╣рд╛рдВ рдЖрдк рдЫрд╡рд┐ рдХреЛ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЫрд╡рд┐ рдХрд╛ рдирд╛рдо рдмрджрд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдЗрд╕рдХрд╛ рдирд╛рдо рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдбреЙрдХрдЯрд░ рд╣рдм рд╕реЗ рд╢реБрд░реВ рд╣реЛред рдЗрд╕рдХреЗ рдмрд╛рдж рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдирд╛рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдирд╛рдо рдХреЗ рдЕрдВрдд рдореЗрдВ рдХреЛрдИ рднреА рдЯреИрдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЗрд╕ рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд╛рдордХрд░рдг рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИредрдЕрдм рдЖрдк рдПрдХ рдирдП рдирд╛рдо рдХреЗ рд╕рд╛рде рдЫрд╡рд┐ рдПрдХрддреНрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ docker push
рдЗрд╕реЗ рдбреЙрдХрд░ рд╣рдм рднрдВрдбрд╛рд░ рдореЗрдВ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВредdocker build -t <username>/<repository>:<tag> .
docker tag <username>/<repository>:<tag> <username>/<repository>:latest
docker push <username>/<repository>:<tag>
# , , :
docker build -t user/app:v1.0.0 .
docker tag user/app:v1.0.0 user/app:latest
docker push user/app:v1.0.0
рдпрджрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЫрд╡рд┐ рдбреЙрдХрд░ рд╣рдм рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧреА рдФрд░ рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредрдЕрдЧрд▓рд╛ рдХрджрдо
рдЖрдЬ рддрдХ, рд╣рдордиреЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрд╡реЗрджрди, рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣рдордиреЗ рдбреЙрдХрдЯрд░ рд╣рдм рдореЗрдВ рдХрдВрдЯреЗрдирд░ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рд▓рдХреНрд╖реНрдп рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫреА рдкреНрд░рдЧрддрд┐ рдХрд░ рд▓реА рд╣реИред рдЕрдм рд╣рдореЗрдВ рджреЛ рдФрд░ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:- рдХреЛрдб рдХреЗ рдкрд░реАрдХреНрд╖рдг рдФрд░ рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП рдПрдХ CI рдЯреВрд▓ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ред
- рдЙрддреНрдкрд╛рджрди рд╕рд░реНрд╡рд░ рд╕реЗрдЯ рдХрд░рдирд╛ рддрд╛рдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рдХреЛрдб рдХреЛ рд▓реЛрдб рдФрд░ рдЪрд▓рд╛ рд╕рдХреЗред
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реАрдЖрдИ / рд╕реАрдбреА рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдПрдХ рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ - DitigalOcean редрдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣рд╛рдВ рдЖрдк рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдПрдХ рдФрд░ рд╕рдВрдпреЛрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рд╕рд░реНрдХрд┐рд▓рд╕реАрдЖрдИ рдпрд╛ рдЬреАрдердм рдПрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ DigitalOcean рдХреЗ рдмрдЬрд╛рдп - AWS рдпрд╛ Linodeредрд╣рдордиреЗ рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдФрд░ рдЗрд╕ рд╕реЗрд╡рд╛ рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЕрдм рдореИрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдЗрд╕реЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПредрдЯреНрд░реИрд╡рд┐рд╕ рд╕реА.рдЖрдИ.
рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рдХреЛрдб рдХреЗ рдкрд░реАрдХреНрд╖рдг рдФрд░ рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рд╣реИред рдореИрдВ рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреА рдкреЗрдЪреАрджрдЧрд┐рдпреЛрдВ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддрд╛, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЕрджреНрд╡рд┐рддреАрдп рд╣реИ, рдФрд░ рдЗрд╕рд╕реЗ рдмрд╣реБрдд рд▓рд╛рдн рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдореИрдВ рдЖрдкрдХреЛ рдЙрди рдореВрд▓ рдмрд╛рддреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдЬреЛ рдЖрдкрдХреЛ рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдкрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдЖрдк рдЬреЛ рднреА рдЪреБрдирддреЗ рд╣реИрдВ - рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ, рд╕рд░реНрдХрд┐рд▓рд╕реА, рдЬреЗрдирдХрд┐рдВрд╕, рдпрд╛ рдХреБрдЫ рдФрд░, рд╕рдорд╛рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рд░ рдЬрдЧрд╣ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛редрдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП , рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЬрд╛рдПрдВрдФрд░ рдПрдХ рдЦрд╛рддрд╛ рдмрдирд╛рдПрдБред рдлрд┐рд░ рдЕрдкрдиреЗ GitHub рдЦрд╛рддреЗ рдХреЗ рд╕рд╛рде рдЯреНрд░реИрд╡рд┐рд╕ CI рдХреЛ рдПрдХреАрдХреГрдд рдХрд░реЗрдВред рд╕рд┐рд╕реНрдЯрдо рд╕реЗрдЯрдЕрдк рдХреЗ рджреМрд░рд╛рди, рдЖрдкрдХреЛ рдЙрд╕ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕реЗ рдЖрдк рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдВред (рдореИрдВ GitHub рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЯреНрд░реИрд╡рд┐рд╕ CI BitBucket, GitLab, рдФрд░ рдЕрдиреНрдп рд╕рдорд╛рди рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ)редрд╣рд░ рдмрд╛рд░ рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рдХреЛ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рд╕рд░реНрд╡рд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрджреЗрд╢реЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╢рд╛рдЦрд╛рдУрдВ рдХреА рддреИрдирд╛рддреА рднреА рд╢рд╛рдорд┐рд▓ рд╣реИредCycle рдХрд╛рд░реНрдп рдЬреАрд╡рди рдЪрдХреНрд░
рдЯреНрд░реИрд╡рд┐рд╕ CI рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓, рдЬрд┐рд╕реЗ .travis.yml
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдореВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ , рдиреМрдХрд░реА рдЬреАрд╡рди рдЪрдХреНрд░ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ ред рдЗрди рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЙрд╕ рдХреНрд░рдо рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡реЗ рдШрдЯрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ:apt addons
cache components
before_install
install
before_script
script
before_cache
after_success after_failure
before_deploy
deploy
after_deploy
after_script
тЦНTesting
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдореИрдВ рд╕реНрдерд╛рдиреАрдп рдЯреНрд░реИрд╡рд┐рд╕ CI рд╕рд░реНрд╡рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рдиреЛрдб 12 рдХреЛ рдЪреБрдирд╛ рдФрд░ рдбреЙрдХрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдмрддрд╛рдпрд╛редрдЬрдм рд╕рдм рдХреБрдЫ рд╕реВрдЪреАрдмрджреНрдз рд╣реИ, .travis.yml
рддрдм рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрдм рд╕рднреА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА рд╕рднреА рд╢рд╛рдЦрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдЕрдиреНрдпрдерд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рди рд╣реЛред рдпрд╣ рдПрдХ рдЙрдкрдпреЛрдЧреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдо рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдб рд╢рд╛рдЦрд╛ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ master
рдФрд░ рдХреНрдпрд╛ рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░реЗрдЧрд╛ред рдЗрд╕ рд╡реИрд╢реНрд╡рд┐рдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ, рдореИрдВ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╕рдм рдХреБрдЫ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рд╡реЗрдмрдкреИрдХ рдбреЗрд╡рд▓рдкрд░ рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░реЗрдВ (рдпрд╣ рдореЗрд░реЗ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ) рдФрд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдВредрдпрджрд┐ рдЖрдк рдкрд░реАрдХреНрд╖рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХреЛрдб рдХрд╡рд░реЗрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рднрдВрдбрд╛рд░ рдкрд░ рдЖрдЗрдХрди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣рд╛рдВ рдЖрдк рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдФрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЗрд╕реНрдЯ, рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рдФрд░ рдХрд╡рд░реЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд┐рд░реНрджреЗрд╢ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВредрддреЛ рдпрд╣рд╛рдБ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рд╣реИ .travis.yml
:#
language: node_js
# Node.js
node_js:
- '12'
services:
# Docker
- docker
install:
#
- npm ci
before_script:
#
- npm run dev &
script:
#
- npm run test
рдпрд╣рд╛рдВ рд╡реЗ рдХреНрд░рд┐рдпрд╛рдПрдВ рдЬреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА рд╕рднреА рд╢рд╛рдЦрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреА рдЬрд╛рддреА рд╣реИрдВ рдФрд░ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВредтЦН рддреИрдирд╛рддреА
рдЗрд╕ рдзрд╛рд░рдгрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐ рд╕рднреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░реЗ рд╣реЛ рдЧрдП рд╣реИрдВ, рд╣рдо рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдЙрддреНрдкрд╛рджрди рд╕рд░реНрд╡рд░ рдкрд░ рдХреЛрдб рддреИрдирд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рд╣рдо рдХреЗрд╡рд▓ рдПрдХ рд╢рд╛рдЦрд╛ рд╕реЗ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ master
, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ рдЙрдкрдпреБрдХреНрдд рдирд┐рд░реНрджреЗрд╢ рджреЗрддреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдЬрд┐рд╕реЗ рд╣рдо рдмрд╛рдж рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдореИрдВ рдЖрдкрдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕реЗ рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИредdeploy:
# Docker- Docker Hub
provider: script
script: bash deploy.sh
on:
branch: master
рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреЛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рддреА рд╣реИ:- рд╕реАрдЖрдИ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЙрдХрд░ рд╣рдм рдореЗрдВ рдЫрд╡рд┐ рдмрдирд╛рдПрдВ, рдЯреИрдЧ рдХрд░реЗрдВ рдФрд░ рднреЗрдЬреЗрдВ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рд╣реИ)ред
- рд╕рд░реНрд╡рд░ рдкрд░ рдЫрд╡рд┐ рд▓реЛрдб рдХрд░рдирд╛, рдкреБрд░рд╛рдиреЗ рдХрдВрдЯреЗрдирд░ рдХреЛ рд░реЛрдХрдирд╛ рдФрд░ рдирдпрд╛ рд╢реБрд░реВ рдХрд░рдирд╛ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рд░реНрд╡рд░ рдбрд┐рдЬрд┐рдЯрд▓ рдСрдпрди рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рдЪрд▓рддрд╛ рд╣реИ)ред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдбреЙрдХрдЯрд░ рд╣рдм рдореЗрдВ рдЫрд╡рд┐ рдХреЛ рдЕрд╕реЗрдВрдмрд▓ рдХрд░рдиреЗ, рдЯреИрдЧ рдХрд░рдиреЗ рдФрд░ рднреЗрдЬрдиреЗ рдХреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рд╕рдм рдмрд╣реБрдд рдХреБрдЫ рдРрд╕рд╛ рд╣реА рд╣реИ рдЬреИрд╕рд╛ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдерд╛, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдпрд╣рд╛рдБ рд╣рдореЗрдВ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрджреНрд╡рд┐рддреАрдп рдЯреИрдЧ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдФрд░ рд▓реЙрдЧрд┐рди рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рдгрдиреАрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореБрдЭреЗ рддреИрдирд╛рддреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдХреБрдЫ рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрдард┐рдирд╛рдЗрдпрд╛рдБ рдереАрдВ, рдЬреИрд╕реЗ рдЯреИрдЧрд┐рдВрдЧ рд░рдгрдиреАрддрд┐, рд▓реЙрдЧ рдЗрди рдХрд░рдирд╛, рдПрд╕рдПрд╕рдПрдЪ рдХреБрдВрдЬреА рдХреЛ рдХреВрдЯрдмрджреНрдз рдХрд░рдирд╛, рдПрд╕рдПрд╕рдПрдЪ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ред рд▓реЗрдХрд┐рди, рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдореЗрд░рд╛ рдкреНрд░реЗрдореА рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдмрд╛рд╢ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдХрдИ рдЕрдиреНрдп рдЪреАрдЬреЗрдВ рднреА рдХрд░рддрд╛ рд╣реИред рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдорджрдж рдХреАредрдЗрд╕рд▓рд┐рдП, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдкрд╣рд▓рд╛ рднрд╛рдЧ рдбреЙрдХрдЯрд░ рд╣рдм рдореЗрдВ рдЫрд╡рд┐ рднреЗрдЬ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рдЯреИрдЧрд┐рдВрдЧ рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ git рд╣реИрд╢ рдФрд░ git рдЯреИрдЧ рдХрд╛ рд╕рдВрдпреЛрдЬрди рд╢рд╛рдорд┐рд▓ рд╣реИ, рдпрджрд┐ рдХреЛрдИ рдореМрдЬреВрдж рд╣реИред рдпрд╣ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдЯреИрдЧ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЙрд╕ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреА рдкрд╣рдЪрд╛рди рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╡рд╣ рдЖрдзрд╛рд░рд┐рдд рд╣реИред DOCKER_USERNAME
рдФрд░ DOCKER_PASSWORD
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдЧрд▓рдд рд╣рд╛рдереЛрдВ рдореЗрдВ рди рдкрдбрд╝реЗредрдпрд╣рд╛рдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдкрд╣рд▓рд╛ рднрд╛рдЧ рд╣реИ deploy.sh
ред#!/bin/sh
set -e #
IMAGE="<username>/<repository>" # Docker
GIT_VERSION=$(git describe --always --abbrev --tags --long) # Git-
#
docker build -t ${IMAGE}:${GIT_VERSION} .
docker tag ${IMAGE}:${GIT_VERSION} ${IMAGE}:latest
# Docker Hub
echo "${DOCKER_PASSWORD}" | docker login -u "${DOCKER_USERNAME}" --password-stdin
docker push ${IMAGE}:${GIT_VERSION}
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рджреВрд╕рд░рд╛ рднрд╛рдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛ рдХрд┐ рдЖрдк рдХрд┐рд╕ рд╣реЛрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХрд╛ рдХрдиреЗрдХреНрд╢рди рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЪреВрдВрдХрд┐ рдореИрдВ рдбрд┐рдЬрд┐рдЯрд▓ рдорд╣рд╛рд╕рд╛рдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЙрдХреНрдЯрд▓ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред Aws рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ aws
, рдФрд░ рдЗрд╕реА рддрд░рд╣редрд╕рд░реНрд╡рд░ рд╕реЗрдЯ рдХрд░рдирд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рдерд╛ред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдмреЗрд╕ рдЗрдореЗрдЬ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдЫреЛрдЯреА рдмреВрдВрдж рд╕реНрдерд╛рдкрд┐рдд рдХреАред рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдореИрдВрдиреЗ рдЬрд┐рд╕ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЪреБрдирд╛ рд╣реИ, рдЙрд╕реЗ рдбреЛрдХрд░ рдХреА рдПрдХ рдмрд╛рд░ рдХреА рдореИрдиреНрдпреБрдЕрд▓ рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рдбреЙрдХрд░ рдХреЗ рдПрдХ рдмрд╛рд░ рдХреЗ рдореИрдиреБрдЕрд▓ рд▓реЙрдиреНрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдбреЙрдХрд░ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Ubuntu 18.04 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдЙрдмрдВрдЯреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рднреА рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдмрд╕ рдЗрд╕ рд╕рд░рд▓ рдЧрд╛рдЗрдб рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредрдореИрдВ рдпрд╣рд╛рдВ рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдорд╛рдВрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реВ рд╡рд┐рднрд┐рдиреНрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдмрд╣реБрдд рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдХреЗрд╡рд▓ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдпрдпреЛрдЬрдирд╛ рджреВрдВрдЧрд╛ рдЬреЛ рдПрд╕рдПрд╕рдПрдЪ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рдХреА рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:- рдЖрдкрдХреЛ рдЙрд╕ рдХрдВрдЯреЗрдирд░ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд░реЛрдХрдирд╛ рд╣реИред
- рдлрд┐рд░, рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ, рдЖрдкрдХреЛ рдПрдХ рдирдпрд╛ рдХрдВрдЯреЗрдирд░ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
- рдЖрдкрдХреЛ рд╕реНрдерд╛рдиреАрдп рд╕рд░реНрд╡рд░ рдкреЛрд░реНрдЯ рдХреЛ рдПрдХ рдореВрд▓реНрдп рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА
80
- рдпрд╣ рдЖрдкрдХреЛ example.com
рдкреЛрд░реНрдЯ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдлреЙрд░реНрдо рдХреЗ рдкрддреЗ рдкрд░ рд╕рд╛рдЗрдЯ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ , рдФрд░ рдЬреИрд╕реЗ рдкрддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ example.com:5000
ред - рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЖрдкрдХреЛ рд╕рднреА рдкреБрд░рд╛рдиреЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдФрд░ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд╕рд┐рд▓рд╕рд┐рд▓рд╛ рдЬрд╛рд░реА рд╣реИред# ID
CONTAINER_ID=$(docker ps | grep takenote | cut -d" " -f1)
# , ,
docker stop ${CONTAINER_ID}
docker run --restart unless-stopped -d -p 80:5000 ${IMAGE}:${GIT_VERSION}
docker system prune -a -f
рдХреБрдЫ рдмрд╛рддреЛрдВ рдкрд░ рдЧреМрд░ рдХрд░реЗрдВ
рд╢рд╛рдпрдж рдЬрдм рдЖрдк рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рд╕реЗ рдПрд╕рдПрд╕рдПрдЪ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рджрд┐рдЦрд╛рдИ рджреЗрдЧреА рдЬреЛ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЬрд╡рд╛рдм рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдЧрд╛редThe authenticity of host '<hostname> (<IP address>)' can't be established.
RSA key fingerprint is <key fingerprint>.
Are you sure you want to continue connecting (yes/no)?
рдореИрдВрдиреЗ рд╕реАрдЦрд╛ рдХрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреБрдВрдЬреА рдХреЛ рдЖрдзрд╛рд░ 64 рдореЗрдВ рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕реЗ рдПрдХ рдРрд╕реЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЬрд╛ рд╕рдХреЗ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реЛрдЧрд╛ред рд╕реНрдерд╛рдкрдирд╛ рдЪрд░рдг рдореЗрдВ, рдЖрдк рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдХреЛ рдбреАрдХреЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ known_hosts
рдЙрдкрд░реЛрдХреНрдд рддреНрд░реБрдЯрд┐ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ редecho <public key> | base64 # < , base64>
рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдпрд╣ рдХрдорд╛рдВрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддреА рд╣реИ:echo "123.45.67.89 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/BWDSU
GPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9jbhUFrviQzM7xlELEVf4h9lFX5QVkbPppSwg0cda3
Pbv7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSlVK/7XA
t3FaoJoAsncM1Q9x5+3V0Ww68/eIFmb1zuUFljQJKprrX88XypNDvjYNby6vw/Pb0rwert/En
mZ+AW4OZPnTPI89ZPmVMLuayrD2cE86Z/il8b+gw3r3+1nKatmIkjn2so1d01QraTlMqVSsbx
NrRFi9wrf+M7Q== you@example.com" | base64
рдФрд░ рдпрд╣рд╛рдБ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рджреЗрддрд╛ рд╣реИ - рдПрдХ base64 рдПрдиреНрдХреЛрдбреЗрдб рд╕реНрдЯреНрд░рд┐рдВрдЧ:MTIzLjQ1LjY3Ljg5IHNzaC1yc2EgQUFBQUIzTnphQzF5YzJFQUFBQUJJd0FBQVFFQWtsT1Vwa0RIcmZIWTE3U2JybVRJcE5MVEdLOVRqb20vQldEU1UKR1BsK25hZnpsSERUWVc3aGRJNHlaNWV3MThKSDRKVzlqYmhVRnJ2aVF6TTd4bEVMRVZmNGg5bEZYNVFWa2JQcHBTd2cwY2RhMwpQYnY3a09kSi9NVHlCbFdYRkNSK0hBbzNGWFJpdEJxeGlYMW5LaFhwSEFac01jaUxxOFY2UmpzTkFRd2RzZE1GdlNsVksvN1hBCnQzRmFvSm9Bc25jTTFROXg1KzNWMFd3NjgvZUlGbWIxenVVRmxqUUpLcHJyWDg4WHlwTkR2allOYnk2dncvUGIwcndlcnQvRW4KbVorQVc0T1pQblRQSTg5WlBtVk1MdWF5ckQyY0U4NlovaWw4YitndzNyMysxbkthdG1Ja2puMnNvMWQwMVFyYVRsTXFWU3NieApOclJGaTl3cmYrTTdRPT0geW91QGV4YW1wbGUuY29tCg==
рдпрд╣рд╛рдБ рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдЯреАрдо рд╣реИinstall:
- echo < , base64> | base64 -d >> $HOME/.ssh/known_hosts
рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп рдЙрд╕реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рдЬреА рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рд╕рд░реНрд╡рд░ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдЬреА рдХреБрдВрдЬреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЬрдм рдПрдХ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЯреНрд░реИрд╡рд┐рд╕ CI рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдореЗрдВ рдЗрд╕рдХреЗ рд╕реБрд░рдХреНрд╖рд┐рдд рднрдВрдбрд╛рд░рдг рдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рддрд╛рдХрд┐ рдпрд╣ рдХрд╣реАрдВ рднреА рдкреНрд░рджрд░реНрд╢рд┐рдд рди рд╣реЛредрдПрдХ рдФрд░ рдмрд╛рдд рдЬрд┐рд╕ рдкрд░ рдЖрдкрдХреЛ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдкреВрд░реА рддреИрдирд╛рддреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╣реА рд▓рд╛рдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ doctl
ред рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдпрд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИредdoctl compute ssh <droplet> --ssh-command " && "
рдЯреАрдПрд▓рдПрд╕ / рдПрд╕рдПрд╕рдПрд▓ рдФрд░ рд▓реЛрдб рд╕рдВрддреБрд▓рди
рдЬрдм рдореИрдВрдиреЗ рдКрдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╕рдм рдХреБрдЫ рдХрд┐рдпрд╛, рддреЛ рдореЗрд░реЗ рд╕рд╛рдордиреЗ рдЖрдЦрд┐рд░реА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ рд╕рд░реНрд╡рд░ рдореЗрдВ рдПрд╕рдПрд╕рдПрд▓ рдирд╣реАрдВ рдерд╛ред рдЪреВрдВрдХрд┐ рдореИрдВ Ngin.js рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддрд╛рдХрд┐ Nginx рдФрд░ рд▓реЗрдЯреНрд╕ рдПрдирдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░ рд╕рдХреЗрдВ , рдореБрдЭреЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЯрд┐рдВрдХрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИредрдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрди рд╕рднреА рдПрд╕рдПрд╕рдПрд▓ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрд░рдиреЗ рдХрд╛ рдорди рдирд╣реАрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл рдПрдХ рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рдмрдирд╛рдпрд╛ рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреАрдПрдирдПрд╕ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджрд░реНрдЬ рдХреАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, DigitalOcean рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рдкрд░ рд╕реЗрд▓реНрдл-рд░рд┐рдиреНрдпреВрдПрдВрдЧ рд╕реЗрд▓реНрдл-рд╕рд╛рдЗрди рдХрд┐рдпрд╛ рд╣реБрдЖ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдмрдирд╛рдирд╛ рдПрдХ рд╕рд░рд▓, рдореБрдлреНрдд рдФрд░ рддреЗрдЬрд╝ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдн рд╣реИ, рдЬреЛ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рднрд┐рдиреНрди рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ рдПрд╕рдПрд╕рдПрд▓ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рд░реНрд╡рд░ рдХреЛ рдПрд╕рдПрд╕рдПрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ "рд╕реЛрдЪрдиреЗ" рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдкреЛрд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ 80
ред рдЗрд╕рд▓рд┐рдП рдПрд╕рдПрд╕рдПрд▓ рдХреЛ рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рдПрд╕рдПрд╕рдПрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рд╕рд░рд▓ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИредрдЕрдм рдЖрдк рд╕рд░реНрд╡рд░ рдкрд░ рд╕рднреА рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ - 80
рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреЛрд░реНрдЯ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдФрд░ 22
рдПрд╕рдПрд╕рдПрдЪ рдХреЗ рд▓рд┐рдП рдкреЛрд░реНрдЯ ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЗрди рджреЛрдиреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдХрд┐рд╕реА рднреА рдкреЛрд░реНрдЯ рдкрд░ рд╕рд░реНрд╡рд░ рдХреЛ рд╕реАрдзреЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛редрд╕рд╛рд░рд╛рдВрд╢
рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕рдм рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдЕрдм рдбреЙрдХрд░реЛрдВ рдХреЗ рдордВрдЪ рдпрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд CI / CD рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╕реЗ рдХреЛрдИ рдбрд░ рдирд╣реАрдВ рдерд╛ред рдореИрдВ рдПрдХ рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ рдЬрд┐рд╕рдХреЗ рджреМрд░рд╛рди рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЖрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреЛрдб рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рддреИрдирд╛рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рд╕рдм рдЕрднреА рднреА рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдирдпрд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдореЗрд░реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рдмрдирд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдиреЗ рдЖрдкрдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдорджрдж рдХреА рд╣реИред рдореИрдВ рдпрд╣ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕реЗ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдиреЗ рдЬрд┐рддрдирд╛ рд╕реАрдЦрд╛ рдерд╛, рдЙрддрдирд╛ рд╣реА рд╕реАрдЦрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреЛ рдХреБрдЫ рднреА рдмрддрд╛рдпрд╛ рдерд╛, рдЙрд╕реЗ рд╕рдордЭ рд▓рд┐рдпрд╛редPS рд╣рдорд╛рд░реЗ рдмрд╛рдЬрд╝рд╛рд░ рдореЗрдВ рдПрдХ рдЫрд╡рд┐ рд╣реИрдбреЙрдХрд░ , рдЬреЛ рдПрдХ рдХреНрд▓рд┐рдХ рдореЗрдВ рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рд╡реАрдкреАрдПрд╕ рдкрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рд╕рднреА рдирдП рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП 3 рджрд┐рди рдореБрдлреНрдд рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВредрдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ CI / CD рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ?