Microservice рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рдЬрд╛рдирдХрд╛рд░реА, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкрдиреА рдмрдврд╝рдд рдХреЛ рднрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реА рд╣реИ, рдЖрдЬ рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рдЙрддреНрдкрд╛рдж рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИ рдпрд╛ рдирд╣реАрдВред рдФрд░ рдпрд╣ рдПрдХ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЬрд┐рди рдХрдВрдкрдирд┐рдпреЛрдВ рдиреЗ рдЗрд╕ рд░рд╛рд╕реНрддреЗ рдХреЛ рдЪреБрдирдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдХрдИ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдФрд░ рд╕рд╛рдВрд╕реНрдХреГрддрд┐рдХ рдЪреБрдиреМрддрд┐рдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдУрд╡рд░рд╣реЗрдб рд╣реИ рдЬреЛ рд╣рд░ рдЬрдЧрд╣ рдЧреБрдгрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЙрддреНрдкрд╛рджрди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рд╕реЗ рдЬреБрдбрд╝реА рджрд┐рдирдЪрд░реНрдпрд╛ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред

рдЫрд╡рд┐ рд╕реНрд░реЛрдд:
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдПрдВрдЯреА-рдкреНрд▓реЗрдЧрд┐рдЬреНрдо рд╕рд┐рд░реНрдл рдПрдХ рдРрд╕реА рдХрдВрдкрдиреА рд╣реИ, рдЬрд╣рд╛рдВ рдзреАрд░реЗ-рдзреАрд░реЗ рдпрд╣ рд╕рдордЭ рдЖрдИ рдХрд┐ рд╣рдо рд░рд╛рд╕реНрддреЗ рдореЗрдВ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рд╣реИрдВред рд▓реЗрдХрд┐рди рдХреИрдХреНрдЯрд╕ рдЦрд╛рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рдЗрд╕реЗ рд╕рд╛рдл рдХрд░рдиреЗ рдФрд░ рдкрдХрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдФрд░ рдЪреВрдВрдХрд┐ рд╕рднреА рдХреЗ рд▓рд┐рдП рдПрдХрдорд╛рддреНрд░ рд╕рд╣реА рдФрд░ рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рдЕрджреНрд╡рд┐рддреАрдп рд╣реИрдВ, рд╕реБрдВрджрд░ рддреАрд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ DevOps рд╕реНрд▓рд╛рдЗрдб рдХреЗ рдмрдЬрд╛рдп, рд╣рдордиреЗ рдмрд╕ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЕрдиреБрднрд╡ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдФрд░ рдмрддрд╛рдпрд╛ рдХрд┐ рдХреИрд╕реЗ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкрдиреЗ рд╡рд┐рд╢реЗрд╖ рдкрде рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рд╣рд┐рд╕реНрд╕рд╛ рдХрд╡рд░ рдХрд┐рдпрд╛ рд╣реИ, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ, рд╕рдлрд▓рддрд╛ред
рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрджреНрд╡рд┐рддреАрдп рдЙрддреНрдкрд╛рдж рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рджреВрд░-рджреВрд░ рддрдХ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдкрде рдХреЛ рдЪрдХрдорд╛ рджреЗрдиреЗ рдХрд╛ рдХреЛрдИ рдореМрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрдИ рдирд┐рдЬреА рд▓реЛрдЧреЛрдВ рд╕реЗ рдмрдирд╛ рд╣реИ: рдХрдВрдкрдиреА рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рд╕рдВрд╕реНрдХреГрддрд┐ рдФрд░ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдбреЗрдЯрд╛ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдЕрдкрдиреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдФрд░ рддрдХрдиреАрдХреА рд╕реНрдЯреИрдХ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред ред
рдХрд┐рд╕реА рднреА рдХрдВрдкрдиреА рдФрд░ рдЯреАрдо рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рдлреНрд░реАрдбрдо рдФрд░ рдирд┐рдпрдореЛрдВ рдХреЗ рдмреАрдЪ рдЗрд╖реНрдЯрддрдо рд╕рдВрддреБрд▓рди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛, рдФрд░ рдорд╛рдЗрдХреНрд░реЛрд╕рд┐рд╕реНрдЯрдореНрд╕ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдПрдХ рдирдП рд╕реНрддрд░ рдкрд░ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдмрд╣реБрдд рд╣реА рд╕реВрдХреНрд╖реНрдордЬреАрд╡рд┐рдпреЛрдВ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдЦрдВрдбрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдХреЗ рдЪреБрдирд╛рд╡ рдореЗрдВ рд╡реНрдпрд╛рдкрдХ рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдХрд╛ рдЕрд░реНрде рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рд╕реАрдзреЗ рд╡рд╛рд╕реНрддреБ рдФрд░ рддрдХрдиреАрдХреА рдореБрджреНрджреЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрддреНрдкрд╛рджрди рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╕рдордЧреНрд░ рд░реВрдк рд╕реЗ рджреЗрдЦреЗрдВ, рддреЛ "рдЧрд╛рд░реНрдбрди рдСрдлрд╝ рдЕрд░реНрдерд▓реА рдбрд┐рд▓рд╛рдЗрдЯреНрд╕" рдХреЗ рдХрдерд╛рдирдХ рдореЗрдВ рдХрд╣реАрдВ рд╣реЛрдиреЗ рдХрд╛ рдЬреЛрдЦрд┐рдо рдХрд╛рдлреА рд╣рдж рддрдХ рдореВрд░реНрдд рд╣реИред ред
рд╣рд╛рд▓рд╛рдВрдХрд┐, "рдХреНрд░рд┐рдПрдЯрд┐рдВрдЧ рдорд╛рдЗрдХреНрд░реЛрд╕рд┐рд╕реНрдЯреАрд╡реНрд╕" рдкреБрд╕реНрддрдХ рдореЗрдВ рд╕реИрдо рдиреНрдпреВрдореИрди рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдкрд╣рд▓реЗ рдкреГрд╖реНрдареЛрдВ рд╕реЗ рд╡реЗ рддрдХрдиреАрдХреА рд╕рдордЭреМрддреЛрдВ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рдЯреАрдореЛрдВ рдХреА рд░рдЪрдирд╛рддреНрдордХрддрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреА рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред рддреЛ рд╕рдлрд▓рддрд╛ рдХреА рдХреБрдВрдЬреА рдореЗрдВ рд╕реЗ рдПрдХ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рд╕реАрдорд┐рдд рдлреНрд░реА-рд╣реИрдВрдб рд╕рдВрд╕рд╛рдзрди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рд╕рдм рдХреБрдЫ рдХрд╛ рдорд╛рдирдХреАрдХрд░рдг рд╣реИ рдЬрд┐рд╕реЗ рдХреЗрд╡рд▓ рдмрд╛рддрдЪреАрдд рдХреЗ рдЬрд░рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХреЛрдИ рднреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рд░ рд╕рдордп рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдЧрд╛ред рд╕рдордЭреМрддреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рдХреЗ, рд╣рдо рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдШрдЯрдХреЛрдВ рдХреЗ рдЙрддреНрдкрд╛рджрди рдФрд░ рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рд╕рднреА рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЦреЗрд▓ рдХреЗ рд╕реНрдкрд╖реНрдЯ рдирд┐рдпрдо рдмрдирд╛рддреЗ рд╣реИрдВред рдФрд░ рдЦреЗрд▓ рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЛ рдЬрд╛рдирддреЗ рд╣реБрдП, рдЖрдкрдХреЛ рд╕рд╣рдордд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕реЗ рдЦреЗрд▓рдирд╛ рдЖрд╕рд╛рди рдФрд░ рдЕрдзрд┐рдХ рд╕реБрдЦрдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрди рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рд╕реНрд╡рдпрдВ рдПрдХ рджрд┐рдирдЪрд░реНрдпрд╛ рдмрди рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЛ рдЕрд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рд╕реАрдзреЗ рдЙрдирд╕реЗ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд┐рдЪрд▓рди рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ рдФрд░, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдкреВрд░реЗ рд╡рд┐рдЪрд╛рд░ рдХреА рд╡рд┐рдлрд▓рддрд╛ред рдФрд░ рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╕рднреА рд╕рдордЭреМрддреЛрдВ рдХреЛ рдХреЛрдб рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдП, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рднреА рд╡рд┐рдирд┐рдпрдорди рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рди рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд╣рдЬ рдФрд░ рдкреНрд░рд╛рдХреГрддрд┐рдХ рд╣реИред
рдЗрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реБрдП, рд╣рдо рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗ, рдФрд░ рд╣рдорд╛рд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рд╕реВрдХреНрд╖реНрдо (рдпрд╛ рдРрд╕рд╛ рдирд╣реАрдВ) рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдПрдВрдб-рдЯреВ-рдПрдВрдб рдХрдиреНрд╡реЗрдпрд░ рдХреА рддрд░рд╣ рд╣реЛ рдЧрдИред
рддреНрдпрд╛рдЧрдпрд╣ рдкрд╛рда "рдЬреИрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП" рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рд╣реИ, рдХреЛрдИ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИрдВ, рдХреЗрд╡рд▓ рд╡рд┐рдХрд╛рд╕рд╡рд╛рджреА рдкрде рдкрд░ рд╣рдорд╛рд░реА рд╕реНрдерд┐рддрд┐ рдФрд░ рдЪреБрдиреЗ рд╣реБрдП рджрд┐рд╢рд╛ рдХрд╛ рд╡рд░реНрдгрди рд╣реИред рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреЛ рд╕рднреА рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдХрд╛рдлреА рд╣рдж рддрдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐:
- 90% рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрдВрдкрдиреА рдореЗрдВ C # рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;
- рдЦрд░реЛрдВрдЪ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереА, рд╕реНрд╡реАрдХреГрдд рдорд╛рдирдХреЛрдВ, рджреГрд╖реНрдЯрд┐рдХреЛрдг рдФрд░ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ - рдпрд╣ рдЕрдиреБрднрд╡ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ рдпрд╛ рдмрд╕ рдПрдХ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд╡рд┐рд░рд╛рд╕рдд рд╣реИ;
- .NET рдкреНрд░реЙрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде, рдЯреАрдореЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рджрд░реНрдЬрдиреЛрдВ (рдФрд░ рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛);
- рд╣рдо рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рд╕реАрдЖрдИ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рд╡рд┐рдХреНрд░реЗрддрд╛ рд▓реЙрдХ-рдЗрди рд╕реЗ рдмрдЪрддреЗ рд╣реИрдВ;
- рдПрдХ рд╕рд╛рдзрд╛рд░рдг .NET рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП, "рдХрдВрдЯреЗрдирд░", "docker" рдФрд░ "Linux" рд╢рдмреНрдж рдЕрднреА рднреА рдереЛрдбрд╝реЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рдЖрддрдВрдХ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдШреБрдЯрдиреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рд╕реА рдХреЛ рднреА рдирд╣реАрдВ рддреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ред
рдереЛрдбрд╝реА рдкреГрд╖реНрдарднреВрдорд┐
2017 рдХреЗ рд╡рд╕рдВрдд рдореЗрдВ, рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдиреЗ рджреБрдирд┐рдпрд╛ рдХреЛ .NET рдХреЛрд░ 2.0 рдХрд╛ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдкреЗрд╢ рдХрд┐рдпрд╛, рдФрд░ рдЗрд╕ рд╕рд╛рд▓ рд╕реА # рдЬреНрдпреЛрддрд┐рд╖рд┐рдпреЛрдВ рдиреЗ рддреБрд░рдВрдд рд▓рд┐рдирдХреНрд╕ рд╡рд░реНрд╖ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреМрдбрд╝ рд▓рдЧрд╛рдИ, рдЗрд╕рд▓рд┐рдП ...

рдЫрд╡рд┐ рд╕реНрд░реЛрдд:
рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рд╡рд┐рдВрдбреЛрдЬ рдФрд░ рд▓рд┐рдирдХреНрд╕ рджреЛрдиреЛрдВ рдкрд░ рдЬрд╛рджреВ рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛, рд╕рдм рдХреБрдЫ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛, рдХреБрдЫ SSH рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рд╕реНрд╡рд┐рд╕ рдЪрд╛рдХреВ рдореЛрдб рдореЗрдВ рдкреБрд░рд╛рдиреЗ CI / CD рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдХреБрдЫ рд╕рдордп рдмрд╛рдж рдЙрдиреНрд╣реЗрдВ рдорд╣рд╕реВрд╕ рд╣реБрдЖ рдХрд┐ рд╣рдо рдХреБрдЫ рдЧрд▓рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕ рдФрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдзреНрд╡рдирд┐ рд╣реЛрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдкреНрд░рдЪрд╛рд░ рд▓рд╣рд░ рдХреА рд╕рд╡рд╛рд░реА рдХрд░рдиреЗ рдФрд░ рдЗрди рджрд┐рд╢рд╛рдУрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣рдорд╛рд░реЗ рд╕рдВрднрд╛рд╡рд┐рдд microservice рднрд╡рд┐рд╖реНрдп рдкрд░ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗ рдЪрд░рдг рдореЗрдВ, рдХрдИ рд╕рд╡рд╛рд▓ рдЙрдареЗ, рдЬрд┐рд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░рддреЗ рд╣реБрдП, рд╣рдордиреЗ рднрд╡рд┐рд╖реНрдп рдХреА рдЗрд╕ рдирдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рдЬреЛрдЦрд┐рдо рд▓рд┐рдпрд╛ рдЬреЛ рд╣рдордиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд▓рд┐рдП рд╣рд▓ рдХрд┐рдП рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдП рд╣реЛрдВрдЧреЗред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЬрдм рдирд┐рдпрдореЛрдВ рдХреЗ рдмрд┐рдирд╛ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ microservice рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдкрдХреНрд╖ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд╣рдо рд╕рднреА рдЖрдЧрд╛рдореА рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдЕрд░рд╛рдЬрдХрддрд╛ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╕реЗ рдбрд░ рдЧрдП рдереЗ, рдЬрд┐рд╕рдореЗрдВ рди рдХреЗрд╡рд▓ рдкрд░рд┐рдгрд╛рдо рдХреА рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдЧреБрдгрд╡рддреНрддрд╛ рд╢рд╛рдорд┐рд▓ рдереА, рдмрд▓реНрдХрд┐ рдЯреАрдореЛрдВ рдпрд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдФрд░ рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдШрд░реНрд╖ рднреА рдерд╛ред рдФрд░ рдХреБрдЫ рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЙрдирдХреЗ рдЕрдиреБрдкрд╛рд▓рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ, рддреБрд░рдВрдд рдПрдХ рдЦрд╛рд▓реА рдЙрдкрдХреНрд░рдо рдХреА рддрд░рд╣ рд▓рдЧ рд░рд╣рд╛ рдерд╛ред
рджреВрд╕рд░реЗ, рдХреЛрдИ рднреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдерд╛ рдХрд┐ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдХреИрд╕реЗ рдареАрдХ рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП рдФрд░ рдбреЙрдХрдлрд╛рдЗрд▓реНрд╕ рд▓рд┐рдЦрд╛ рдЬрд╛рдП, рдЬреЛ рдХрд┐, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣рдорд╛рд░реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЬреАрд╡рдВрдд рдЪрд░реНрдЪрд╛ рд╢реБрд░реВ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмрд╣реБрдд рд╕реЗ тАЬрдХрд╣реАрдВ рдкрдврд╝реЗтАЭ рдХрд┐ рд╡рд╣рд╛рдБ рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИред рддреЛ, рдХрд┐рд╕реА рдХреЛ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЧреЛрддрд╛ рд▓рдЧрд╛рдирд╛ рдерд╛ рдФрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдерд╛, рдлрд┐рд░ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрдВрдЯреЗрдирд░ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреНрд░рдерд╛рдУрдВ рдХреЗ рд╕рд╛рде рд▓реМрдЯрдирд╛ред рд▓реЗрдХрд┐рди рдкреВрд░реНрдгрдХрд╛рд▓рд┐рдХ рдкреВрд░реНрдгрдХрд╛рд▓рд┐рдХ рдкреИрдХрд░ рдХреА рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛, рдбреЙрдХ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдвреЗрд░ рдХреЗ рд╕рд╛рде рдЕрдХреЗрд▓рд╛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛, рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдХрдВрдкрдиреА рдореЗрдВ рдХрд┐рд╕реА рдХреЛ рдкреНрд░реЗрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдПрдХ рдмрд╛рд░ рдбрд╛рдЗрд╡рд┐рдВрдЧ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдФрд░ рд╕рд╣реА рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдмрд╕ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдФрд░ рддреАрд╕рд░рд╛, рдореИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдЫрд╡рд┐рдпрд╛рдВ рди рдХреЗрд╡рд▓ рдХрдВрдЯреЗрдирд░ рдкреНрд░рдерд╛рдУрдВ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд╕рд╣реА рд╣реЛрдВрдЧреА, рдмрд▓реНрдХрд┐ рдЙрдирдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рднреА рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдВрдЧреА рдФрд░ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЧрдП рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЧреБрдг рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реЛрдВрдЧреАред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдореИрдВ рдЙрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдЫрд╡рд┐рдпрд╛рдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдЬреЛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рд╣реИрдВ рдФрд░ рд▓реЙрдЧ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдмрд▓ рдХрд╛ рдПрдХ рд╕реБрд╕рдВрдЧрдд рд╕реЗрдЯ рд╣реИ, рдФрд░ рдЬреИрд╕реЗред рдпрд╣ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдерд╛ рдХрд┐ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЕрд╕реЗрдВрдмрд▓реА рдХрд┐рд╕реА рднреА CI рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рджреЗрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЙрддреНрддреАрд░реНрдг рдкрд░реАрдХреНрд╖рдг рдФрд░ рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рд╕рдордЭ рдХрд╛ рдЬрдиреНрдо рд╣реБрдЖ рдХрд┐ рдирдП рдЬреНрдЮрд╛рди, рдкреНрд░рдерд╛рдУрдВ рдФрд░ рдорд╛рдирдХреЛрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдФрд░ рдХреЗрдВрджреНрд░реАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдФрд░ рдЙрддреНрдкрд╛рдж рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддреИрдпрд╛рд░ рдПрдХ рдбреЙрдХ рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдЧ рдХреЛ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╕рдВрднрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╢рд░реНрддреЛрдВ рд╕реЗ рдкрд░реЗ рдирд╣реАрдВред рдирд┐рд░рдВрддрд░ рд╢рдмреНрдж рдХреЗ рд╕рд╛рдеред
рд╕реАрдПрд▓рдЖрдИ рдмрдирд╛рдо рдЬреАрдпреВрдЖрдИ
рдПрдХ рдирдП рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ, рдпрд╣ рдПрдХ рд╕реЗрд╡рд╛ рдпрд╛ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реЛ, рдПрдХ рднрдВрдбрд╛рд░ рдмрдирд╛рдирд╛ рд╣реИред рдЗрд╕ рдЪрд░рдг рдХреЛ рджреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА (рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмрд┐рдЯрдмрдХреЗрдЯ рд╣реИ) рдХреА рдореЗрдЬрдмрд╛рдиреА рдкрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдмрдирд╛рдирд╛ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдФрд░ рдЗрд╕реЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдиреЗ рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреА рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрдж рдереАред рдЗрд╕рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рдХреЛрдб рдореЗрдВ рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рджреЗрдирд╛ рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рдХрд╛рд░реНрдп рдерд╛ред
рддреЛ рд╣рдорд╛рд░рд╛ рднрдВрдбрд╛рд░ рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
- рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдирд╛рдо, рдкрд╣реБрдВрдЪ рдЕрдзрд┐рдХрд╛рд░, рдкреБрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрддрд┐рдпрд╛рдВ, рдЖрджрд┐ред
- рдЖрд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓реЗрдВ рдФрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдВ, рдЬреИрд╕реЗ:
SolutionInfo.props
рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ (рдЙрд╕ рдкрд░ рдФрд░ рдЕрдзрд┐рдХ);src
рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЛрд░реНрд╕ рдХреЛрдб;README.md
, README.md
, рдЖрджрд┐;
- рдЖрд╡рд╢реНрдпрдХ рдЧрд┐рдЯ рд╕рдмрдореЙрдбрд▓реНрд╕ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ;
- рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдХрд┐рд╕реА рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЪреВрдВрдХрд┐ Bitbucket REST API рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░ рдкреВрд░реНрдг рдирд┐рдпрдВрддреНрд░рдг рджреЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдмрдирд╛рдИ рдЧрдИ рдереА - рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдЬрдирд░реЗрдЯрд░ред рд╕рд╡рд╛рд▓-рдЬрд╡рд╛рдм рдореЛрдб рдореЗрдВ, рд╡рд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдорд╛рд░реА рд╕рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН:
- рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП Bitbucket рдореЗрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ;
- рд╣рдорд╛рд░реЗ рд╕рдордЭреМрддреЗ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдирд╛рдо рдХреЛ рдорд╛рдиреНрдп рдХрд░рддрд╛ рд╣реИ;
- рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ;
- рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рдЯреЗрдореНрдкреНрд▓реЗрдЯ (рд╣рдо рдбреЙрдЯ рдЯреЗрдореНрдкреНрд▓реЗрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ) рдХреА рд╕реВрдЪреА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рд╕реЗ рдЪреБрдирдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВ;
- рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдФрд░
*.md
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рднрдВрдбрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдиреНрдпреВрдирддрдо рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рднрд░рддрд╛ рд╣реИ; - рдпрд╣ рд╕рдмрдореЙрдбреНрдпреВрд▓реНрд╕ рдХреЛ CI / CD рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдмрдореНрдмреВ рд╕реНрдкреЗрдХреНрд╕ рд╣реИ ) рдФрд░ рдЕрд╕реЗрдВрдмрд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддрд╛ рд╣реИред
рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдбреЗрд╡рд▓рдкрд░, рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ, рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИ, рдХрдИ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рднрд░рддрд╛ рд╣реИ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд╛рдкреНрдд "рд╣реИрд▓реЛ рджреБрдирд┐рдпрд╛!" рдПрдХ рд╕реЗрд╡рд╛ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реАрдЖрдИ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдЬреБрдбрд╝реА рд╣реБрдИ рд╣реИ, рдЬрд╣рд╛рдВ рд╕реЗ рд╕реЗрд╡рд╛ рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдПрдХ рдРрд╕рд╛ рдкреНрд░рддрд┐рдмрджреНрдз рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдиреЙрдирдЬрд╝рд░реЛ рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реИред
рдкрд╣рд▓рд╛ рдХрджрдо рдЙрдард╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреЛрдИ рдореИрдиреБрдЕрд▓ рд╢реНрд░рдо рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ, рдкреНрд░рд▓реЗрдЦрди, рдкрдВрдЬреАрдХрд░рдг рдФрд░ рдПрд╕рдПрдордПрд╕ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬред рдЕрдм рдЖрдЗрдП рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реБрдЖ рдерд╛, рдЙрд╕ рдкрд░ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред
рд╕рдВрд░рдЪрдирд╛
рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдорд╛рдирдХреАрдХрд░рдг рдиреЗ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╣рдорд╛рд░реЗ рд╕рд╛рде рдЬрдбрд╝реЗрдВ рдЬрдорд╛ рд▓реА рд╣реИрдВ рдФрд░ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ, рд╕реАрдЖрдИ рдкреНрд░рдгрд╛рд▓реА рдФрд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рд╣рдо рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдереЗ рдХрд┐ CI рдореЗрдВ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдпрдерд╛рд╕рдВрднрд╡ рд╕рд░рд▓ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдФрд░, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдорд╛рдирдХ, рдЬреЛ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреА рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рдФрд░ рдкреБрдирд░реБрддреНрдкрд╛рджрди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдЧрд╛ред рдпрд╣реА рд╣реИ, рдПрдХ рд╣реА рдкрд░рд┐рдгрд╛рдо рдХрд┐рд╕реА рднреА CI рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдХрд╛рд░реНрдпрд╕реНрдерд▓ рдкрд░ рджреЛрдиреЛрдВ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╕рдм рдХреБрдЫ рдЬреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг рд╡рд╛рддрд╛рд╡рд░рдг рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ, рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЧрд┐рдЯ рд╕рдмрдореЙрдбреНрдпреВрд▓ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдЖрддреНрдордирд┐рд░реНрднрд░ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рд╣реИред рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдорд╛рдирдХреАрдХрд░рдг рдкреНрд░рдгрд╛рд▓реАред рдкрд╛рдЗрдк рд▓рд╛рдЗрди рд╣реА, рдПрдХ рдиреНрдпреВрдирддрдо рд╕рдиреНрдирд┐рдХрдЯрди рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ build.sh
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдкрд░реАрдХреНрд╖рдгреЛрдВ рдкрд░ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдЪреБрдиреЗрдВ рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдПрдХ рддреИрдирд╛рддреА рд╢реБрд░реВ рдХрд░реЗрдВред рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕реЗрдореНрдкреНрд╕рд╡рд░реНрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдмреЛрд▓ рдирд╛рдо рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВред
. тФЬтФАтФА [bamboo-specs] тФЬтФАтФА [devops.build] тФВ тФЬтФАтФА build.sh тФВ тФФтФАтФА ... тФЬтФАтФА [docs] тФЬтФАтФА [.scripts] тФЬтФАтФА [src] тФВ тФЬтФАтФА [CodeAnalysis] тФВ тФЬтФАтФА [Sandbox.SampleService] тФВ тФЬтФАтФА [Sandbox.SampleService.Bootstrap] тФВ тФЬтФАтФА [Sandbox.SampleService.Client] тФВ тФЬтФАтФА [Sandbox.SampleService.Tests] тФВ тФЬтФАтФА Directory.Build.props тФВ тФЬтФАтФА NLog.config тФВ тФЬтФАтФА NuGet.Config тФВ тФФтФАтФА Sandbox.SampleService.sln тФЬтФАтФА .gitattributes тФЬтФАтФА .gitignore тФЬтФАтФА .gitmodules тФЬтФАтФА CHANGELOG.md тФЬтФАтФА README.md тФФтФАтФА SolutionInfo.props
рдкрд╣рд▓реА рджреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ Git рд╕рдмрдореЙрдбреНрдпреВрд▓ рд╣реИрдВред рдПрдЯрд▓рд╕рд┐рдпрди рдмрд╛рдВрд╕ рд╕реАрдЖрдИ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП bamboo-specs
"рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрдб" рд╣реИ (рдЗрд╕рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдХреБрдЫ рдЬреЗрдирдХрд┐рдВрд╕рдлрд╛рдЗрд▓ рд╣реЛ рд╕рдХрддрд╛ рдерд╛), devops.build
рд╣рдорд╛рд░реА рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рдиреАрдЪреЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХрд░реВрдВрдЧрд╛ред .scripts
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рднреА рдЗрд╕ .scripts
ред .NET рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реНрд╡рдпрдВ src
рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ: NuGet.Config
рдореЗрдВ рдирд┐рдЬреА NuGet рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИ, NLog.config
рджреЗрд╡-рд╕рдордп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдХрдВрдкрдиреА рдореЗрдВ NLog рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреА рдорд╛рдирдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдпрд╣рд╛рдБ рджрд┐рд▓рдЪрд╕реНрдк рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рд╕реЗ рд▓рдЧрднрдЧ рдореИрдЬрд┐рдХ Directory.Build.props
рд╣реИред Directory.Build.props
рдлрд╝рд╛рдЗрд▓ред рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдмрд╣реБрдд рдХрдо рд▓реЛрдЧ .NET рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдРрд╕реА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХрд╛ рдЕрдиреБрдХреВрд▓рди ред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, Directory.Build.props
рдФрд░ Directory.Build.targets
рдирд╛рдо рд╡рд╛рд▓реА рдлрд╛рдЗрд▓реЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЖрдпрд╛рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рд╕рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдЧреБрдгреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рд╣рдо CodeAnalysis
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдФрд░ рдЗрд╕рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ CodeAnalysis
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рд╕рднреА рдХреЛрдб-рд╢реИрд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рд╕реЗ CodeAnalysis
рд╣реИрдВ, рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рдкреИрдХреЗрдЬреЛрдВ ( рдХрдВрдкрдиреА , рдХреЙрдкреАрд░рд╛рдЗрдЯ , рдЖрджрд┐) рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ <Import>
рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВред <Import>
рдлрд╝рд╛рдЗрд▓ SolutionInfo.props
, рдЬреЛ рдареАрдХ рдЙрд╕реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд╣реИ, рдЬрд┐рд╕рдХреА рдЪрд░реНрдЪрд╛ рдКрдкрд░ рдХреА рдЧрдИ рдереАред рдЗрд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг, рд▓реЗрдЦрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА, рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА URL рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рд╡рд░рдг, рд╕рд╛рде рд╣реА рдХрдИ рдЧреБрдг рд╣реИрдВ рдЬреЛ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдФрд░ рдкрд░рд┐рдгрд╛рдореА рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг `SolutionInfo.props` <?xml version="1.0"?> <Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="devops.build/SolutionInfo.xsd"> <PropertyGroup> <Product>Sandbox.SampleService</Product> <BaseVersion>0.0.0</BaseVersion> <EntryProject>Sandbox.SampleService.Bootstrap</EntryProject> <ExposedPort>4000/tcp</ExposedPort> <GlobalizationInvariant>false</GlobalizationInvariant> <RepositoryUrl>https://bitbucket.contoso.com/projects/SND/repos/sandbox.sampleservice/</RepositoryUrl> <DocumentationUrl>https://bitbucket.contoso.com/projects/SND/repos/sandbox.sampleservice/browse/README.md</DocumentationUrl> <Authors>User Name <username@contoso.com></Authors> <Description>The sample service for demo purposes.</Description> <BambooBlanKey>SMPL</BambooBlanKey> </PropertyGroup> </Project>
рдЙрджрд╛рд╣рд░рдг `Directory.Build.props` <Project> <Import Condition="Exists('..\SolutionInfo.props')" Project="..\SolutionInfo.props" /> <ItemGroup> <None Include="$(MSBuildThisFileDirectory)/CodeAnalysis/stylecop.json" Link="stylecop.json" CopyToOutputDirectory="Never"/> <PackageReference Include="StyleCop.Analyzers" Version="1.*" PrivateAssets="all" /> </ItemGroup> <PropertyGroup> <CodeAnalysisRuleSet>$(MSBuildThisFileDirectory)/CodeAnalysis/stylecop.ruleset</CodeAnalysisRuleSet> <GenerateDocumentationFile>true</GenerateDocumentationFile> <LangVersion>latest</LangVersion> <BaseVersion Condition="'$(BaseVersion)' == ''">0.0.0</BaseVersion> <BuildNumber Condition="'$(BuildNumber)' == ''">0</BuildNumber> <BuildNumber>$([System.String]::Format('{0:0000}',$(BuildNumber)))</BuildNumber> <VersionSuffix Condition="'$(VersionSuffix)' == ''">local</VersionSuffix> <VersionSuffix Condition="'$(VersionSuffix)' == 'prod'"></VersionSuffix> <VersionPrefix>$(BaseVersion).$(BuildNumber)</VersionPrefix> <IsPackable>false</IsPackable> <PackageProjectUrl>$(RepositoryUrl)</PackageProjectUrl> <Company>Contoso</Company> <Copyright>Copyright $([System.DateTime]::Now.Date.Year) Contoso Ltd</Copyright> </PropertyGroup> </Project>
рд╕рднрд╛
рдпрд╣ рдЕрднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдореЗрд░реЗ рдФрд░ рдореЗрд░реЗ рд╕рд╣рдХрд░реНрдорд┐рдпреЛрдВ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд┐рднрд┐рдиреНрди рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдлреА рд╕рдлрд▓ рдЕрдиреБрднрд╡ рдерд╛ред рдФрд░ рдПрдХ рдореМрдЬреВрджрд╛ рдЯреВрд▓ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдкреНрд░рд╛рдкреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рднрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдпрд╣ рдПрдХ рдФрд░ рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╣рдорд╛рд░реА рдирдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖, рдФрд░ рд╡рд┐рд░рд╛рд╕рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд░рд╛рдиреЗ рдХреЛ рдЕрдХреЗрд▓рд╛ рдЫреЛрдбрд╝ рджреЗрдВред рдлрд┐рдХреНрд╕ рд╡рд┐рдЪрд╛рд░ рдПрдХ рдЙрдкрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдереА рдЬреЛ рдХреЛрдб рдХреЛ рдПрдХ рдбреЙрдХрдЯрд░ рдЫрд╡рд┐ рдореЗрдВ рдмрджрд▓ рджреЗрдЧрд╛ рдЬреЛ рдПрдХ рдПрдХрд▓ рдорд╛рдирдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣рдорд╛рд░реА рд╕рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреА рдкреЗрдЪреАрджрдЧрд┐рдпреЛрдВ рдореЗрдВ рдЧреЛрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдЕрдиреБрдХреВрд▓рди рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдПрдХ рдЙрдкрдпреБрдХреНрдд рд░реВрдкрд░реЗрдЦрд╛ рдХрд╛ рдЪрдпрди рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛ рд╣реИред рд▓рд┐рдирдХреНрд╕ рдХреЗ рд╕рд╛рде рдмрд┐рд▓реНрдб рдорд╢реАрдиреЛрдВ рдФрд░ рдХрд┐рд╕реА рднреА рдбреЗрд╡рд▓рдкрд░ рдХреА рд╡рд┐рдВрдбреЛрдЬ рдорд╢реАрдиреЛрдВ рдкрд░ рдкрд░рд┐рдгрд╛рдо рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдпрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдФрд░ рдиреНрдпреВрдирддрдо рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реНрдерд┐рддрд┐ рдмрди рдЧрдИрдВред рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдордп рдкрд░, рдореИрдВ .NET рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрд╕реЗрдВрдмрд▓реА рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬрд╛рдирдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛: MSBuild рдФрд░ рдЗрд╕рдХреЗ рд░рд╛рдХреНрд╖рд╕реА XML рд╡рд┐рдиреНрдпрд╛рд╕реЛрдВ рд╕реЗ, рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ Psake (Powershell) рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд░, рд╡рд┐рджреЗрд╢реА FAKE (F #) рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ред рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░ рдореБрдЭреЗ рдХреБрдЫ рдирдпрд╛ рдФрд░ рд╣рд▓реНрдХрд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдЕрд╕реЗрдВрдмрд▓реА рдФрд░ рдкрд░реАрдХреНрд╖рдг рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХ рдЕрд▓рдЧ рдХрдВрдЯреЗрдирд░ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдбреЙрдХрд░ рд╕реАрдПрд▓рдЖрдИ рдФрд░ рдЧрд┐рдЯ рдХреЗ рдЖрджреЗрд╢реЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЪреАрдЬ рдХреЗ рдЕрдВрджрд░ рдЪрд▓рд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рдмрдирд╛рдИ рдереА, рдЕрд░реНрдерд╛рдд, рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреЙрдХрдлрд╛рдЗрд▓ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред
рдЙрд╕ рд╕рдордп, .NET рдХреЛрд░ рдХреЗ рд▓рд┐рдП FAKE 5 рдФрд░ рдХреЗрдХ рджреЛрдиреЛрдВ рдЕрднреА рднреА рддреИрдпрд╛рд░ рдирд╣реАрдВ рдереЗ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд╕рд╛рде, рдпреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдЗрддрдиреА рдереАрдВред рд▓реЗрдХрд┐рди рдореЗрд░реА рдкреНрдпрд╛рд░реА рдкреНрдпрд╛рд░реА рдкреЙрд╡рд░рд╢реЗрд▓ 6 рдХреЛрд░ рдкрд╣рд▓реЗ рд╣реА рд░рд┐рд▓реАрдЬрд╝ рд╣реЛ рдЪреБрдХреА рд╣реИ, рдФрд░ рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдкреВрд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдлрд┐рд░ рд╕реЗ Psake рдХреА рдУрд░ рд░реБрдЦ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдФрд░ рдЬрдм рдореИрдВ рдореБрдбрд╝рд╛, рддреЛ рдореИрдВрдиреЗ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЗрдирд╡реЛрдХ-рдмрд┐рд▓реНрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдареЛрдХрд░ рдЦрд╛рдИ, рдЬреЛ рдХрд┐ Psake рдХрд╛ рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░ рд╣реИ рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рд▓реЗрдЦрдХ рдЦреБрдж рдмрддрд╛рддреЗ рд╣реИрдВ, рд╡рд╣реА, рдХреЗрд╡рд▓ рдмреЗрд╣рддрд░ рдФрд░ рдЖрд╕рд╛рди рд╣реИред рддреЛ рдпрд╣ рд╣реИред рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдирд╣реАрдВ рдмрддрд╛рдКрдВрдЧрд╛, рдореИрдВ рдХреЗрд╡рд▓ рдЗрд╕ рдмрд╛рдд рдкрд░ рдзреНрдпрд╛рди рджреВрдВрдЧрд╛ рдХрд┐ рдпрджрд┐ рдЙрддреНрдкрд╛рдж рдХреЗ рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рд╕рднреА рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдп рдЙрдкрд▓рдмреНрдз рд╣реИрдВ рддреЛ рдХреЙрдореНрдкреИрдХреНрдЯрдиреЗрд╕ рдореБрдЭреЗ рдЗрд╕рдореЗрдВ рдШреВрд╕ рджреЗрддреА рд╣реИ:
- рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЛ рдкрд░рд╕реНрдкрд░ рд╕рдВрдмрдВрдзрд┐рдд рдХрд╛рд░реНрдпреЛрдВ (рдХрд╛рд░реНрдпреЛрдВ) рдХреЗ рдПрдХ рд╕реЗрдЯ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЙрдирдХреА рдЕрдиреНрдпреЛрдиреНрдпрд╛рд╢реНрд░рд┐рддрддрд╛рдУрдВ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- рдХрдИ рдЙрдкрдпреЛрдЧреА рд╣реЗрд▓реНрдкрд░реНрд╕ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдХреНрдЬрд╝рд┐рдЯ рдХреЛрдб рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП {} рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВред
- Ctrl + C рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рдЕрдкрд╡рд╛рдж рдпрд╛ рд╕реНрдЯреЙрдк рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдорд┐рдд рдПрдХреНрдЬрд┐рдЯ-рдмрд┐рд▓реНрдб рдмреНрд▓реЙрдХ рдореЗрдВ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд╣рд╛рдВ рдЖрдк рд╕рднреА рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓реЛрдВ, рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдЦреАрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдВрдЦ рдХреЛ рднрд╛рддреА рд╣реИред

рдЬреЗрдиреЗрд░рд┐рдХ рдбреЙрдХрд░рдлрд╛рдЗрд▓
docker build
рдФрд░ рдбреЙрдХ docker build
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЕрд╕реЗрдВрдмрд▓реА рдХрд╛рдлреА рдХрдордЬреЛрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ, рдФрд░ рдЗрди рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рд▓рдЪреАрд▓рд╛рдкрди рдлрд╛рд╡рдбрд╝реЗ рдХреЗ рд╣реИрдВрдбрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, "рдЧрд▓рдд" рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддрд░реАрдХреЗ рд╣реИрдВ, рдмрд╣реБрдд рдмрдбрд╝реЗ, рдмрд╣реБрдд рдЕрд╕реБрд░рдХреНрд╖рд┐рдд, рдмрд╣реБрдд рд╣реА рдЕрдирдкреЗрдХреНрд╖рд┐рдд рдпрд╛ рдмрд╕ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рддред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдХреЗ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ , рдЬреЛ рдЖрдкрдХреЛ рдореВрд▓ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рд╕рдордЭрдиреЗ рдФрд░ рдЕрдкрдиреА рдкрд╣рд▓реА рдбреЙрдХрдлрд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рдмрд╛рдж рдореЗрдВ рдзреАрд░реЗ-рдзреАрд░реЗ рдЗрд╕рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рд╡рд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдорд▓реНрдЯреА-рд╕реНрдЯреЗрдЬ рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ " рдЯреЗрд╕реНрдЯ рд░рдирд░ " рдЫрд╡рд┐ рдмрдирд╛рддрд╛ рд╣реИред
рдорд▓реНрдЯреА-рд╕реНрдЯреЗрдЬ рдкреИрдЯрд░реНрди рдФрд░ рддрд░реНрдХ
рдкрд╣рд▓рд╛ рдЪрд░рдг рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдЪрд░рдгреЛрдВ рдХреЛ рдЫреЛрдЯреЗ рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рдФрд░ рдирдП рд▓реЛрдЧреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реИред рддреЛ, рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдЪрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ dotnet build
рдХреЗ рд▓реЙрдиреНрдЪ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЗрд╡рд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рд╡рд╛рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ dotnet publish
рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдЕрдм, рд╣рдорд╛рд░реЗ рд╡рд┐рд╡реЗрдХ рдкрд░, рд╣рдо рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдЪрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ
dotnet build --target <name>
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рд╣рдо рдХреЗрд╡рд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рд╡рд╛рд▓реА рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдПрдХрддреНрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣рд╛рдБ рдХреА рдХрд▓рд╛рдХреГрддрд┐рдпрд╛рдБ рдХреЗрд╡рд▓ NuGet рдкреИрдХреЗрдЬ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд░рдирдЯрд╛рдЗрдо рдЗрдореЗрдЬ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред

рдпрд╛ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕реЗрд╡рд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реБрд╡рд┐рдзрд╛ рд╢рд╛рдЦрд╛ рд╕реЗред рд╣рдореЗрдВ рдРрд╕реА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреА рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреА рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреЗрд╡рд▓ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдФрд░ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдкрд░реАрдХреНрд╖рдг рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

рдЕрдЧрд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдмреБрдирд┐рдпрд╛рджреА рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдмрдирд╛рдирд╛ рд╣реИред рдЕрднреА рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП, рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдореЗрдВ, ARG
рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдмрд┐рд▓реНрдб рдЪрд░рдгреЛрдВ рдХреЗ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ , рдФрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдорд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмреЗрд╕ рдЗрдореЗрдЬ рдХреЗ рдирд╛рдо рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
ARG DOTNETCORE_VERSION=2.2 ARG ALPINE_VERSION= ARG BUILD_BASE=mcr.microsoft.com/dotnet/core/sdk:${DOTNETCORE_VERSION}-alpine${ALPINE_VERSION} ARG RUNTIME_BASE=mcr.microsoft.com/dotnet/core/runtime:${DOTNETCORE_VERSION}-alpine${ALPINE_VERSION} FROM ${BUILD_BASE} AS restore ... FROM ${RUNTIME_BASE} AS runtime ...
рдЗрд╕рд▓рд┐рдП рд╣рдо рдирдП рдФрд░ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдорд┐рд▓реЗ, рдФрд░ рд╕реНрдкрд╖реНрдЯ рдЕрд╡рд╕рд░ рдирд╣реАрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрджрд┐ рд╣рдо рдПрдХ ASP.NET рдХреЛрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рдЫрд╡рд┐ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд░рдирдЯрд╛рдЗрдо рдЫрд╡рд┐ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА: mcr.microsoft.com/dotnet/core/aspnet
ред рдЧреИрд░-рдорд╛рдирдХ рдореВрд▓ рдЫрд╡рд┐ рд╡рд╛рд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ SolutionInfo.props
рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕реЗ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рджреМрд░рд╛рди рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред рд╣рдордиреЗ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП .NET рдХреЛрд░ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдЕрдиреНрдп рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреА рдЖрд╕рд╛рди рдмрдирд╛ рджрд┐рдпрд╛ рд╣реИ: рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрд╕реНрдЯрдо рд╡рд╛рд▓реЗ (рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдХрднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ!)ред
рджреВрд╕рд░реЗ, рдбреЙрдХрд░реАрдлрд╛рдЗрд▓ рдХреЛ "рд╡рд┐рд╕реНрддрд╛рд░" рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдФрд░ рднреА рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдПрдХ рдФрд░ рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд░рдирдЯрд╛рдЗрдо рдЫрд╡рд┐ рддреИрдпрд╛рд░ рдХрд░рддреЗ рд╕рдордп рдПрдХ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реА рдХреБрдЫ рд╕реЗрд╡рд╛рдПрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ Vue.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдХреЛрдб рд╣рдо рдПрдХ рдЕрд▓рдЧ рдЫрд╡рд┐ рдореЗрдВ рддреИрдпрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдмрд╕ рдЗрд╕ рддрд░рд╣ рдХреЗ "рд╡рд┐рд╕реНрддрд╛рд░" рдбреЙрдХрд░реАрдлрд╛рдЗрд▓ рдХреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
ARG DOTNETCORE_VERSION=2.2 ARG ALPINE_VERSION= ARG RUNTIME_BASE=mcr.microsoft.com/dotnet/core/aspnet:${DOTNETCORE_VERSION}-alpine${ALPINE_VERSION} FROM node:alpine AS install WORKDIR /build COPY package.json . RUN npm install FROM install AS src COPY [".babelrc", ".eslintrc.js", ".stylelintrc", "./"] COPY ClientApp ./ClientApp FROM src AS publish RUN npm run build-prod FROM ${RUNTIME_BASE} AS appbase COPY --from=publish /build/wwwroot/ /app/wwwroot/
рдЖрдЗрдП рдЗрд╕ рдЫрд╡рд┐ рдХреЛ рдЯреИрдЧ рдХреЗ рд╕рд╛рде рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╣рдо RUNTIME_BASE рдХреЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ ASP.NET рд╕реЗрд╡рд╛ рдХреА рд░рдирдЯрд╛рдЗрдо рдЫрд╡рд┐ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рдЪрд░рдг рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдВрдЧреЗред рдЗрд╕рд▓рд┐рдП рдЖрдк рдЕрд╕реЗрдВрдмрд▓реА рдХрд╛ рдЬрд┐рддрдирд╛ рдЪрд╛рд╣реЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЖрдк рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЖрдк рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡реЙрд▓реНрдпреВрдо рдХреЗ рдЬреЛрдбрд╝ рдХреЛ рдмрдбрд╝рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдЖрд╕рд╛рди:
ARG DOTNETCORE_VERSION=2.2 ARG ALPINE_VERSION= ARG RUNTIME_BASE=mcr.microsoft.com/dotnet/core/aspnet:${DOTNETCORE_VERSION}-alpine${ALPINE_VERSION} FROM ${RUNTIME_BASE} AS runtime ARG VOLUME VOLUME ${VOLUME}
рд╣рдо рдЗрд╕ Dockerfile рдХреА рдЕрд╕реЗрдВрдмрд▓реА рдХреЛ рдХрдИ рдмрд╛рд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо VOLUME рдирд┐рд░реНрджреЗрд╢ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рдо рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рдгрд╛рдореА рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдкрд░реАрдХреНрд╖рдг рдЪрд▓ рд░рд╣рд╛ рд╣реИ
рд╕реАрдзреЗ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдЪрд░рдгреЛрдВ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдпрд╣ рд╡рд┐рд╢реЗрд╖ "рдЯреЗрд╕реНрдЯ рд░рдирд░" рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рд╣реА рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд╕рд╛рд░, рдореИрдВ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
- рд╕рднреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ, рднрд▓реЗ рд╣реА рдЙрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ;
- рдПрдХ рдкрд░реАрдХреНрд╖рдг рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╣реЛрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░реЗрдВ, рдЬреЛ рд╕реАрдЖрдИ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ;
- рдЕрдкрдиреЗ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдирд╛рдо
docker run --network <test_network_name>
рд╕реЗ рдкрд╛рд╕ рдХрд░рдХреЗ рдЕрд╕реНрдерд╛рдпреА рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдВред
рдЕрдВрддрд┐рдо рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЕрдм рд╣рдо рди рдХреЗрд╡рд▓ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдкрд░реНрдпрд╛рд╡рд░рдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, docker-compose.yaml
, рдФрд░ рдЗрд╕реЗ рд╕рдВрдкреВрд░реНрдг рдмрд┐рд▓реНрдб рдХреЗ рд▓рд┐рдП рдЪрд▓рд╛рдПрдВред рдЕрдм рдЖрдк рдбреЗрдЯрд╛рдмреЗрд╕ рдпрд╛ рд╣рдорд╛рд░реА рдЕрдиреНрдп рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреА рдЬрд╛рдБрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдЖрдк рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ, рддреЛ рдЙрдирд╕реЗ рд▓реЙрдЧ рдХреЛ рдмрдЪрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдо рд╣рдореЗрд╢рд╛ рд╣реЗрд▓реНрдердЪреЗрдХ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдореА рд░рдирдЯрд╛рдЗрдо рдЫрд╡рд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдПрдХ рддрд░рд╣ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рднреА рд╣реИред рдЕрд╕реНрдерд╛рдпреА рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдпрд╣рд╛рдБ рдХрд╛рдо рдЖ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдкрд░реАрдХреНрд╖рдг рдХреА рдЬрд╛ рд░рд╣реА рд╕реЗрд╡рд╛ рдХреА рдЕрдкрдиреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╣реИред
рдореИрдВ рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ dotnet build
рд╕рд╛рде рд╕реНрдЯреЗрдЬ рдкрд░ рдЗрдХрдЯреНрдареЗ рд╣реБрдП рд░рдирд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд╕рд╛рде dotnet nuget push
dotnet pack
рдФрд░ dotnet nuget push
рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдареАрдХ рд╣реИред рдпрд╣ рд╣рдореЗрдВ рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
Healthcheck рдФрд░ OS рдирд┐рд░реНрднрд░рддрд╛рдПрдБ
рдмрд╣реБрдд рдЬрд▓реНрджреА рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рд╣рдорд╛рд░реА рдорд╛рдирдХреАрдХреГрдд рд╕реЗрд╡рд╛рдПрдВ рдЕрднреА рднреА рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд╕реЗ рдЕрдиреВрдареА рд╣реЛрдВрдЧреАред рдЫрд╡рд┐ рдХреЗ рдЕрдВрджрд░ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдкреНрд░реАрдЗрдВрд╕реНрдЯреЙрд▓реНрдб рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдирдХреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдФрд░ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЗред рдФрд░ рдЕрдЧрд░ рдХрд░реНрд▓ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ, рддреЛ рдЬреАрдЖрд░рдкреАрд╕реА рдмреИрдХрдПрдВрдб рдпрд╛ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рд╣реЗрдбрд▓реЗрд╕ рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдмреЗрдХрд╛рд░ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдпрд╣ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрдХреЗрдЬ рднреА рд╣реЛрдЧрд╛ред
рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЫрд╡рд┐ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЗрд╕рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХрдИ рд╡рд┐рд╢реЗрд╖ рд▓рд┐рдкрд┐рдпреЛрдВ рдкрд░ рд╕рдордЭреМрддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рднрдВрдбрд╛рд░ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
.scripts тФЬтФАтФА healthcheck.sh тФЬтФАтФА run.sh тФФтФАтФА runtime-deps.sh
healthcheck.sh
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХрдорд╛рдВрдб рд╣реИрдВ:
рд╡реЗрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реНрд▓ рдХреЗ рд▓рд┐рдП:
рд╣рдорд╛рд░реА рд╕реНрд╡рдпрдВ рдХреА рдХреНрд▓реА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЕрдиреНрдп рд╕реЗрд╡рд╛рдПрдВ:
runtime-deps.sh
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ runtime-deps.sh
, рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╕реНрдерд╛рдкрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдзрд╛рд░ рдУрдПрд╕ рдкрд░ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдЖрд╡реЗрджрди рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рдордХрд╛рдЬ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг:
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдФрд░ рд░рд╛рдЬреНрдп рдХреЛ рдЬрд╛рдВрдЪрдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдорд╛рдирдХреАрдХреГрдд рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рд▓рдЪреАрд▓реЗрдкрди рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ run.sh
, рддреЛ рдЖрдЧреЗ рд╣реИред
рдПрдВрдЯреНрд░реАрдкреЙрдЗрдВрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ
рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рд╣рд░ рдХреЛрдИ рдЬреЛ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдмрд╛рд░ рдЕрдкрдиреЗ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдХреЛ рд▓рд┐рдЦрддрд╛ рд╣реИ рд╡рд╣ рд╕реЛрдЪрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ - CMD
рдпрд╛ ENTRYPOINT
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрди рдЯреАрдореЛрдВ рдХреЗ рдкрд╛рд╕ рджреЛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╡рд┐рдХрд▓реНрдк рднреА рд╣реИрдВ, рдЬреЛ рд╕рдмрд╕реЗ рдирд╛рдЯрдХреАрдп рддрд░реАрдХреЗ рд╕реЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЕрдВрддрд░ рдирд╣реАрдВ рдмрддрд╛рдКрдВрдЧрд╛, рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рдмрд╛рдж рджреЛрд╣рд░рд╛ рд░рд╣рд╛ рд╣реВрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рдХрд░ рджрд┐рдпрд╛ рд╣реИ ред рдореИрдВ рд╕рд┐рд░реНрдл рдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ 99% рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ ENTRYPOINT рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рд╣реА рд╣реИ:
ENTRYPOINT ["/ рдкрде / рд╕реЗ / рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп"]
рдЕрдиреНрдпрдерд╛, рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди OS рдХрдорд╛рдВрдб, рдЬреИрд╕реЗ рдХрд┐ SIGTERM, рдЖрджрд┐ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдЧрд╛, рдФрд░ рдЖрдк рдЬрд╝реЛрдВрдмреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдФрд░ PID 1 рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЬреБрдбрд╝реА рд╣рд░ рдЪреАрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдкрд░реЗрд╢рд╛рдиреА рдореЗрдВ рдкрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдЖрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдмрд┐рдирд╛ рдХрдВрдЯреЗрдирд░ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рд╣рд╛рдВ, рдЖрдк рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
docker run --rm -it --entrypoint ash <image_name> <params>
рдпрд╣ рдмрд╣реБрдд рдЖрд░рд╛рдорджрд╛рдпрдХ рдФрд░ рд╕рд╣рдЬ рдЬреНрдЮрд╛рди рдпреБрдХреНрдд рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИ, рд╣реИ рдирд╛? рд▓реЗрдХрд┐рди рдЕрдЪреНрдЫреА рдЦрдмрд░ рд╣реИ: рдЖрдк рдмреЗрд╣рддрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ! рдЕрд░реНрдерд╛рддреН, рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрд┐рдВрджреБ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЗрд╕ рддрд░рд╣ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдкрдХреЛ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдЬрдЯрд┐рд▓ ( рдЙрджрд╛рд╣рд░рдг ) рдЖрд░рдВрднреАрдХрд░рдг, рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдХреБрдЫ рднреА рдЬреЛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╕рдмрд╕реЗ рд╕рд░рд▓, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкрд░рд┐рджреГрд╢реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
рдпрд╣ рдЖрдкрдХреЛ рдмрд╣реБрдд рд╕рд╣рдЬрддрд╛ рд╕реЗ рдХрдВрдЯреЗрдирд░ рдХреЗ рдкреНрд░рдХреНрд╖реЗрдкрдг рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
docker run <image> env
- рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рджрд┐рдЦрд╛рддреЗ рд╣реБрдП, рдмрд╕ рдЫрд╡рд┐ рдореЗрдВ env рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред
docker run <image> -param1 value1
- рдирд┐рд░реНрджрд┐рд╖реНрдЯ рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░реЗрдВред
рдЕрд▓рдЧ-рдЕрд▓рдЧ, рдЖрдкрдХреЛ exec
рдХрдорд╛рдВрдб рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдЖрдкрдХреЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рдкреАрдЖрдИрдбреА тАЛтАЛ1 рдХреЗ рд╕рд╛рде рдкреНрд░рджрд╛рди рдХрд░реЗрдЧреАред
рдФрд░ рдХреНрдпрд╛
рдмреЗрд╢рдХ, рдЙрдкрдпреЛрдЧ рдХреЗ рдбреЗрдврд╝ рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рдореЗрдВ, рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдиреЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬрдорд╛ рдХреА рд╣реИред рд╡рд┐рднрд┐рдиреНрди рдЪрд░рдгреЛрдВ рдХреА рд▓реЙрдиреНрдЪ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ, рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рднрдВрдбрд╛рд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реБрдП, рдХрдВрдЯреЗрдирд░ рдХреЗ рд╣рдорд╛рд░реЗ "рдорд╛рдирдХ" рднреА рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдПред рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╕реЗ рднрд░рд╛ рдерд╛ рдЬреЛ рдЗрд╕реЗ рдЕрдзрд┐рдХ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдФрд░ рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рд░реВрдк рд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рддреЗ рд╣реИрдВ:
- рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЫрд╡рд┐ рд▓реЗрдмрд▓ рд╕реНрдерд╛рдкрд┐рдд рд╣реИрдВ: рд╕рдВрд╕реНрдХрд░рдг, рд╕рдВрд╢реЛрдзрди рд╕рдВрдЦреНрдпрд╛, рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдВрдХ, рд▓реЗрдЦрдХ рдФрд░ рдЕрдиреНрдпред
- рд░рдирдЯрд╛рдЗрдо рдХрдВрдЯреЗрдирд░ рдореЗрдВ, NLog рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдкреБрдирд░реНрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдкреНрд░рдХрд╛рд╢рди рдХреЗ рдмрд╛рдж рд╕рднреА рд▓реЙрдЧ рдХреЛ рддреБрд░рдВрдд рд╕рдВрд░рдЪрд┐рдд рд░реВрдк рдореЗрдВ json рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЬрд┐рд╕рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрд╕реНрдХрд░рдг рд╣реИред
- рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдирд┐рдпрдо рдФрд░ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдорд╛рдирдХреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдП рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдРрд╕рд╛ рдЙрдкрдХрд░рдг, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╣рдореЗрд╢рд╛ рдмреЗрд╣рддрд░ рдФрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╕рдм рдЬрд░реВрд░рддреЛрдВ рдФрд░ рдХрд▓реНрдкрдирд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдм рдХреБрдЫ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдЫрд╡рд┐ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд▓рд┐ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЛ рдкреИрдХреЗрдЬ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛ред рдбреЗрд╡рд▓рдкрд░ рдЙрдиреНрд╣реЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдЫрд╡рд┐ рдореЗрдВ рдбрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдирд╛рдо рдФрд░ .NET рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдЗрд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░рд╛ healthcheck
рдкрд░реАрдХреНрд╖рдг)ред
рдирд┐рд╖реНрдХрд░реНрд╖
рдпрд╣рд╛рдБ рд╡рд░реНрдгрд┐рдд рдорд╛рдирдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХреАрдХреГрдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред , , , , , . . , .
, Linux , - . , , . , , , Code Style, , .
, ! , ┬л ┬╗, , . , Docker .