рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдЧрд╛рдЗрдб, рднрд╛рдЧ 1: рдЕрдиреБрдкреНрд░рдпреЛрдЧ, рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕, рдФрд░ рдХрдВрдЯреЗрдирд░

рд╣рдорд╛рд░реЗ рдЕрдиреБрд░реЛрдз рдкрд░, рд╣реИрдмрд░ рдиреЗ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╣рдм рдмрдирд╛рдпрд╛ рдФрд░ рд╣рдо рдЗрд╕рдореЗрдВ рдкрд╣рд▓рд╛ рдкреНрд░рдХрд╛рд╢рди рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕рдиреНрди рд╣реИрдВред рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВ!

рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдЖрд╕рд╛рди рд╣реИред рдмреИрдВрдХ рдореБрдЭреЗ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреИрд╕реЗ рдХреНрдпреЛрдВ рджреЗрддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдХреЛрдИ рднреА рдЗрд╕ рддрдХрдиреАрдХ рдХреЛ рдХреЗрд╡рд▓ рдХреБрдЫ рдШрдВрдЯреЛрдВ рдореЗрдВ рдорд╛рд╕реНрдЯрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?



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

рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рдХреНрд░рдорд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг, рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЧрд╣рд░рд╛рдИ рджреЗрдЧрд╛ рддрд╛рдХрд┐ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рд╕рдм рдХреБрдЫ рдХрд┐рддрдирд╛ рд╕рд░рд▓ рд╣реИред Kubernetes, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдПрдХ рд╕рд░рд▓ рддрдХрдиреАрдХ рд╣реИ, рдмрд╢рд░реНрддреЗ рдХрд┐ рдЬреЛ рдХреЛрдИ рднреА рдЗрд╕реЗ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рд╡рд╣ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╣рд╛рдБ рдФрд░ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ


рд╣рдорд╛рд░рд╛ рдЖрд╡реЗрджрди рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдХрд╛рд░реНрдп рдХрд░реЗрдЧрд╛ред рдпрд╣ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдПрдХ рд╡рд╛рдХреНрдп, рдФрд░ рдлрд┐рд░, рдкрд╛рда рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЗрд╕ рд╡рд╛рдХреНрдп рдХреЗ рднрд╛рд╡рдирд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИ, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП рд╡рд╛рдХреНрдп рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рднрд╛рд╡рдирд╛рддреНрдордХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЕрдиреБрдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдореБрдЦреНрдп рд╡рд┐рдВрдбреЛ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред


рдкрд╛рда рднрд╛рд╡рдирд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ

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

  • SA-Frontend рдПрдХ Nginx рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╣реИ рдЬреЛ рд░рд┐рдПрдХреНрдЯ рд╕реНрдЯреИрдЯрд┐рдХ рдлрд╛рдЗрд▓реНрд╕ рдкрд░реЛрд╕рддрд╛ рд╣реИред
  • SA-WebApp рдПрдХ рдЬрд╛рд╡рд╛-рдЖрдзрд╛рд░рд┐рдд рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИ рдЬреЛ рдлреНрд░рдВрдЯ-рдПрдВрдб рд╕реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред
  • SA-Logic рдПрдХ рдкрд╛рдпрдерди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ рдЬреЛ рдЯреЗрдХреНрд╕реНрдЯ рд╕реЗрдВрдЯрд┐рдореЗрдВрдЯ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИред

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


рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░реАрдо

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

  1. рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рд░реНрд╡рд░ рд╕реЗ index.html рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ (рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреИрдХреЗрдЬ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реИ)ред
  2. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд╕реЗ рд╕реНрдкреНрд░рд┐рдВрдЧ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░ рдХреЙрд▓ рдЖрддреА рд╣реИред
  3. рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд╛рдпрдерди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЯреЗрдХреНрд╕реНрдЯ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
  4. рдкрд╛рдпрдерди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд╛рда рдХреА рдЯрди рдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдиреБрд░реЛрдз рдХреЗ рдЬрд╡рд╛рдм рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред
  5. рд╕реНрдкреНрд░рд┐рдВрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд░рд┐рдПрдХреНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рднреЗрдЬрддрд╛ рд╣реИ (рдФрд░ рдпрд╣ рдмрджрд▓реЗ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкрд╛рда рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рддрд╛ рд╣реИ)ред

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

рдПрдХ рд╕реНрдерд╛рдиреАрдп рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдПрдХ microservice- рдЖрдзрд╛рд░рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╢реБрд░реВ рдХрд░рдирд╛


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

рд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП .Configuring рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛


рд░рд┐рдПрдХреНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ Node.js рдФрд░ NPM рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рд╕рдм рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЯрд░реНрдорд┐рдирд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ sa-frontend рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рдПрдВ рдФрд░ рдирд┐рдореНрди рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ:

 npm install 

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

 npm start 

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

рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЖрд╡реЗрджрди рдХреА ationPreparation


рд░рд┐рдПрдХреНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрд╕реЗ рд╕реНрдерд┐рд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдореЗрдВ рдмрджрд▓рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд░рд┐рдПрдХреНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд┐рд░ рд╕реЗ, рдЯрд░реНрдорд┐рдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, sa-frontend рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рдПрдВ рдФрд░ рдирд┐рдореНрди рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдВ:

 npm run build 

рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ build рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдмрдирд╛рдПрдЧрд╛ред рдЗрд╕рдореЗрдВ рд░рд┐рдПрдХреНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд░реВрд░реА рд╕рднреА рд╕реНрдЯреИрдЯрд┐рдХ рдлрд╛рдЗрд▓реЗрдВ рд╣реЛрдВрдЧреАред

X Nginx рдЯреВрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд┐рд░ рдлрд╛рдЗрд▓реНрд╕ рдХреЛ рд╕реЗрд╡ рдХрд░рдирд╛


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ Nginx рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдЖрдк рдЗрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдФрд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдирд┐рд░реНрджреЗрд╢ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдлрд┐рд░ рдЖрдкрдХреЛ sa-frontend/build folder рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ [your_nginx_installation_dir]/html рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЙрдкреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЖрд╡реЗрджрди рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рдЙрддреНрдкрдиреНрди index.html рдлрд╝рд╛рдЗрд▓ [your_nginx_installation_dir]/html/index.html рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧреАред рдпрд╣ рд╡рд╣ рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, Nginx рд╕рд░реНрд╡рд░ рдЗрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рддреЗ рд╕рдордп рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИред рд╕рд░реНрд╡рд░ рдХреЛ рдкреЛрд░реНрдЯ 80 рдкрд░ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдлрд╛рдЗрд▓ [your_nginx_installation_dir]/conf/nginx.conf рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдм рдЕрдкрдирд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЦреЛрд▓реЗрдВ рдФрд░ localhost:80 ред рдЖрдкрдХреЛ рд░рд┐рдПрдХреНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреЗрдЬ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред


Nginx рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬрд╛ рдЧрдпрд╛ рд░рд┐рдПрдХреНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди

рдпрджрд┐ рдЖрдк Type your sentence рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЕрдм рдХреБрдЫ Type your sentence рд╣реИрдВ рдФрд░ Send рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди, рдпрджрд┐ рдЖрдк рдХрдВрд╕реЛрд▓ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╡рд╣рд╛рдВ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдХрд╣рд╛рдВ рд╣реЛрддреА рд╣реИрдВ, рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВред

Front рдлреНрд░рдВрдЯ-рдПрдВрдб рдПрдкреНрд▓реАрдХреЗрд╢рди рдХреЛрдб рдХрд╛ рдПрдирд▓рд┐рд╕рд┐рд╕


App.js рдлрд╝рд╛рдЗрд▓ рдХреЗ рдХреЛрдб рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдпрд╣ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ Send рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рд╕реЗ analyzeSentence() рд╡рд┐рдзрд┐ рдХрд╛ рдкрддрд╛ analyzeSentence() ред рдЗрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдХреЛрдб рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрд╕реА рд╕рдордп, рдЗрд╕ рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдлреЙрд░реНрдо # рдХреА рдЯрд┐рдкреНрдкрдгреА рд╣реИ, рдХреЛрдб рдХреЗ рдиреАрдЪреЗ рдПрдХ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрд╕реА рддрд░рд╣, рд╣рдо рдХреЛрдб рдХреЗ рдЕрдиреНрдп рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВрдЧреЗред

 analyzeSentence() {   fetch('http://localhost:8080/sentiment', {  // #1       method: 'POST',       headers: {           'Content-Type': 'application/json'       },       body: JSON.stringify({                      sentence: this.textField.getValue()})// #2   })       .then(response => response.json())       .then(data => this.setState(data));  // #3 } 

1. рд╡рд╣ URL рдЬрд┐рд╕ рдкрд░ POST рдЕрдиреБрд░реЛрдз рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкрддреЗ рдореЗрдВ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ рдЬреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред

2. рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рднреЗрдЬрд╛ рдЧрдпрд╛ рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдпред рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдп рд╣реИ:

 {   sentence: "I like yogobella!" } 

3. рдЕрдиреБрд░реЛрдз рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд┐рд▓рдиреЗ рдкрд░, рдШрдЯрдХ рд╕реНрдерд┐рддрд┐ рдЕрдкрдбреЗрдЯ рдХреА рдЬрд╛рддреА рд╣реИред рдпрд╣ рдШрдЯрдХ рдХреЛ рдкреБрди: рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ (рдЕрд░реНрдерд╛рдд, рдПрдХ JSON рдСрдмреНрдЬреЗрдХреНрдЯ рдЬрд┐рд╕рдореЗрдВ рджрд░реНрдЬ рдбреЗрдЯрд╛ рдФрд░ рдкрд░рд┐рдХрд▓рд┐рдд рдкрд╛рда рд╕реНрдХреЛрд░ рд╣реИ), рддреЛ рд╣рдо Polarity рдШрдЯрдХ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрдмрдВрдзрд┐рдд рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдорд┐рд▓реЗрдВрдЧреАред рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╣рдо рдШрдЯрдХ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ:

 const polarityComponent = this.state.polarity !== undefined ?   <Polarity sentence={this.state.sentence}             polarity={this.state.polarity}/> :   null; 

рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдб рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣рд╛рдБ рдЖрдЦрд┐рд░ рдЧрд▓рдд рдХреНрдпрд╛ рд╣реИ? рдпрджрд┐ рдЖрдк рдпрд╣ рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЬрд┐рд╕ рд╕реНрдерд╛рди рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди POST рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд╡рд╣рд╛рдВ рдЕрдм рддрдХ рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХреЗ рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХреЗ, рддреЛ рдЖрдк рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рд╣реЛрдВрдЧреЗред рдЕрд░реНрдерд╛рддреН, рдкрддрд╛ http://localhost:8080/sentiment рдкрд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╕реНрдкреНрд░рд┐рдВрдЧ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рд╣рдореЗрдВ рдПрдХ рд╕реНрдкреНрд░рд┐рдВрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ POST рдЕрдиреБрд░реЛрдз рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХреЗред

рд╕реНрдкреНрд░рд┐рдВрдЧ-рдЖрдзрд╛рд░рд┐рдд рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗрдЯ рдХрд░реЗрдВ


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

File рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЬрд╛рд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрджрд▓рдирд╛


рдЬрд╛рдУ, рдЯрд░реНрдорд┐рдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, sa-webapp рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдФрд░ рдирд┐рдореНрди рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░реЗрдВ:

 mvn install 

рдЗрд╕ рдХрдорд╛рдВрдб рдХреЛ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, target рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ sa-webapp рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдмрдирд╛рдИ рдЬрд╛рдПрдЧреАред sentiment-analysis-web-0.0.1-SNAPSHOT.jar рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддреБрдд рдПрдХ рдЬрд╛рд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреИрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ рдЬрд╛рд╡рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реЛрдЧрд╛ред

тЦНStart рдЬрд╛рд╡рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ


target рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рдПрдВ рдФрд░ рдирд┐рдореНрди рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ:

 java -jar sentiment-analysis-web-0.0.1-SNAPSHOT.jar 

рдЗрд╕ рдЖрджреЗрд╢ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреАред рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдбреЗрдЯрд╛ рдореЗрдВ рдЕрдкрд╡рд╛рдж рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 Error creating bean with name 'sentimentController': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'sa.logic.api.url' in value "${sa.logic.api.url}" 

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

Analysis рдЬрд╛рд╡рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг


рдпрд╣рд╛рдВ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рд╣реИ рдЬрд╣рд╛рдВ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИред

 @CrossOrigin(origins = "*") @RestController public class SentimentController {   @Value("${sa.logic.api.url}")    // #1   private String saLogicApiUrl;   @PostMapping("/sentiment")   public SentimentDto sentimentAnalysis(       @RequestBody SentenceDto sentenceDto)   {       RestTemplate restTemplate = new RestTemplate();       return restTemplate.postForEntity(               saLogicApiUrl + "/analyse/sentiment",    // #2               sentenceDto, SentimentDto.class)               .getBody();   } } 

  1. рдПрд╕ entimentController рдПрдХ saLogicApiUrl рдХреНрд╖реЗрддреНрд░ рд╣реИред рдЗрд╕рдХрд╛ рдорд╛рди sa.logic.api.url рд╕рдВрдкрддреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
  2. рд╕реНрдЯреНрд░рд┐рдВрдЧ saLogicApiUrl рдорд╛рди /analyse/sentiment рд╕рд╛рде saLogicApiUrl ред рд╕рд╛рде рдореЗрдВ рд╡реЗ рдкрд╛рда рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ microservice рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрддрд╛ рдмрдирд╛рддреЗ рд╣реИрдВред

рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ


рд╡рд╕рдВрдд рдореЗрдВ, рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдорд╛рдирдХ рд╕реНрд░реЛрдд application.properties рд╣реИред application.properties рдлрд╝рд╛рдЗрд▓, рдЬрд┐рд╕реЗ sa-webapp/src/main/resources рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдВрдкрддреНрддрд┐ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдЖрдк рдирд┐рдореНрди рдХреА рддрд░рд╣ рдПрдХ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 java -jar sentiment-analysis-web-0.0.1-SNAPSHOT.jar --sa.logic.api.url=WHAT.IS.THE.SA.LOGIC.API.URL 

рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдореВрд▓реНрдп рд╣рдорд╛рд░реЗ рдкрд╛рдпрдерди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкрддреЗ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рд╣рдорд╛рд░реЗ рдЬреАрд╡рди рдХреЛ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рддрдп рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдкрд╛рдпрдерди рдПрдкреНрд▓рд┐рдХреЗрд╢рди localhost:5000 рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рди рднреВрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред рдирддреАрдЬрддрди, рд╕реНрдкреНрд░рд┐рдВрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреА рдХрдорд╛рдВрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:

 java -jar sentiment-analysis-web-0.0.1-SNAPSHOT.jar --sa.logic.api.url=http://localhost:5000 


рд╣рдорд╛рд░реЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдкрд╛рдпрдерди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЕрднрд╛рд╡ рд╣реИ

рдЕрдм рд╣рдореЗрдВ рд╕рд┐рд░реНрдл рдкрд╛рдпрдерди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реИ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

On рдПрдХ рдЕрдЬрдЧрд░ рдЖрд╡реЗрджрди рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░реЗрдВ


рдкрд╛рдпрдерди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╛рдпрдерди 3 рдФрд░ рдкрд┐рдк рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЖрдкрдХреЛ рдЙрдЪрд┐рдд рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

Depend рдЖрд╢реНрд░рд┐рддреЛрдВ рдХреА рд╕реНрдерд╛рдкрдирд╛


рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ sa-logic/sa рдФрд░ рдирд┐рдореНрди рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдВ:

 python -m pip install -r requirements.txt python -m textblob.download_corpora 

ApplicationStart рдЖрд╡реЗрджрди


рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ:

 python sentiment_analysis.py 

рдЗрд╕ рдЖрджреЗрд╢ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:

 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit) 

рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдФрд░ localhost:5000/ рдкрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ localhost:5000/

тЦН рдХреЛрдб рдЕрдиреБрд╕рдВрдзрд╛рди


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

 from textblob import TextBlob from flask import Flask, request, jsonify app = Flask(__name__)                                   #1 @app.route("/analyse/sentiment", methods=['POST'])      #2 def analyse_sentiment():   sentence = request.get_json()['sentence']           #3   polarity = TextBlob(sentence).sentences[0].polarity #4   return jsonify(                                     #5       sentence=sentence,       polarity=polarity   ) if __name__ == '__main__':   app.run(host='0.0.0.0', port=5000)                #6 

  1. рдПрдХ Flask рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛ред
  2. рдЗрд╕рдХреЗ рд▓рд┐рдП POST рдЕрдиреБрд░реЛрдз рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрддрд╛ рд╕реЗрдЯ рдХрд░рдирд╛ред
  3. рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдп рд╕реЗ sentence рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╡рд╛рдкрд╕ рд▓реЗрдирд╛ред
  4. рдЕрдирд╛рдо TextBlob рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛ рдФрд░ рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдп рдореЗрдВ рдкрд╣рд▓реЗ рд╡рд╛рдХреНрдп рдХреЗ рд▓рд┐рдП polarity рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдкрд╛рд░рд┐рдд рдПрдХрдорд╛рддреНрд░ рд╡рд╛рдХреНрдп рд╣реИ)ред
  5. рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рд╡рд╛рдкрд╕реА, рдЬрд┐рд╕рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд╛ рдкрд╛рда рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЧрдгрдирд╛ рдХреА рдЧрдИ polarity рд╕реВрдЪрдХрд╛рдВрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
  6. рдлреНрд▓рд╛рд╕реНрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рдирд╛, рдЬреЛ 0.0.0.0:5000 ( 0.0.0.0:5000 рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ (рдЖрдк рдЗрд╕реЗ рдПрдХ 0.0.0.0:5000 localhost:5000 рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреА рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред

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


рдЖрд╡реЗрджрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдХреЛ рд╕реНрд╡рд╕реНрде рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЕрдм, рдЬрд╛рд░реА рд░рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд░рд┐рдПрдХреНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЦреЛрд▓реЗрдВ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреБрдЫ рд╕реБрдЭрд╛рд╡ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдпрджрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ Send рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЯреЗрдХреНрд╕реНрдЯ рдмреЙрдХреНрд╕ рдХреЗ рддрд╣рдд рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗред

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

рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░


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

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

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

рдХрдВрдЯреЗрдирд░реЛрдВ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рд╕реЗ рдЙрдирдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдФрд░ рдХрдВрдЯреЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░рд┐рдПрдХреНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╕реЗрд╡рд╛ рдХрд░рдиреЗ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░рд┐рдПрдХреНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдЯреИрдЯрд┐рдХ рдлрд╛рдЗрд▓реНрд╕ рдХреЛ рд╕реЙрд▓реНрд╡ рдХрд░рдирд╛


рдЖрднрд╛рд╕реА рдорд╢реАрдиреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд┐рд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд░рдЦрд░рдЦрд╛рд╡ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдиреБрдХрд╕рд╛рди рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░реЗрдВрдЧреЗ:

  1. рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЕрдХреБрд╢рд▓ рдЙрдкрдпреЛрдЧ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдПрдХ рдкреВрд░реНрдг рд╡рд┐рдХрд╕рд┐рдд рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╣реИред
  2. рдордВрдЪ рдкрд░ рдирд┐рд░реНрднрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрдерд╛рдиреАрдп рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЬреЛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рдХрд┐рд╕реА рдкреНрд░реЛрдбрдХреНрд╢рди рд╕рд░реНрд╡рд░ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред
  3. рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди-рдЖрдзрд╛рд░рд┐рдд рд╕рдорд╛рдзрд╛рди рдХрд╛ рдзреАрдорд╛ рдФрд░ рд╕рдВрд╕рд╛рдзрди-рдЧрд╣рди рд╕реНрдХреЗрд▓рд┐рдВрдЧред


рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓рд╛ Nginx static server рд╡реЗрдм рд╕рд░реНрд╡рд░

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

  1. рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдХреБрд╢рд▓ рдЙрдкрдпреЛрдЧ: рдбреЙрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ред
  2. рдордВрдЪ рдХреА рд╕реНрд╡рддрдВрддреНрд░рддрд╛ред рдПрдХ рдХрдВрдЯреЗрдирд░ рдЬреЛ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдЕрдкрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реИ рд╡рд╣ рдХрд╣реАрдВ рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
  3. рдЫрд╡рд┐ рдкрд░рддреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рд▓реНрдХреЗ рддреИрдирд╛рддреАред


рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЪрд▓рдиреЗ рд╡рд╛рд▓рд╛ рдирдВрдЧреЗрдХреНрд╕ рд╕реНрдЯреИрдЯрд┐рдХ рд╕рд░реНрд╡рд░ рд╡реЗрдм рд╕рд░реНрд╡рд░

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

тЦН рд░рд┐рдПрдХреНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдХрдВрдЯреЗрдирд░ рдЗрдореЗрдЬ рдХреЛ рдЕрд╕реЗрдВрдмрд▓ рдХрд░рдирд╛


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

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо Dockerfile рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ Dockerfile , рд╣рдореЗрдВ рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рд╣рдордиреЗ Nginx рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдерд╛:

  1. рд░рд┐рдПрдХреНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреИрдХреЗрдЬ ( npm run build ) рдмрдирд╛рдПрдВред
  2. Nginx рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рдирд╛ред
  3. build рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ sa-frontend рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ nginx/html рд╕рд░реНрд╡рд░ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВред

рдиреАрдЪреЗ рдЖрдк рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдиреЗ рдФрд░ рд╕реНрдерд╛рдиреАрдп рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдХрд┐рдП рдЧрдП рдЙрдкрд░реЛрдХреНрдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдорд╛рдирддрд╛рдПрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

Front SA-Frontend рдХреЗ рд▓рд┐рдП рдПрдХ Dockerfile рдмрдирд╛рдирд╛


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

  1. рдЫрд╡рд┐ рдХрд╛ рдЖрдзрд╛рд░ рдЖрдкрдХреЛ рдирд╛рдЗрдЬреЗрдХреНрд╕ рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
  2. sa-frontend/build рдлрд╝реЛрд▓реНрдбрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ nginx/html рдЫрд╡рд┐ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрджрд┐ рд╣рдо рдЗрд╕ рд╡рд┐рд╡рд░рдг рд╕реЗ Dockerfile рдореЗрдВ Dockerfile , рддреЛ рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

 FROM nginx COPY build /usr/share/nginx/html 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдЬрдмрдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рднреА рдХрд╛рдлреА рдкрдардиреАрдп рдФрд░ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рд╣реИред рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдЙрд╕ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдмрддрд╛рддреА рд╣реИ рдЬреЛ nginx рдЫрд╡рд┐ рдХреЛ рд╣рд░ рдЙрд╕ рдЪреАрдЬрд╝ рдХреЗ рд╕рд╛рде рд▓реЗрддрд╛ рд╣реИ рдЬреЛ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИ рдФрд░ build рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ nginx/html рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХреЙрдкреА рдХрд░рддрд╛ рд╣реИред

рдпрд╣рд╛рдБ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░рд╢реНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдмрд┐рд▓рдХреБрд▓ рд╕рд╣реА рдЬрд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ build рдлреЛрд▓реНрдбрд░ рдХреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдХрд╣рд╛рдВ рд╕реЗ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛рдиреА рдкрде /usr/share/nginx/html рдХрд╣рд╛рдВ рд╕реЗ рдЖрдпрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдФрд░ рдЬрдЯрд┐рд▓ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдЫрд╡рд┐ рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИред

Image рдПрдХ рдЫрд╡рд┐ рдмрдирд╛рдирд╛ рдФрд░ рдЙрд╕реЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛


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

  1. рдбреЙрдХрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред
  2. рдбреЙрдХрд░ рд╣рдм рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░реЗрдВред
  3. рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдЪрд▓рд╛рдХрд░ рдЦрд╛рддреЗ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░реЗрдВ:

     docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD" 

рдЕрдм рдЖрдкрдХреЛ sa-frontend рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд░реНрдорд┐рдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рд╡рд╣рд╛рдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдХреЛ рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛:

 docker build -f Dockerfile -t $DOCKER_USER_ID/sentiment-analysis-frontend . 

рдЗрд╕рдХреЗ рдмрд╛рдж рдЗрд╕реА рддрд░рд╣ рдХреЗ рдЖрджреЗрд╢реЛрдВ рдореЗрдВ, рдбреЙрдХрд░ рд╣рдм рдкрд░ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдХреЗ рд╕рд╛рде $DOCKER_USER_ID рдХреЛ $DOCKER_USER_ID рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдорд╛рдВрдб рдХрд╛ рдпрд╣ рднрд╛рдЧ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ: rinormaloku/sentiment-analysis-frontend ред

рдЙрд╕реА рд╕рдордп, рдЗрд╕ рдХрдорд╛рдВрдб рдХреЛ -f Dockerfile рд╕реЗ -f Dockerfile рдХреЛ рд╣рдЯрд╛рдХрд░ рдЫреЛрдЯрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдЙрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЗрд╕ рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВред

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

 docker push $DOCKER_USER_ID/sentiment-analysis-frontend 

рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рдж, рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдЪрд┐рддреНрд░ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХреНрд▓рд╛рдЙрдб рдкрд░ рднреЗрдЬрд╛ рдЧрдпрд╛ рдерд╛, рдбреЙрдХрд░ рд╣рдм рдкрд░ рдЕрдкрдиреЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА рд╕реВрдЪреА рджреЗрдЦреЗрдВред

тЦНStart рдХрдВрдЯреЗрдирд░


рдЕрдм рдХреЛрдИ рднреА $DOCKER_USER_ID/sentiment-analysis-frontend рд░реВрдк рдореЗрдВ рдЬрд╛рдиреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЫрд╡рд┐ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрди рдЕрдиреБрдХреНрд░рдо рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 docker pull $DOCKER_USER_ID/sentiment-analysis-frontend docker run -d -p 80:80 $DOCKER_USER_ID/sentiment-analysis-frontend 

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

  • рдкрд╣рд▓рд╛ рдирдВрдмрд░ 80 рд╣реЛрд╕реНрдЯ рдкреЛрд░реНрдЯ рдирдВрдмрд░ (рдпрд╛рдиреА рд╕реНрдерд╛рдиреАрдп рдХрдВрдкреНрдпреВрдЯрд░) рд╣реИред
  • рджреВрд╕рд░рд╛ рдирдВрдмрд░ 80 рдХрдВрдЯреЗрдирд░ рдХрд╛ рдмрдВрджрд░рдЧрд╛рд╣ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЕрдиреБрд░реЛрдз рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреГрд╖реНрдЯрд╛рдВрдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред


рдкреЛрд░реНрдЯ рдЕрдЧреНрд░реЗрд╖рдг

рд╕рд┐рд╕реНрдЯрдо <hostPort> рдкреЛрд░реНрдЯ рд╕реЗ <hostPort> рдкреЛрд░реНрдЯ рдкрд░ рд░рд┐рдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдХрдВрдЯреЗрдирд░ рдХреЗ 80 рдкреЛрд░реНрдЯ 80 рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рдкреЛрд░реНрдЯ 80 рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ 80 ред

рдЪреВрдВрдХрд┐ рдкреЛрд░реНрдЯ 80 рд╕реНрдерд╛рдиреАрдп рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЦреБрд▓рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЗрд╕ рдХрдВрдкреНрдпреВрдЯрд░ рд╕реЗ localhost:80 рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХрд╛ рд╕рд┐рд╕реНрдЯрдо рдбреЙрдХрд░ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдбреЙрдХрд░ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдкрд░ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдкрддрд╛ <docker-machine ip>:80 рдЬреИрд╕рд╛ рд▓рдЧреЗрдЧрд╛ред рдбреЙрдХрд░ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЗ рдЖрдИрдкреА рдкрддреЗ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк docker-machine ip рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕ рд╕реНрддрд░ рдкрд░, рдлреНрд░рдВрдЯрдПрдВрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрдВрдЯреЗрдирд░ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЗрд╕рдХреЗ рдкреГрд╖реНрда рдХреЛ рдЦреЛрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

тЦН .dockerignore рдлрд╝рд╛рдЗрд▓


SA-Frontend рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдЫрд╡рд┐ рдПрдХрддреНрд░ рдХрд░рдирд╛, рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмреЗрд╣рдж рдзреАрдореА рд╣реИред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЫрд╡рд┐ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╕рдВрджрд░реНрдн рдбреЙрдХрд░ рдбреЗрдорди рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдмрд┐рд▓реНрдб рд╕рдВрджрд░реНрдн рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ docker build рдХреЗ рдЕрдВрддрд┐рдо рддрд░реНрдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреА рдЬрд╛рддреА рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕ рдЖрджреЗрд╢ рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рдЕрд╡рдзрд┐ рд╣реИред рдпрд╣ рдирд┐рдореНрди рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ:

 sa-frontend: |   .dockerignore |   Dockerfile |   package.json |   README.md +---build +---node_modules +---public \---src 

рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдореМрдЬреВрдж рд╕рднреА рдлреЛрд▓реНрдбрд░ рдореЗрдВ, рд╣рдореЗрдВ рдХреЗрд╡рд▓ build рдлреЛрд▓реНрдбрд░ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╕рдордп рдХреА рдмрд░реНрдмрд╛рджреА рд╣реИред рдбреЙрдХрд░ рдХреЛ рдпрд╣ рдмрддрд╛рдХрд░ рдмрд┐рд▓реНрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ .dockerignore рдлрд╝рд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк .gitignore рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рддреЛ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рдВрд░рдЪрдирд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдЧреАред рдпрд╣ рдЙрди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЫрд╡рд┐ рдЕрд╕реЗрдВрдмрд▓реА рдкреНрд░рдгрд╛рд▓реА рдХреА рдЕрдирджреЗрдЦреА рдХрд░ рд╕рдХрддреА рд╣реИрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:

 node_modules src public 

.dockerignore рдлрд╝рд╛рдЗрд▓ .dockerignore рдХреЗ рд╕рдорд╛рди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЕрдм рдЗрдореЗрдЬ рдЕрд╕реЗрдВрдмрд▓ рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рд╕реЗрдХрдВрдб рдХрд╛ рд╕рдордп рд▓рдЧреЗрдЧрд╛ред

рдЕрдм рдЬрд╛рд╡рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рддреЗ рд╣реИрдВред

тЦН Java-


, . .

Dockerfile , sa-webapp . , , ENV EXPOSE :

 ENV SA_LOGIC_API_URL http://localhost:5000 тАж EXPOSE 8080 

ENV Docker. , URL API , .

EXPOSE Docker , . . , Dockerfile SA-Frontend . , , , Dockerfile .

, . тАФ README.md sa-webapp .

тЦН Python-


Dockerfile sa-logic , . , , , README.md sa-logic .

тЦН


- , ? . .

  1. sa-logic 5050 :

     docker run -d -p 5050:5000 $DOCKER_USER_ID/sentiment-analysis-logic 
  2. sa-webapp 8080 . , , Python- Java-, SA_LOGIC_API_URL :

     $ docker run -d -p 8080:8080 -e SA_LOGIC_API_URL='http://<container_ip or docker machine ip>:5000' $DOCKER_USER_ID/sentiment-analysis-web-app 

, IP- Docker тАФ README .

sa-frontend :

 docker run -d -p 80:80 $DOCKER_USER_ID/sentiment-analysis-frontend 

, localhost:80 .

, sa-webapp , Docker, App.js sa-frontend , IP- analyzeSentence() , . .

.




: Kubernetes?


Dockerfile , , Docker. , , .dockerignore . Docker. , Kubernetes. . :
, - . . , sa-webapp sa-logic . , ?

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


All Articles