ASP.NET рдХреЛрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдбреЙрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреИрдХ рдХрд░рдирд╛

ASP.NET Core рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд╣реА рдорд╛рдпрдиреЗ рдореЗрдВ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╣реИрдВ рдФрд░ рдирд┐рдХреНрд╕ рдореЗрдВ рдЪрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рддрджрдиреБрд╕рд╛рд░, рдбреЙрдХрдЯрд░ рдореЗрдВред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд▓рд┐рдирдХреНрд╕ рдкрд░ рдХреИрд╕реЗ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдирдЧрдиреЗрдХреНрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХрдЯ рдХреЗ рддрд╣рдд рд╡рд┐рд╡рд░рдг!



рдиреЛрдЯ: рд╣рдо рд╣реИрдХрд░ рдкрддреНрд░рд┐рдХрд╛ рд╕реЗ рд▓реЗрдЦреЛрдВ рдХреЗ рдкреВрд░реНрдг рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд╢рди рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред рд▓реЗрдЦрдХ рдХреА рд╡рд░реНрддрдиреА рдФрд░ рд╡рд┐рд░рд╛рдо рдЪрд┐рд╣реНрди рд╕рд╣реЗрдЬреЗ рдЧрдПред


рдбреЙрдХрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


рд▓рдЧрднрдЧ рд╕рднреА рдиреЗ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд╛ рд╣реИред рднрд╛рдЧреЛрдВ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдирдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдирдИ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рднреВрд▓ рдЧрдпрд╛ рдФрд░ рдкреБрдирд░реНрдирд╡реАрдиреАрдХрд░рдг рдкреБрд░рд╛рдирд╛ рд╣реИред


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


рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдбреЙрдХрд░ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ "рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди" рд╢рдмреНрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдПрдХ рд╕рдорд╛рдирддрд╛ рдЬрд░реВрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХрд╣рдирд╛ рдЧрд▓рдд рд╣реИред рдЗрд╕ рдЕрдВрддрд░ рдХреЛ рд╕рдордЭрдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдбреЙрдХрдЯрд░ рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рдирд┐рдореНрди рдЪрд┐рддреНрд░ рджреЗрдЦ рд░рд╣рд╛ рд╣реИ:




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


рдЬрд╛рдирдХрд╛рд░реА


рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░реАрдХрд░рдг рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЕрдиреНрдп рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпрд╛рдВ рднреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:


CoreOS рджреНрд╡рд╛рд░рд╛ rkt (рдЙрдЪреНрдЪрд╛рд░рдг 'рд░реЙрдХреЗрдЯ')


Ubuntu рджреНрд╡рд╛рд░рд╛ LXD ('рд▓реЗрдХреНрд╕реА' рдХрд╛ рдЙрдЪреНрдЪрд╛рд░рдг рдХрд┐рдпрд╛ рдЧрдпрд╛)


рд╡рд┐рдВрдбреЛрдЬ рдХрдВрдЯреЗрдирд░ - рдЖрдк рдХрд┐рд╕реА рд╕реЗ рдХрднреА рднреА рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд▓рдЧрд╛рдПрдВрдЧреЗред


рдЕрдм рдЬрдм рд╣рдордиреЗ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рд╕рд┐рджреНрдзрд╛рдВрдд рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ, рддреЛ рдЪрд▓рд┐рдП рдЕрднреНрдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред


Docker рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЛ рдбрд┐рд╕реЗрдмрд▓ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдордЭрджрд╛рд░реА рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдХрдИ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдбреЙрдХрд░ рд╕реНрдЯреЛрд░ рд╕реЗ рдЕрдкрдиреЗ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рддрд╣рдд рдбреЙрдХрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ BIOS рдФрд░ OS рдореЗрдВ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдк рдЗрд╕реЗ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ 10-рдХреА рдореЗрдВ рдХреИрд╕реЗ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ: рд╡рд┐рдВрдбреЛрдЬ 10 рдореЗрдВ рд╣рд╛рдЗрдкрд░-рд╡реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛


рдбреЙрдХрдЯрд░-рд╕рдХреНрд╖рдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛


рдбреЙрдХрд░, рдмреЗрд╢рдХ, рдПрдХ рд▓рд┐рдирдХреНрд╕ рдЙрддреНрдкрд╛рдж рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдк рдореИрдХ рдХреЗ рд▓рд┐рдП рдпрд╛ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдбреЙрдХрдЯрд░ рд╕рдкреЛрд░реНрдЯ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╕рдордп, рдХреЗрд╡рд▓ рдбреЙрдХрд░ рд╕рдкреЛрд░реНрдЯ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ рдЪреЗрдХ рдмреЙрдХреНрд╕ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред


рдореМрдЬреВрджрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдбреЙрдХрд░ рд╕рдкреЛрд░реНрдЯ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреИрд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдирдП рдШрдЯрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рд╕рдВрдЧ рдореЗрдиреВ рдРрдб - рдбреЙрдХрд░ рд╕рдкреЛрд░реНрдЯред


рдпрджрд┐ рдбреЙрдХрдЯрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреА рдорд╢реАрди рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рддреЛ рдХрдВрд╕реЛрд▓ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЦреБрд▓ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛


docker pull microsoft/aspnetcore:2.0 

рдЬреЛ рдЫрд╡рд┐ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЫрд╡рд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд░рд┐рдХреНрдд рд╣реИ рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрдкрдХреА рдЫрд╡рд┐ рдмрдирд╛рдИ рдЬрд╛рдПрдЧреАред ASP.NET Core 2.1 рдПрдХ рдЕрд▓рдЧ рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ - microsoft / dotnet: sdk


рдирд┐рдореНрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛:
.dockerignore (рдбреЙрдХ рдЫрд╡рд┐ рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░), docker-compose.yml (рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рдХрдИ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ), docker-compose.override.yml (рд╕рд╣рд╛рдпрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди docker-compose), docker-compose.dcproj ( рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓)ред


рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдХ Dockerfile рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдИ рдЬрд╛рдПрдЧреАред рджрд░рдЕрд╕рд▓, рдЗрд╕ рдлрд╛рдЗрд▓ рдХреА рдорджрдж рд╕реЗ рд╣рдо рдЕрдкрдиреА рдЗрдореЗрдЬ рдмрдирд╛рддреЗ рд╣реИрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ (рдпрджрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ DockerServiceDemo рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ) рддреЛ рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:


 FROM microsoft/aspnetcore:2.0 AS base WORKDIR /app EXPOSE 80 FROM microsoft/aspnetcore-build:2.0 AS build WORKDIR /src COPY DockerServiceDemo/DockerServiceDemo.csproj DockerServiceDemo/ RUN dotnet restore DockerServiceDemo/DockerServiceDemo.csproj COPY . . WORKDIR /src/DockerServiceDemo RUN dotnet build DockerServiceDemo.csproj -c Release -o /app FROM build AS publish RUN dotnet publish DockerServiceDemo.csproj -c Release -o /app FROM base AS final WORKDIR /app COPY --from=publish /app . ENTRYPOINT ["dotnet", "DockerServiceDemo.dll"] 

.NET рдХреЛрд░ 2.0 рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЖрдкрдХреЛ рдбреЙрдХ рдмрд┐рд▓реНрдб рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЫрд╡рд┐ рдХреЛ рддреБрд░рдВрдд рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛ред рдпрд╣ рдПрдХ рд╕реНрддрд░ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ docker- рд░рдЪрдирд╛ рдлрд╝рд╛рдЗрд▓ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдХреЛ рд╕рдорд╛рди рд░реВрдк рдореЗрдВ рд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


 FROM microsoft/aspnetcore:2.0 AS base WORKDIR /app EXPOSE 80 FROM microsoft/aspnetcore-build:2.0 AS build WORKDIR /src COPY DockerServiceDemo.csproj DockerServiceDemo.csproj RUN dotnet restore DockerServiceDemo.csproj COPY . . WORKDIR /src RUN dotnet build DockerServiceDemo.csproj -c Release -o /app FROM build AS publish RUN dotnet publish DockerServiceDemo.csproj -c Release -o /app FROM base AS final WORKDIR /app COPY --from=publish /app . ENTRYPOINT ["dotnet", "DockerServiceDemo.dll"] 

рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдЕрддрд┐рд░рд┐рдХреНрдд DockerServiceDemo рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдерд╛ред


рдпрджрд┐ рдЖрдк Visual Studio Code рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЬрдирд░реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐ рд╡реАрдПрд╕ рдХреЛрдб рдореЗрдВ рдбреЙрдХрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реИ, рдореИрдВ рд╡реАрдПрд╕ рдХреЛрдб рд╕реЗ рдбреЙрдХрдЯрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдиреБрдЕрд▓ рдкрд░ рдПрдХ рд▓рд┐рдВрдХ рдЬреЛрдбрд╝реВрдВрдЧрд╛ - рдбреЙрдХрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ ред рд╣рд╛рдВ, рд▓реЗрдЦ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рд╣реИ


рдереНрд░реА рдХреЛрд░реНрдбреНрд╕ рдбреЙрдХрд░


рдбреЙрдХрдЯрд░ рдХреЗ рд╕рд╛рде рджреИрдирд┐рдХ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП, рдмрд╕ рдХреБрдЫ рдЖрджреЗрд╢ рдпрд╛рдж рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВред


рдмреЗрд╢рдХ, рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЯреАрдо рдПрдХ рдЫрд╡рд┐ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП bash / CMD / PowerShell рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ Dockerfile рд╕реНрдерд┐рдд рд╣реИ рдФрд░ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:


 docker build -t your_image_name . 

рдпрд╣рд╛рдВ, -t рд╡рд┐рдХрд▓реНрдк рдХреЗ рдмрд╛рдж, рдЖрдкрдХреА рдЫрд╡рд┐ рдХрд╛ рдирд╛рдо рд╕реЗрдЯ рд╣реИред рдзреНрдпрд╛рди - рдХрдорд╛рди рдХреЗ рдЕрдВрдд рдореЗрдВ, рдЕрдВрддрд░рд┐рдХреНрд╖ рдХреЗ рдмрд╛рдж рдПрдХ рд╕реНрдерд╛рди рдЗрд╕ рдмрд┐рдВрджреБ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдПрдХ рдЯреИрдЧ (рд╕рдВрдЦреНрдпрд╛ рдпрд╛ рдирд╛рдо) рдХреЗ рд╕рд╛рде рдПрдХ рдЫрд╡рд┐ рдХреЛ рдЯреИрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд╛рдо рдХреЗ рдмрд╛рдж рдПрдХ рдХреЙрд▓реЛрди рдбрд╛рд▓реЗрдВ рдФрд░ рдПрдХ рдЯреИрдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред рдпрджрд┐ рдЯреИрдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдирд╡реАрдирддрдо рдирд╛рдо рдХреЗ рд╕рд╛рде рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЫрд╡рд┐ рдХреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдЫрд╡рд┐ рдирд╛рдо рдореЗрдВ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдирд╛рдо рд╢рд╛рдорд┐рд▓ рд╣реЛред рдХреБрдЫ рдЗрд╕ рддрд░рд╣:


 docker build -t docker_account_name/image_name:your_tag . 

рдпрд╣рд╛рдВ рдЖрдкрдХрд╛_рдбреЙрдХрд░_рдПрдХрд╛рдЙрдВрдЯ_рдирд╛рдо рдЖрдкрдХреЗ рдбреЙрдХрдЯрд░ рд╣рдм рдЕрдХрд╛рдЙрдВрдЯ рдХрд╛ рдирд╛рдо рд╣реИред


рдпрджрд┐ рдЖрдкрдиреЗ рдХреЗрд╡рд▓ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдирд╛рдо рдХреЗ рд╕рд╛рде рдЫрд╡рд┐ рдмрдирд╛рдИ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рдирд┐рдореНрди рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж рдПрдХ рдЕрд▓рдЧ рдирд╛рдо рдХреЗ рд╕рд╛рде рдЫрд╡рд┐ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 docker tag image_name docker_account_name/image_name:your_tag 

рд╣рдм рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдм рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


 docker push docker_account_name/image_name:your_tag 

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдбреЙрдХрдЯрд░ рдЦрд╛рддреЗ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╡рд┐рдВрдбреЛрдЬ рдкрд░, рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди UI рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди * nix рдкрд░, рдпрд╣ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:


 docker login 

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рддреАрди рдЯреАрдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИрдВред рдЖрдкрдХреЛ рдХрдВрдЯреЗрдирд░ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдореЗрдВ рднреА рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрдорд╛рдВрдб рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдХрдВрдЯреЗрдирд░ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╡рд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:


 docker run -it -p 5000:80 image_name 

-рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдПрдХ рдЫрджреНрдо-рдЯреАрдЯреАрд╡рд╛рдИ рдмрдирд╛рдПрдЧрд╛ рдФрд░ рдЖрдкрдХрд╛ рдХрдВрдЯреЗрдирд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдЧрд╛ред рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╕реЗрд╡рд╛ http: // localhost: 5000 / рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧреАред


-p 5000: 80 рд╕рд╣рдпреЛрдЧреА рд╣реЛрд╕реНрдЯ рдХреЗ рдкреЛрд░реНрдЯ 80 рдХреЗ рд╕рд╛рде рдХрдВрдЯреЗрдирд░ рдХреЗ рдкреЛрд░реНрдЯ 5000 рдХрд╛ред


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдРрд╕реЗ рдЖрджреЗрд╢ рд╣реИрдВ:


 docker ps тАУa 

рдЖрдкрдХреЛ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ -a рд╕реНрд╡рд┐рдЪ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рд╕рднреА рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рди рдХрд┐ рдХреЗрд╡рд▓ рдЙрди рдкрд░ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВред


 docker rm container_name 

рдпрд╣ рдХрдорд╛рдВрдб рдХрдВрдЯреЗрдирд░_рдирд╛рдо рдирд╛рдордХ рдХрдВрдЯреЗрдирд░ рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛ред rm - рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЫреЛрдЯрд╛


 docker logs container_name 

рдХрдВрдЯреЗрдирд░ рд▓реЙрдЧ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ


 docker rmi image_name 

рдЫрд╡рд┐_рдирд╛рдо рдирд╛рдордХ рдЫрд╡рд┐ рд╣рдЯрд╛рддрд╛ рд╣реИ


рдПрдХ рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдХрдВрдЯреЗрдирд░ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛


рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ .NET рдХреЛрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реНрд╡рдпрдВ рдЕрдкрдиреЗ Kestrel рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╕рд░реНрд╡рд░ рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд┐рдд рдирд╣реАрдВ рд╣реИред рдХреНрдпреЛрдВ? рдХрдИ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рд╣реИрдВред
рдпрджрд┐ рдЖрдИрдкреА рдФрд░ рдкреЛрд░реНрдЯ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИрдВ, рддреЛ рдХреЗрд╕реНрдЯрд░реЗрд▓ рдпрд╛рддрд╛рдпрд╛рдд рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рд╕реБрд░рдХреНрд╖рд╛ рдХреА рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░рдд рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд▓реЛрдб рд╕рдВрддреБрд▓рди рдФрд░ рдПрд╕рдПрд╕рдПрд▓ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдореМрдЬреВрджрд╛ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдореЗрдВ рдмреЗрд╣рддрд░ рдПрдХреАрдХрд░рдг рднреА рдХрд░рддрд╛ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП, рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░рдг рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд░рдХреНрд╖рд╛ рд╣реИред


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореВрд▓ Dockerfile рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо docker-compose.yml рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдирд┐рдкрдЯреЗрдВрдЧреЗ рдФрд░ рдЕрдХреЗрд▓реЗ рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред Yml рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рд░реВрдк рдХреЛ "yaml" рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ "рдпрдо рдП рдорд╛рд░реНрдХрдЕрдк рд▓реИрдВрдЧреНрд╡реЗрдЬ" рдпрд╛ "рдпрдореНрд▓рд▓ рдРрдирдЯ рдорд╛рд░реНрдХрдЕрдк рд▓реИрдВрдЧреНрд╡реЗрдЬ" рд╕реЗ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо рд╣реИред рдпрд╛ рддреЛ рдПрдХ рдФрд░ рдорд╛рд░реНрдХрдЕрдк рднрд╛рд╖рд╛, рдпрд╛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдорд╛рд░реНрдХрдЕрдк рднрд╛рд╖рд╛ рдирд╣реАрдВред рдХрд┐рд╕реА рддрд░рд╣, рд╕рдм рдХреБрдЫ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред


рдореЗрд░рд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдбреЙрдХ-рдХрдореНрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:


 version: '3.4' services: dockerservicedemo: image: ${DOCKER_REGISTRY}dockerservicedemo build: context: . dockerfile: DockerServiceDemo/Dockerfile 

Docker-compose.override.yml рдлрд╝рд╛рдЗрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдХрдИ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЬреЛрдбрд╝рддреА рд╣реИ:
рд╕рдВрд╕реНрдХрд░рдг: '3.4'


 services: dockerservicedemo: environment: - ASPNETCORE_ENVIRONMENT=Development ports: - "80" 

рд╣рдо рдбреЙрдХрдЯрд░-рдХрдореНрдкреЛрдЬрд╝ рдмрд┐рд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрдорд┐рдд рд╕рдорд╛рдзрд╛рди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдбреЙрдХрдЯрд░-рдХрдореНрдкреЛрдЬрд╝ рдЕрдк рдХрдорд╛рдВрдб рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ, рд╣рдо рдЕрдкрдиреЗ рдХрдВрдЯреЗрдирд░ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВрдЧреЗред рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ? рдлрд┐рд░ рдЕрдЧрд▓реЗ рдЪрд░рдг рдкрд░ рдЬрд╛рдПрдВред Nginx.info рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБред рд╡рд┐рдиреНрдпрд╛рд╕ рд▓рдЧрднрдЧ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧрд╛:


 worker_processes 4; events { worker_connections 1024; } http { sendfile on; upstream app_servers { server dockerservicedemo:80; } server { listen 80; location / { proxy_pass http://app_servers; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } } 

рдпрд╣рд╛рдВ рд╣рдо рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдирд╛рдЬрд╝рд┐рдирдХреНрд╕ рдкреЛрд░реНрдЯ 80 рдкрд░ рд╕реБрдиреЗрдЧрд╛ (рд╕реБрдиреЛ 80;)ред рдФрд░ рдкреНрд░рд╛рдкреНрдд рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ dockerservicedemo рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╣реЛрд╕реНрдЯ рдХреЗ 80 рд╡реЗрдВ рдкреЛрд░реНрдЯ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдирдВрдЧреЗрдХреНрд╕ рдХреЛ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ рд╣реЗрдбрд░ рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реИред


рд╣рдо http рдХрд╛ рдЙрдкрдпреЛрдЧ nginx рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ https рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬрдм рдПрдХ https рдЕрдиреБрд░реЛрдз http рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ https рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА http рд╕реЗ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдмрд╛рд╣рд░реА рдЖрдИрдкреА рдкрддрд╛ рдЦреЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╢реАрд░реНрд╖ рд▓реЗрдЦреЛрдВ рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╣рдорд╛рд░реЗ ASP.NET рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдХреЛрдб рдХреЛ рдмрджрд▓рдиреЗ рдФрд░ Startup.cs рдлрд╝рд╛рдЗрд▓ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рд╡рд┐рдзрд┐ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


  app.UseForwardedHeaders(new ForwardedHeadersOptions { ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto }); 

рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рдПрдХреНрд╕-рдлрд╝реЙрд░реНрд╡рд░реНрдб-рдлреЙрд░ рдФрд░ рдПрдХреНрд╕-рдлрд╝реЙрд░реНрд╡рд░реНрдб-рдкреНрд░реЛрдЯреЛ рд╣реЗрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдпреЗ рд╣реЗрдбрд░ рд╣реИрдВ рдЬреЛ рдЕрдм nginx рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИрдВред


рдЕрдм рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдиреЗрдЧрдиреЗрдХреНрд╕ рдЗрдореЗрдЬ рдФрд░ nginx.conf рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВред YAML рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдореЗрдВ рд╕рд╛рд╡рдзрд╛рдиреА:


 version: '3.4' services: dockerservicedemo: image: ${DOCKER_REGISTRY}dockerservicedemo build: context: . dockerfile: DockerServiceDemo/Dockerfile ports: - 5000:80 proxy: image: nginx:latest volumes: - ./DockerServiceDemo/nginx.conf:/etc/nginx/nginx.conf ports: - 80:80 

рдпрд╣рд╛рдБ рд╣рдо рдЕрдкрдиреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдПрдХ nginx рдЫрд╡рд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдореНтАНрдорд┐рд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдЗрд╕ рдЫрд╡рд┐ рдХреЛ рдПрдХ рдмрд╛рд╣рд░реА рд╕реЗрдЯрд┐рдВрдЧ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рд╣рдо рдЗрд╕реЗ рд╡реЙрд▓реНрдпреВрдо рдирд╛рдордХ рдПрдХ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдВрдЯреЗрдирд░ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдорд╛рдЙрдВрдЯ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЕрдВрдд рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ: рдЖрд░рдУ рддреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред


рдкреНрд░реЙрдХреНрд╕реА рдорд╢реАрди рдХреЗ рдмрд╛рд╣рд░реА 80 рд╡реЗрдВ рдкреЛрд░реНрдЯ рдХреЛ рд╕реБрдирддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдХрдВрдЯреЗрдирд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдФрд░ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЖрдВрддрд░рд┐рдХ 80 рд╡реЗрдВ рдкреЛрд░реНрдЯ рдкрд░ рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИред


рдбреЙрдХрд░-рдХрдВрдкреЛрдЬрд╝ рдЕрдк рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рд╕реЗ, рд╣рдо рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдХрд░реЗрдВрдЧреЗ, рдЕрд░реНрдерд╛рдд, рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рд╕реЗ рдирдЧреНрдиреЗрдХреНрд╕ рдЫрд╡рд┐ рдирд┐рдХрд╛рд▓реЗрдВ рдФрд░ рдкреНрд░реЙрдХреНрд╕реА рдХрдВрдЯреЗрдирд░ рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рдХрдВрдЯреЗрдирд░ рдХреЛ рд╢реБрд░реВ рдХрд░реЗрдВред рдЕрдм http: // localhost рдкрд░: 80 / рдпрд╣ nginx рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реБрд▓рдн рд╣реЛрдЧрд╛ред 5000 рд╡реЗрдВ рдмрдВрджрд░рдЧрд╛рд╣ рдкрд░, рдПрдкреНрд▓рд┐рдХреЗрд╢рди "рд╕реНрдкрд┐рди" рднреА рдХреЗрд╕реНрдЯреЗрд▓ рдХреЗ рддрд╣рдд рд╣реИред


рд╣рдо рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рд╕реЗ рд╣реЛрдХрд░ рдЧреБрдЬрд░рддрд╛ рд╣реИред Chrome рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдЯреИрдм рдкрд░ рдЬрд╛рдПрдВред рдпрд╣рд╛рдВ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рд╣реЗрдбрд░реНрд╕ рдЯреИрдм рдЪреБрдиреЗрдВред



рд╣рдо рдХрдВрдЯреЗрдирд░ рдХреЛ рдкреНрд░реЙрдХреНрд╕реА рдФрд░ HTTPS рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ


ASP.NET Core 2.1 рдиреЗ HTTPS рд╕рдорд░реНрдерди рдореЗрдВ рд╕реБрдзрд╛рд░ рд▓рд╛рдпрд╛ред
рдорд╛рди рд▓реЗрдВ рдХрд┐ рдирд┐рдореНрди рдорд┐рдбрд▓рд╡реЗрдпрд░ рдЖрдкрдХреЛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХрдиреЗрдХреНрд╢рди рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд╕реНрдерд╛рди рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:


 app.UseHttpsRedirection(); 

рдФрд░ рдЕрдЧрд▓рд╛ рдЖрдкрдХреЛ HTTP рд╕рдЦреНрдд рдкрд░рд┐рд╡рд╣рди рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ - HSTS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред


 app.UseHsts(); 

HSTS HTTP / 2 рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ 2015 рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рдереЗред рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИ рдФрд░ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЗрд╡рд▓ https рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рд╣рдорд▓реЗ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕реБрд░рдХреНрд╖рд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рджреМрд░рд╛рди рд╣рдорд▓рд╛рд╡рд░ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд http рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреНрд░рдордг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд┐рддрд┐ рдХрд╛ рд▓рд╛рдн рдЙрдард╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯреАрдПрд▓рдПрд╕ рдХреЛ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд░реЗрдВ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЛ рдмрджрд▓реЗрдВред


рдЖрдорддреМрд░ рдкрд░, рдЗрд╕ рддрд░рд╣ рдХреЗ рд╣рдорд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдирд╡-рдореЗрдВ-рдордзреНрдп рд╣рдорд▓реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ HSTS рдЖрдкрдХреЛ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рд╕реЗ рдирд╣реАрдВ рдмрдЪрд╛рддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ http рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдЗрдЯ рдкрд░ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ https рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред рддрдерд╛рдХрдерд┐рдд рдХреНрд░реЛрдо рдкреНрд░реАрд▓реЛрдб рд╕реВрдЪреА рд╣реИ , рдЬрд┐рд╕рдореЗрдВ рдЙрди рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдВрдХ рд╣реИрдВ рдЬреЛ https рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рдЕрдиреНрдп рдмреНрд░рд╛рдЙрдЬрд╝рд░ (рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕, рдУрдкреЗрд░рд╛, рд╕рдлрд╛рд░реА, рдПрдЬ) рдХреНрд░реЛрдо рд╕реВрдЪреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдИ рдЧрдИ https рд╕рд╛рдЗрдЯреЛрдВ рдХреА рд╕реВрдЪрд┐рдпреЛрдВ рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпреЗ рд╕рднреА рд╕реВрдЪрд┐рдпрд╛рдВ рд╕рднреА рд╕рд╛рдЗрдЯреЛрдВ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИрдВред


рдкрд╣рд▓реА рдмрд╛рд░ рдЬрдм рдЖрдк рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдХреЛрдИ рдХреЛрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдмрдирд╛рдпрд╛ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдФрд░ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ, рдЖрдк рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЗрд╕ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░реЗрдВрдЧреЗред MacOS рдкрд░ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ, рдЖрдк рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:
рдбреЙрдЯрдиреЗрдЯ рджреЗрд╡-рд╕реАрдЯреНрд╕ https -trust


рдпрджрд┐ рджреЗрд╡-рд╕реЗрд░реНрдЯреНрд╕ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 dotnet tool install --global dotnet-dev-certs 

рд▓рд┐рдирдХреНрд╕ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреИрд╕реЗ рдЬреЛрдбрд╝реЗрдВ рд╡рд┐рддрд░рдг рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдо рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред CA рджреНрд╡рд╛рд░рд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рд╕рдорд╛рди рд╣реИрдВред рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдЖрдк рдирд┐рд╢реБрд▓реНрдХ LetsEncrypt рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ


рдЖрдк рдХрдорд╛рдВрдб рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╛рдЗрд▓ рдХреЛ рдбреЗрд╡рд▓рдкрд░ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдПрдХреНрд╕рдкреЛрд░реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ


 dotnet dev-certs https -ep ___.pfx 

рдлрд╝рд╛рдЗрд▓ рдХреЛ Windows рдХреЗ рдЕрдВрддрд░реНрдЧрдд% APPDATA% / ASP.NET / Https / рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдпрд╛ macOS / Linux рдХреЗ рддрд╣рдд /root/.aspnet/https/ рдкрд░ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред


рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдФрд░ рдЙрд╕рдХреЗ рдкрд╛рд╕рд╡рд░реНрдб рдХрд╛ рдкрде рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрдЯреЗрдирд░ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░рд╣рд╕реНрдп рдмрдирд╛рдПрдВ:


 { "Kestrel":{ "Certificates":{ "Default":{ "Path": "/root/.aspnet/https/__.pfx", "Password": "___" } } } } 

рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдЕрдирдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреА рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЖрдЗрдХрди рдкрд░ рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдпрд╛ рд▓рд┐рдирдХреНрд╕ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рд░рд╣рд╕реНрдп рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред


рд╡рд┐рдВрдбреЛрдЬ рдкрд░, рдлрд╝рд╛рдЗрд▓ рдХреЛ% APPDATA% \ Microsoft \ UserSecrets \ <user_secrets_id> \ secret.json рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ macOS рдФрд░ Linux рдкрд░ рдЗрд╕реЗ ~ / .microsoft / usersecrets / <user_secrets_id> /secrets.json рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред


рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рд▓рд┐рдирдХреНрд╕ рд╡рд┐рддрд░рдг рд╕рд┐рд╕реНрдЯрдордб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╕реЗрд╡рд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рддрд╣рдд рд╕рд╣реЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:


 [Service] Environment="Kestrel _ Certificates _ Default _Path=/root/.aspnet/https/__.pfx" Environment="Kestrel _ Certificates _ Default _Password=___" 

рдЕрдЧрд▓рд╛, рдореИрдВ рддреБрд░рдВрдд https рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░реЙрдХреНрд╕реА рдФрд░ рдХрдВрдЯреЗрдирд░ рдХреЗ рд▓рд┐рдП docker рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдХрд╛рд░реНрдпрд╢реАрд▓ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рджреЗ рджреВрдВрдЧрд╛ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реВрдВрдЧрд╛ред


рдбреЙрдХрдЯрд░-рдХрдореНрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓:


 version: '3.4' services: dockerservicedemo21: image: ${DOCKER_REGISTRY}dockerservicedemo build: context: . dockerfile: DockerServiceDemo/Dockerfile  override: version: '3.4' services: dockerservicedemo: environment: - ASPNETCORE_ENVIRONMENT=Development - ASPNETCORE_URLS=https://+:44392;http://+:80 - ASPNETCORE_HTTPS_PORT=44392 ports: - "59404:80" - "44392:44392" volumes: - ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro - ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro proxy: image: nginx:latest volumes: - ./DockerServiceDemo/nginx.conf:/etc/nginx/nginx.conf - ./DockerServiceDemo/cert.crt:/etc/nginx/cert.crt - ./DockerServiceDemo/cert.rsa:/etc/nginx/cert.rsa ports: - "5001:44392" 

рдЕрдм рдореИрдВ рдЕрддреБрд▓рдиреАрдп рдХреНрд╖рдгреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред ASPNETCORE_URLS рд╣рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдореЗрдВ рдЗрдВрдЧрд┐рдд рдирд╣реАрдВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЬрд┐рд╕ рдкреЛрд░реНрдЯ рдкрд░ рд╕реБрди рд░рд╣рд╛ рд╣реИ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред


ASPNETCORE_HTTPS_PORT рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреНрдпрд╛ рдХрд░реЗрдЧрд╛ рдХреЗ рд╕рдорд╛рди рдПрдХ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ:
рд╕реЗрд╡рд╛рдПрдВ .ddHttpsRedirection (рд╡рд┐рдХрд▓реНрдк => рд╡рд┐рдХрд▓реНрдк редttpsPort = 44392)


рдпрд╣реА рд╣реИ, http рдЕрдиреБрд░реЛрдзреЛрдВ рд╕реЗ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ https рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреЛрд░реНрдЯ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдпрд╣ рд╕рдВрдХреЗрдд рдорд┐рд▓рддрд╛ рд╣реИ рдХрд┐ рдмрд╛рд╣рд░реА 59404 рд╡реЗрдВ рдмрдВрджрд░рдЧрд╛рд╣ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХреЛ 80 рд╡реЗрдВ рдХрдВрдЯреЗрдирд░ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ 44392 рд╡реЗрдВ рдмрд╛рд╣рд░реА рдмрдВрджрд░рдЧрд╛рд╣ рд╕реЗ 44392 рд╡реЗрдВ рддрдХред рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ, рдЪреВрдВрдХрд┐ рд╣рдордиреЗ рдПрдХ рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрди рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдкреЛрд░реНрдЯ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рд╡реЙрд▓реНрдпреВрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдПрдХ pfx рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдФрд░ рдПрдХ UserSecrets рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкрд╛рд╕рд╡рд░реНрдб рдФрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЗ рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдкреНрд░реЙрдХреНрд╕реА рдЕрдиреБрднрд╛рдЧ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ 5001 рд╡реЗрдВ рдмрд╛рд╣рд░реА рдмрдВрджрд░рдЧрд╛рд╣ рд╕реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ 44392 рд╡реЗрдВ рдирдЧреАрдирдХреНрд╕ рдмрдВрджрд░рдЧрд╛рд╣ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ nginx рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдорд╛рдЙрдВрдЯ рдХреА рдЧрдИ рд╣реИ, рд╕рд╛рде рд╣реА рдПрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдФрд░ рдПрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреБрдВрдЬреА рднреАред


Crt рдФрд░ rsa рдлрд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдирдХреЗ рд▓рд┐рдП рдПрдХрд▓ pfx рдкреНрд░рдорд╛рдгрдкрддреНрд░ (рдЬреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реИ) рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк OpenLL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


 openssl pkcs12 -in ./_.pfx -clcerts -nokeys -out domain.crt 

рдФрд░ рдлрд┐рд░ рдирд┐рдЬреА рдХреБрдВрдЬреА:


 openssl pkcs12 -in ./_.pfx -nocerts -nodes -out domain.rsa 

рдирдЧреАрди рд╡рд┐рдиреНрдпрд╛рд╕ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:


 worker_processes 4; events { worker_connections 1024; } http { sendfile on; upstream app_servers { server dockerservicedemo:44392; } server { listen 44392 ssl; ssl_certificate /etc/nginx/cert.crt; ssl_certificate_key /etc/nginx/cert.rsa; location / { proxy_pass https://app_servers; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } } 

рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рдкреЛрд░реНрдЯ 44392 рдкрд░ рд╕реБрди рд░рд╣рд╛ рд╣реИред рдпрд╣ рдкреЛрд░реНрдЯ 5001 рд╡реЗрдВ рд╣реЛрд╕реНрдЯ рдкреЛрд░реНрдЯ рд╕реЗ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж, рдкреНрд░реЙрдХреНрд╕реА dockerdemoservice рдХрдВрдЯреЗрдирд░ рдХреЗ 44392 рд╡реЗрдВ рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИред


рдЗрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ docker, microservices рдФрд░ nginx рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреА рдкреГрд╖реНрдарднреВрдорд┐ рдорд┐рд▓ рдЬрд╛рдПрдЧреАред


рд╣рдо рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╣реИрдХрд░ рдкрддреНрд░рд┐рдХрд╛ рдХреЗ рдПрдХ рд▓реЗрдЦ рдХрд╛ рдкреВрд░реНрдг рд╕рдВрд╕реНрдХрд░рдг рд╣реИред рдЗрд╕рдХреЗ рд▓реЗрдЦрдХ рдПрд▓реЗрдХреНрд╕реА рд╕реЛрдорд░ рд╣реИрдВ ред

Source: https://habr.com/ru/post/hi435914/


All Articles