рд╣рд╛рдореНрд░реЛ рдЕрдиреБрд░реЛрдзрдорд╛, Habr рд▓реЗ рдПрдЙрдЯрд╛ рд╣рдм рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдпреЛ
рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рд░ рд╣рд╛рдореА рдпрд╕рдорд╛ рдкрд╣рд┐рд▓реЛ рдкреНрд░рдХрд╛рд╢рди рд░рд╛рдЦреНрди рдкрд╛рдЙрдБрджрд╛ рдЦреБрд╕реА рдЫреМрдВред рд╕рджрд╕реНрдпрддрд╛ рд▓рд┐рдиреБрд╣реЛрд╕реН!
Kubernetes рд╕рдЬрд┐рд▓реЛ рдЫред рдХрд┐рди рдмреИрдВрдХрд╣рд░реВрд▓реЗ рдорд▓рд╛рдИ рдпрд╕ рдХреНрд╖реЗрддреНрд░рдорд╛ рдХрд╛рдо рдЧрд░реНрди рдзреЗрд░реИ рдкреИрд╕рд╛ рддрд┐рд░реНрдЫрдиреН, рдЬрдмрдХрд┐ рдХрд╕реИрд▓реЗ рдХреЗрд╣реА рдШрдгреНрдЯрд╛рдорд╛ рдпреЛ рдкреНрд░рд╡рд┐рдзрд┐ рдорд╛рд╕реНрдЯрд░ рдЧрд░реНрди рд╕рдХреНрдЫ?
рдпрджрд┐ рддрдкрд╛рдИрд▓рд╛рдИ рд╢рдВрдХрд╛ рдЫ рдХрд┐ Kubernetes рдпрддрд┐ рдЪрд╛рдБрдбреИ рд╕рд┐рдХреНрди рд╕рдХрд┐рдиреНрдЫ, рдо рд╕реБрдЭрд╛рд╡ рджрд┐рдиреНрдЫреБ рдХрд┐ рддрдкрд╛рдИ рдЖрдлреИрд▓реЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдЕрд░реНрдерд╛рддреН, рдпреЛ рд╕рд╛рдордЧреНрд░реАрдорд╛ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдЧрд░рд┐рд╕рдХреЗрдкрдЫрд┐, рддрдкрд╛рдЗрдБ рдХреБрдмреЗрд░рдиреЗрдЯ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрднрд┐рд╕реЗрд╕рд╣рд░реВрдорд╛ рдЖрдзрд╛рд░рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд▓рд╛рдЙрди рд╕рдХреНрд╖рдо рд╣реБрдиреБрд╣реБрдиреЗрдЫред рдо рдпрд╕рдХреЛ рдЧреНрдпрд╛рд░реЗрдиреНрдЯреА рдЧрд░реНрди рд╕рдХреНрдЫреБ, рдХрд┐рдирдХрд┐ рдпреЛ рдпрд╣рд╛рдБ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рдЙрд╣реА рд╡рд┐рдзрд┐ рд╣реЛ рдЬреБрди рдореИрд▓реЗ рд╣рд╛рдореНрд░рд╛ рдЧреНрд░рд╛рд╣рдХрд╣рд░реВрд▓рд╛рдИ Kubernetes рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрди рд╕рд┐рдХрд╛рдЙрдБрдЫреБред рдпреЛ рдЧрд╛рдЗрдбрд▓рд╛рдИ рдЕрд░реВрднрдиреНрджрд╛ рдХреЗ рдлрд░рдХ рдЫ? рд╡рд╛рд╕реНрддрд╡рдорд╛, рддреНрдпрд╣рд╛рдБ рдзреЗрд░реИ рдЪреАрдЬрд╣рд░реВ рдЫрдиреНред рддреНрдпрд╕реЛрднрдП, рдпреА рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рд╛рдордЧреНрд░реАрд╣рд░реВ рд╕рд╛рдзрд╛рд░рдг рдЪреАрдЬрд╣рд░реВрдХреЛ рд╡реНрдпрд╛рдЦреНрдпрд╛рдХреЛ рд╕рд╛рде рд╕реБрд░реВ рд╣реБрдиреНрдЫрдиреН - рдХреБрдмреЗрд░рдиреЗрдЯрдХрд╛ рдЕрд╡рдзрд╛рд░рдгрд╛рд╣рд░реВ рд░ рдХреБрдмреЗрдХреНрдЯрд▓ рдЖрджреЗрд╢рдХрд╛ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВред рдпреА рд╕рд╛рдордЧреНрд░реАрдХрд╛ рд▓реЗрдЦрдХрд╣рд░реВрд▓реЗ рдорд╛рдиреНрдЫрдиреН рдХрд┐ рддрд┐рдиреАрд╣рд░реВрдХрд╛ рдкрд╛рдардХрд╣рд░реВ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╛рд╕, рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд╛рд╣рд░реВ, рд░ рдбрдХрд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрд╕рдБрдЧ рдкрд░рд┐рдЪрд┐рдд рдЫрдиреНред рд╣рд╛рдореА рдЕрд░реНрдХреЛ рдмрд╛рдЯреЛ рдЬрд╛рдиреЗрдЫреМрдВред рдкрд╣рд┐рд▓реЗ, рд╣рд╛рдореА рдХрдореНрдкреНрдпреБрдЯрд░рдорд╛ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрднрд┐рд╕реЗрд╕рд╣рд░реВрдорд╛ рдЖрдзрд╛рд░рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╕рд░реА рдЪрд▓рд╛рдЙрдиреЗ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рдХреБрд░рд╛ рдЧрд░реНрдиреЗрдЫреМрдВред рддреНрдпрд╕рдкрдЫрд┐ рд╣рд╛рдореА рдкреНрд░рддреНрдпреЗрдХ microservice рдХреЛ рд▓рд╛рдЧрд┐ рдХрдиреНрдЯреЗрдирд░ рдЫрд╡рд┐рд╣рд░реВ рдирд┐рд░реНрдорд╛рдг рд╣реЗрд░реНрдиреЗрдЫреМрдВред рд░ рддреНрдпрд╕ рдкрдЫрд┐, рд╣рд╛рдореА Kubernetes рд╕рдБрдЧ рдкрд░рд┐рдЪрд┐рдд рд╣реБрдиреЗрдЫреМрдВ рд░ Kubernetes рджреНрд╡рд╛рд░рд╛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХреНрд▓рд╕реНрдЯрд░рдорд╛ microservices рдорд╛ рдЖрдзрд╛рд░рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддреИрдирд╛рдд рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ рд╣реЗрд░реНрдиреЗрдЫреМрдВред
рдпреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдг, рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдорд╛ рдХреНрд░рдорд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдгрдХреЛ рд╕рд╛рде, рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдорд╛ рд╕рдмреИ рдХреБрд░рд╛ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрджрдЫ рднрдиреЗрд░ рдмреБрдЭреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдФрд╕рдд рд╡реНрдпрдХреНрддрд┐рдХреЛ рд▓рд╛рдЧрд┐ рдЖрд╡рд╢реНрдпрдХ рдХреЗ рднрдЗрд░рд╣реЗрдХреЛ рдЫ рднрдиреЗрд░ рдмреБрдЭреНрдирдХреЛ рдЧрд╣рд┐рд░рд╛рдЗ рджрд┐рдиреЗрдЫред Kubernetes рдкрдХреНрдХреИ рдкрдирд┐ рдПрдХ рд╕рд░рд▓ рдкреНрд░рд╡рд┐рдзрд┐ рд╣реЛ, рдпрджрд┐ рдпреЛ рд╕рд┐рдХреНрди рдЪрд╛рд╣рдиреЗрд╣рд░реВрд▓рд╛рдИ рдпреЛ рдХрд╣рд╛рдБ рд░ рдХрд╕рд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ рднрдиреЗрд░ рдерд╛рд╣рд╛ рд╣реБрдиреНрдЫред
рдЕрдм, рдердк рд╡рд┐рдЬреНрдЮрд╛рдкрди рдмрд┐рдирд╛, рд╕реБрд░реБ рдЧрд░реМрдВ рд░ рд╣рд╛рдореАрд▓реЗ рдХрд╛рдо рдЧрд░реНрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреБрд░рд╛ рдЧрд░реМрдВред
рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдЖрд╡реЗрджрди
рд╣рд╛рдореНрд░реЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рдорд╛рддреНрд░ рдПрдХ рдкреНрд░рдХрд╛рд░реНрдп рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрдиреЗрдЫред рдпрд╕рд▓реЗ рдЗрдирдкреБрдЯрдХреЛ рд░реВрдкрдорд╛ рдПрдЙрдЯрд╛ рд╡рд╛рдХреНрдп рд▓рд┐рдиреНрдЫ, рддреНрдпрд╕рдкрдЫрд┐, рдкрд╛рда рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЙрдкрдХрд░рдгрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рдпрд╕рд▓реЗ рд╡рд╛рдХреНрдпрдХреЛ рд▓реЗрдЦрдХрдХреЛ рднрд╛рд╡рдирд╛рддреНрдордХ рдордиреЛрд╡реГрддреНрддрд┐рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╡рд╕реНрддреБрдХреЛ рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджреИ, рдпреЛ рд╡рд╛рдХреНрдпрдХреЛ рднрд╛рд╡рдирд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрджрдЫред
рдпреЛ рдпрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рдореБрдЦреНрдп рд╡рд┐рдиреНрдбреЛ рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫред
рдкрд╛рдард╣рд░реВрдХреЛ рднрд╛рд╡рдирд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХреЛ рд▓рд╛рдЧрд┐ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ
рдкреНрд░рд╛рд╡рд┐рдзрд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдгрдмрд╛рдЯ, рдПрдкреНрд▓рд┐рдХреЗрд╕рдирд▓реЗ рддреАрдирд╡рдЯрд╛ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрднрд┐рд╕реЗрд╕рд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ, рдЬрд╕рдордзреНрдпреЗ рдкреНрд░рддреНрдпреЗрдХрд▓реЗ рд╕рдорд╕реНрдпрд╛рд╣рд░реВрдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реЗрдЯ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджрдЫ:
- SA-Frontend рдПрдХ Nginx рд╡реЗрдм рд╕рд░реНрднрд░ рд╣реЛ рдЬрд╕рд▓реЗ рд╕реНрдерд┐рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдлрд╛рдЗрд▓рд╣рд░реВ рд╕реЗрд╡рд╛ рдЧрд░реНрджрдЫред
- SA-WebApp рдЬрд╛рднрд╛рдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реЛ рдЬрд╕рд▓реЗ рдлреНрд░рдиреНрдЯрдПрдиреНрдбрдмрд╛рдЯ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрджрдЫред
- SA-Logic рдПрдХ рдкрд╛рдЗрдерди рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реЛ рдЬрд╕рд▓реЗ рдкрд╛рдардорд╛ рднрд╛рд╡рдирд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрджрдЫред
рдпреЛ рдиреЛрдЯ рдЧрд░реНрди рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫ рдХрд┐ рдорд╛рдЗрдХреНрд░реЛ рд╕реЗрд╡рд╛рд╣рд░реВ рдЕрд▓рдЧрд╛рд╡рдорд╛ рдЕрд╡рд╕реНрдерд┐рдд рдЫреИрдирдиреНред рддрд┐рдиреАрд╣рд░реВрд▓реЗ "рдЬрд┐рдореНрдореЗрд╡рд╛рд░реАрд╣рд░реВрдХреЛ рд╡рд┐рднрд╛рдЬрди" рдХреЛ рд╡рд┐рдЪрд╛рд░ рд▓рд╛рдЧреВ рдЧрд░реНрдЫрдиреН, рддрд░ рдПрдХреИ рд╕рдордпрдорд╛ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдПрдХрдЕрд░реНрдХрд╛рд╕рдБрдЧ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред
рдЕрдиреБрдкреНрд░рдпреЛрдЧрдорд╛ рдбрд╛рдЯрд╛ рдкреНрд░рд╡рд╛рд╣
рдорд╛рдерд┐рдХреЛ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░рдорд╛, рддрдкрд╛рдЗрдБ рдкреНрд░рдгрд╛рд▓реАрдХреЛ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдЪрд░рдгрд╣рд░реВ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЕрдиреБрдкреНрд░рдпреЛрдЧрдорд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╡рд╛рд╣рдХреЛ рдЪрд┐рддреНрд░рдг рдЧрд░реНрджреИред рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╣реЗрд░реМрдВ:
- рдмреНрд░рд╛рдЙрдЬрд░рд▓реЗ рд╕рд░реНрднрд░рдмрд╛рдЯ рдлрд╛рдЗрд▓ рдЕрдиреБрд░реЛрдз рдЧрд░реНрджрдЫ
index.html
(рдЬреБрди, рдмрд╛рд░реАрдорд╛, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреНрдпрд╛рдХреЗрдЬ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрджрдЫ)ред - рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╕рдБрдЧ рдЕрдиреНрддрд░реНрдХреНрд░рд┐рдпрд╛ рдЧрд░реНрджрдЫ, рдпрд╕рд▓реЗ рд╡рд╕рдиреНрдд-рдЖрдзрд╛рд░рд┐рдд рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧрдорд╛ рдХрд▓ рдЧрд░реНрджрдЫред
- рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рдкрд╛рдЗрдерди рдЕрдиреБрдкреНрд░рдпреЛрдЧрдорд╛ рдкрд╛рда рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрди рдЕрдиреБрд░реЛрдз рдлрд░реНрд╡рд╛рд░реНрдб рдЧрд░реНрджрдЫред
- рдкрд╛рдЗрдерди рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рдкрд╛рдардХреЛ рднрд╛рд╡рдирд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрдЫ рд░ рдЕрдиреБрд░реЛрдзрдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдХреЛ рд░реВрдкрдорд╛ рдкрд░рд┐рдгрд╛рдо рдлрд░реНрдХрд╛рдЙрдБрдЫред
- рд╡рд╕рдиреНрдд рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдорд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкрдард╛рдЙрдБрдЫ (рдЬрд╕рд▓реЗ, рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓рд╛рдИ рдкрд╛рда рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХреЛ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦрд╛рдЙрдБрдЫ)ред
рдпреА рд╕рдмреИ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдХреЛрдб рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХрд┐рдиреНрдЫ
рддрдкрд╛рдИрдХреЛ рд╕реНрдерд╛рдиреАрдп рдореЗрд╕рд┐рдирдорд╛ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрднрд┐рд╕реЗрд╕-рдЖрдзрд╛рд░рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд▓рд╛рдЙрдБрджреИ
рдПрдкреНрд▓рд┐рдХреЗрд╕рдирд▓реЗ рдХрд╛рдо рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореАрд▓реЗ рддреАрдирд╡рдЯреИ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрднрд┐рд╕реЗрд╕рд╣рд░реВ рд╕реБрд░реБ рдЧрд░реНрдиреБрдкрд░реНрдЫред рддреА рд╕рдмреИрдХреЛ рд╕рдмреИрднрдиреНрджрд╛ рдкреНрдпрд╛рд░реЛрд╕рдБрдЧ рд╕реБрд░реБ рдЧрд░реМрдВ - рдлреНрд░рдиреНрдЯ-рдПрдиреНрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧред
тЦНрд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХрд╛рд╕рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реЗрдЯ рдЕрдк рдЧрд░реНрдиреБрд╣реЛрд╕реН
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдЖрдлреНрдиреЛ рдХрдореНрдкреНрдпреБрдЯрд░рдорд╛ Node.js рдкреНрд▓реЗрдЯрдлрд░реНрдо рд░ NPM рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдПрдХрдЪреЛрдЯрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдпреЛ рд╕рдмреИ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реЗрдкрдЫрд┐, рддрдкрд╛рдИрдВрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлреЛрд▓реНрдбрд░рдорд╛ рдиреЗрднрд┐рдЧреЗрдЯ рдЧрд░реНрди рдЯрд░реНрдорд┐рдирд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН sa-frontend
рд░ рдирд┐рдореНрди рдЖрджреЗрд╢ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН:
npm install
рдлреЛрд▓реНрдбрд░рдорд╛ рдпреЛ рдЖрджреЗрд╢ рдЪрд▓рд╛рдПрд░ node_modules
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рд▓реЛрдб рд╣реБрдиреЗрдЫрдиреН, рдЬрд╕рдХрд╛ рд░реЗрдХрд░реНрдбрд╣рд░реВ рдлрд╛рдЗрд▓рдорд╛ рдЫрдиреН package.json
ред рдПрдЙрдЯреИ рдлреЛрд▓реНрдбрд░рдорд╛ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рдбрд╛рдЙрдирд▓реЛрдб рднрдПрдкрдЫрд┐, рдирд┐рдореНрди рдЖрджреЗрд╢ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН:
npm start
рдпрддрд┐ рдиреИред рдЕрдм рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЫ, рддрдкрд╛рдИрдВрд▓реЗ рдЖрдлреНрдиреЛ рдмреНрд░рд╛рдЙрдЬрд░рдорд╛ рдирд┐рдореНрди рдареЗрдЧрд╛рдирд╛рдорд╛ рдЧрдПрд░ рдпрд╕рд▓рд╛рдИ рдкрд╣реБрдБрдЪ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ: localhost:3000
ред рддрдкрд╛рдИрдВ рдпрд╕рдХреЛ рдХреЛрдбрдорд╛ рдХреЗрд╣рд┐ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рддрдкрд╛рдИрдВрд▓реЗ рддреБрд░реБрдиреНрддреИ рдмреНрд░рд╛рдЙрдЬрд░рдорд╛ рдпреА рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВрдХреЛ рдкреНрд░рднрд╛рд╡ рджреЗрдЦреНрдиреБрд╣реБрдиреЗрдЫред рдпреЛ рддрдерд╛рдХрдерд┐рдд "рддрд╛рддреЛ" рдореЛрдбреНрдпреБрд▓рд╣рд░реВрдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕рдореНрднрд╡ рдЫред рдпрд╕рд▓реЗ рдлреНрд░рдиреНрдЯ-рдПрдиреНрдб рд╡рд┐рдХрд╛рд╕рд▓рд╛рдИ рд╕рд░рд▓ рд░ рд░рдорд╛рдЗрд▓реЛ рдЕрдиреБрднрд╡ рдмрдирд╛рдЙрдБрдЫред
тЦНрдЙрддреНрдкрд╛рджрдирдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддрдпрд╛рд░ рдЧрд░реНрджреИ
рд╡рд╛рд╕реНрддрд╡рдорд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдЙрджреНрджреЗрд╢реНрдпрдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ рд╕реНрдерд┐рд░ рдлрд╛рдЗрд▓рд╣рд░реВрдХреЛ рд╕реЗрдЯрдорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реНрди рд░ рд╡реЗрдм рд╕рд░реНрднрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЧреНрд░рд╛рд╣рдХрд╣рд░реВрд▓рд╛рдИ рд╕реЗрд╡рд╛ рджрд┐рди рдЖрд╡рд╢реНрдпрдХ рдЫред
React рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди, рдлреЗрд░рд┐ рдЯрд░реНрдорд┐рдирд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рдлреЛрд▓реНрдбрд░рдорд╛ рдиреЗрднрд┐рдЧреЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН sa-frontend
рд░ рдирд┐рдореНрди рдЖрджреЗрд╢ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН:
npm run build
рдпрд╕рд▓реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдлреЛрд▓реНрдбрд░рдорд╛ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реА рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗрдЫ build
ред рдпрд╕рд▓реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рдХрд╛рдо рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдЖрд╡рд╢реНрдпрдХ рд╕рдмреИ рд╕реНрдерд┐рд░ рдлрд╛рдЗрд▓рд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫред
тЦН Nginx рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕реНрдерд┐рд░ рдлрд╛рдЗрд▓рд╣рд░реВ рд╕реЗрд╡рд╛ рдЧрд░реНрджреИ
рдкрд╣рд┐рд▓реЗ рддрдкрд╛рдИрдВрд▓реЗ Nginx рд╡реЗрдм рд╕рд░реНрднрд░ рд╕реНрдерд╛рдкрдирд╛ рд░ рдЪрд▓рд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫред sa-frontend/build
рдлреЛрд▓реНрдбрд░рдорд╛ [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
рд░ рдмрдЯрди рдерд┐рдЪреНрдиреБрд╣реЛрд╕реН Send
-рдХреЗрд╣реА рд╣реБрдиреЗ рдЫреИрдиред рддрд░, рдпрджрд┐ рддрдкрд╛рдЗрдБ рдХрдиреНрд╕реЛрд▓рдорд╛ рд╣реЗрд░реНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рддреНрдпрд╣рд╛рдБ рддреНрд░реБрдЯрд┐ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рд╡рд╛рд╕реНрддрд╡рдорд╛ рдпреА рддреНрд░реБрдЯрд┐рд╣рд░реВ рдХрд╣рд╛рдБ рд╣реБрдиреНрдЫрдиреН рднрдиреЗрд░ рдмреБрдЭреНрдирдХреЛ рд▓рд╛рдЧрд┐, рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдХреЛрдбрдХреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реМрдВред
тЦНрдлреНрд░рдиреНрдЯ-рдПрдиреНрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг
рдлрд╛рдЗрд▓ рдХреЛрдб рд╣реЗрд░реНрджреИ App.js
, рд╣рд╛рдореА рддреНрдпреЛ рдмрдЯрди рдерд┐рдЪреЗрд░ рджреЗрдЦреНрди рд╕рдХреНрдЫреМрдВ Send
рд╡рд┐рдзрд┐ рдмреЛрд▓рд╛рдЙрдБрдЫрдиреН 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. POST рдЕрдиреБрд░реЛрдз рдЧрд░рд┐рдПрдХреЛ URLред рдпреЛ рдареЗрдЧрд╛рдирд╛рдорд╛ рдПрдЙрдЯрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЫ рдЬреБрди рддреНрдпрд╕реНрддрд╛ рдЕрдиреБрд░реЛрдзрд╣рд░реВрдХреЛ рдЕрдкреЗрдХреНрд╖рд╛ рдЧрд░реНрджрдЫ рднрдиреНрдиреЗ рдорд╛рдирд┐рдиреНрдЫред
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 рд░ Maven рд░ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ рд╡рд╛рддрд╛рд╡рд░рдгреАрдп рдЪрд░рд╣рд░реВ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджрдЫред рдПрдХрдЪреЛрдЯрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдпреА рд╕рдмреИ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реЗрдкрдЫрд┐, рддрдкрд╛рдИрдВ рд╣рд╛рдореНрд░реЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛрдХрд╛рдо рдЬрд╛рд░реА рд░рд╛рдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
тЦНрдПрдкреНрд▓рд┐рдХреЗрд╕рдирд▓рд╛рдИ рдЬрд╛рд░ рдлрд╛рдЗрд▓рдорд╛ рдкреНрдпрд╛рдХреЗрдЬ рдЧрд░реНрдиреЗ
рдиреЗрднрд┐рдЧреЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЯрд░реНрдорд┐рдирд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рдлреЛрд▓реНрдбрд░рдорд╛ sa-webapp
рд░ рдирд┐рдореНрди рдЖрджреЗрд╢ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН:
mvn install
рдлреЛрд▓реНрдбрд░рдорд╛ рдпреЛ рдЖрджреЗрд╢ рдЪрд▓рд╛рдЙрди рдкрдЫрд┐ sa-webapp
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдЗрдиреЗрдЫ target
ред рдпреЛ рдЬрд╣рд╛рдБ Java рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЕрд╡рд╕реНрдерд┐рдд рд╣реБрдиреЗрдЫ, рдЬрд╛рд░ рдлрд╛рдЗрд▓рдорд╛ рдкреНрдпрд╛рдХреЗрдЬ рдЧрд░рд┐рдПрдХреЛ рдЫ, рдлрд╛рдЗрд▓рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЧрд░рд┐рдПрдХреЛ рдЫ sentiment-analysis-web-0.0.1-SNAPSHOT.jar
.
тЦН Java рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд▓рд╛рдЙрдБрджреИ
рдлреЛрд▓реНрдбрд░рдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реН 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
ред рдХреЛрдбрдХреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реМрдВ рдЬрд╕рдорд╛ рддреНрд░реБрдЯрд┐ рд╣реБрдиреНрдЫред
тЦНрдЬрд╛рднрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг
рдпрд╣рд╛рдБ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдЫ рдЬрд╣рд╛рдБ рддреНрд░реБрдЯрд┐ рд╣реБрдиреНрдЫред
@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();
}
}
- рдорд╛ рдПрд╕
entimentController
рддреНрдпрд╣рд╛рдБ рдПрдХ рдХреНрд╖реЗрддреНрд░ рдЫsaLogicApiUrl
ред рдпрд╕рдХреЛ рдореВрд▓реНрдп рд╕рдореНрдкрддреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫsa.logic.api.url
. - рд▓рд╛рдЗрди
saLogicApiUrl
рдореВрд▓реНрдп рд╕рдВрдЧ рдЬреЛрдбрд┐рдПрдХреЛ рдЫ/analyse/sentiment
ред рд╕рдБрдЧреИ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдкрд╛рда рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрдиреЗ рдорд╛рдЗрдХреНрд░реЛ рд╕реЗрд╡рд╛рдорд╛ рдХрд▓ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдареЗрдЧрд╛рдирд╛ рдмрдирд╛рдЙрдБрдЫрдиреНред
тЦНрдПрдХ рд╕рдореНрдкрддреНрддрд┐ рдореВрд▓реНрдп рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН
рд╡рд╕рдиреНрддрдорд╛, рд╕рдореНрдкрддреНрддрд┐ рдорд╛рдирд╣рд░реВрдХреЛ рдорд╛рдирдХ рд╕реНрд░реЛрдд рдлрд╛рдЗрд▓ рд╣реЛ 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
рд╣рд╛рдореНрд░реЛ рдкреНрд░рдгрд╛рд▓реАрдорд╛ рдкрд╛рдЗрдерди рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЫреБрдЯреЗрдХреЛ рдЫ
рдЕрдм рд╣рд╛рдореАрд▓реЗ рдЧрд░реНрдиреБрдкрд░реНрдиреЗ рднрдиреЗрдХреЛ рдкрд╛рдЗрдерди рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд▓рд╛рдЙрдиреБ рд╣реЛ рд░ рдкреНрд░рдгрд╛рд▓реАрд▓реЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрдиреЗрдЫред
тЦНрдкрд╛рдЗрдерди рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реЗрдЯрдЕрдк рдЧрд░реНрджреИ
рдкрд╛рдЗрдерди рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдЗрдБрд╕рдБрдЧ рдкрд╛рдЗрдерди 3 рд░ Pip рд╕реНрдерд╛рдкрд┐рдд рд╣реБрдиреБрдкрд░реНрдЫ, рд░ рдЙрдкрдпреБрдХреНрдд рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░рд╣рд░реВ рд╕рд╣реА рд░реВрдкрдорд╛ рд╕реЗрдЯ рд╣реБрдиреБрдкрд░реНрдЫред
тЦНрдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджреИ
рдЖрдлреНрдиреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдлреЛрд▓реНрдбрд░рдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реН sa-logic/sa
рд░ рдирд┐рдореНрди рдЖрджреЗрд╢рд╣рд░реВ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН:
python -m pip install -r requirements.txt
python -m textblob.download_corpora
тЦНрдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реН
рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реЗрдкрдЫрд┐, рд╣рд╛рдореА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд▓рд╛рдЙрди рддрдпрд╛рд░ рдЫреМрдВ:
python sentiment_analysis.py
рдпреЛ рдЖрджреЗрд╢ рдЪрд▓рд╛рдПрдкрдЫрд┐ рд╣рд╛рдореАрд▓рд╛рдИ рдирд┐рдореНрди рднрдирд┐рдиреЗрдЫ:
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
рдпрд╕рдХреЛ рдорддрд▓рдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЫ рд░ рдЕрдиреБрд░реЛрдзрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдЦрд┐рд░рд╣реЗрдХреЛ рдЫ 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
- рд╡рд╕реНрддреБ рдкреНрд░рд╛рд░рдореНрдн рдЧрд░реНрджреИ
Flask
. - POST рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдареЗрдЧрд╛рдирд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрджреИред
- рдПрдХ рд╕рдореНрдкрддреНрддрд┐ рдкреБрди: рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджреИ
sentence
рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдпрдмрд╛рдЯред - рдмреЗрдирд╛рдореА рд╡рд╕реНрддреБ рдкреНрд░рд╛рд░рдореНрдн рдЧрд░реНрджреИ
TextBlob
рд░ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджреИpolarity
рдЕрдиреБрд░реЛрдзрдХреЛ рдореБрдЦреНрдп рднрд╛рдЧрдорд╛ рдкреНрд░рд╛рдкреНрдд рднрдПрдХреЛ рдкрд╣рд┐рд▓реЛ рд╡рд╛рдХреНрдпрдХреЛ рд▓рд╛рдЧрд┐ (рд╣рд╛рдореНрд░реЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХреЛ рд▓рд╛рдЧрд┐ рдкрдард╛рдЗрдПрдХреЛ рдорд╛рддреНрд░ рд╡рд╛рдХреНрдп рд╣реЛ)ред - рдЬрд╡рд╛рдл рдлрд░реНрдХрд╛рдЙрдБрджреИ рдЬрд╕рдХреЛ рд╢рд░реАрд░рдорд╛ рд╡рд╛рдХреНрдпрдХреЛ рдкрд╛рда рд░ рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдЧрдгрдирд╛ рдЧрд░рд┐рдПрдХреЛ рд╕реВрдЪрдХ рд╕рдорд╛рд╡реЗрд╢ рдЫ
polarity
. - рдПрдЙрдЯрд╛ рдлреНрд▓рд╛рд╕реНрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЬреБрди рдорд╛ рдЙрдкрд▓рдмреНрдз рд╣реБрдиреЗрдЫ
0.0.0.0:5000
(рддрдкрд╛рдИрд▓реЗ рдлрд╛рд░рдордХреЛ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкрдирд┐ рдкрд╣реБрдБрдЪ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫlocalhost:5000
).
рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдмрдирд╛рдЙрдиреЗ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрднрд┐рд╕рд╣рд░реВ рдЕрд╣рд┐рд▓реЗ рдЪрд▓рд┐рд░рд╣реЗрдХрд╛ рдЫрдиреНред рддрд┐рдиреАрд╣рд░реВ рдПрдХрдЕрд░реНрдХрд╛рд╕рдБрдЧ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдЧрд░реНрди рдЯреНрдпреБрди рдЫрдиреНред рдпреЛ рдХрд╛рдо рдХреЛ рдпреЛ рдЪрд░рдг рдорд╛ рдЖрд╡реЗрджрди рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫред
рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдмрдирд╛рдЙрдиреЗ рд╕рдмреИ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд╛рд╣рд░реВ рдХрд╛рд░реНрдп рдХреНрд░рдордорд╛ рд▓реНрдпрд╛рдЗрдиреНрдЫ
рдЕрдм, рддрдкрд╛рдЗрдБ рдЬрд╛рд░реА рд░рд╛рдЦреНрдиреБ рдЕрдШрд┐, рдмреНрд░рд╛рдЙрдЬрд░рдорд╛ рддрдкрд╛рдЗрдБрдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЦреЛрд▓реНрдиреБрд╣реЛрд╕реН рд░ рдпрд╕рдХреЛ рд╕рд╛рде рдХреЗрд╣рд┐ рд╡рд╛рдХреНрдп рдкрд╛рд░реНрд╕ рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдпрджрд┐ рд╕рдмреИ рдХреБрд░рд╛ рд╕рд╣реА рдЫ рднрдиреЗ - рдмрдЯрди рдерд┐рдЪреЗ рдкрдЫрд┐ Send
рддрдкрд╛рдИрдВрд▓реЗ рдкрд╛рда рдлрд┐рд▓реНрдбрдХреЛ рддрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рджреЗрдЦреНрдиреБрд╣реБрдиреЗрдЫред
рдЕрд░реНрдХреЛ рдЦрдгреНрдбрдорд╛, рд╣рд╛рдореА рдбрдХрд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдорд╛ рд╣рд╛рдореНрд░реЛ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрд╕рд╣рд░реВ рдХрд╕рд░реА рдЪрд▓рд╛рдЙрдиреЗ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рдХреБрд░рд╛ рдЧрд░реНрдиреЗрдЫреМрдВред Kubernetes рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддрдпрд╛рд░ рдЧрд░реНрди рдпреЛ рдЖрд╡рд╢реНрдпрдХ рдЫред
рдбрдХрд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ
рдХрдиреНрдЯреЗрдирд░ рдЫрд╡рд┐ рдПрдХ рд╣рд▓реНрдХрд╛ рд╡рдЬрди, рдЖрддреНрдо-рдирд┐рд╣рд┐рдд, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдпреЛрдЧреНрдп рдкреНрдпрд╛рдХреЗрдЬ рд╣реЛ рдЬреБрди рдПрдЙрдЯрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ, рдЬрд╕рдорд╛ рдпрд╕рд▓рд╛рдИ рдЪрд▓рд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рд╕рдмреИ рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдиреНрдЫ: рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛрдб, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд╛рддрд╛рд╡рд░рдг, рдкреНрд░рдгрд╛рд▓реА рдЙрдкрдХрд░рдг рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВ, рд╕реЗрдЯрд┐рдЩрд╣рд░реВред рдХрдиреНрдЯреЗрдирд░рд╛рдЗрдЬреНрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд╣рд░реВ рд▓рд┐рдирдХреНрд╕ рд░ рд╡рд┐рдиреНрдбреЛрдЬ рд╡рд╛рддрд╛рд╡рд░рдгрд╣рд░реВрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рд░ рддрд┐рдиреАрд╣рд░реВ рд╕рдзреИрдВ рдкреВрд░реНрд╡рд╛рдзрд╛рд░рдХреЛ рдкрд░реНрд╡рд╛рд╣ рдирдЧрд░реА рд╕рдорд╛рди рдХрд╛рдо рдЧрд░реНрдиреЗрдЫрдиреНред
рдпрд╕рдХреЛ рдорддрд▓рдм рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рдЙрддреНрдкрд╛рджрди рд╕рд░реНрднрд░рд╣рд░реВ рд╕рд╣рд┐рдд рдХреБрдиреИ рдкрдирд┐ рдХрдореНрдкреНрдпреБрдЯрд░рдорд╛ рдЪрд▓рд╛рдЙрди рд╕рдХрд┐рдиреНрдЫ, рд░ рддрд┐рдиреАрд╣рд░реВрдорд╛ рд░рд╣реЗрдХрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрд▓реЗ рдХреБрдиреИ рдкрдирд┐ рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рд╕рдорд╛рди рдХрд╛рдо рдЧрд░реНрдиреЗрдЫрдиреНред
рдХрдиреНрдЯреЗрдирд░рдХрд╛ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдЕрдиреНрд╡реЗрд╖рдг рдЧрд░реНрди рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдЪрд▓рд╛рдЙрдиреЗ рдЕрдиреНрдп рддрд░рд┐рдХрд╛рд╣рд░реВрд╕рдБрдЧ рддреБрд▓рдирд╛ рдЧрд░реНрди, рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рди рд░ рдХрдиреНрдЯреЗрдирд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реЗрд╡рд╛ рдЧрд░реНрдиреЗ рдЙрджрд╛рд╣рд░рдг рд╣реЗрд░реМрдВред
тЦН рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рди рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд╕реНрдерд┐рд░ рдлрд╛рдЗрд▓рд╣рд░реВ рд╕реЗрд╡рд╛ рдЧрд░реНрджреИ
рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕реНрдерд┐рд░ рдлрд╛рдЗрд▓рд╣рд░реВрдХреЛ рд╕реЗрд╡рд╛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реНрди рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрджреИ, рд╣рд╛рдореА рдирд┐рдореНрди рдмреЗрдлрд╛рдЗрджрд╛рд╣рд░реВ рд╕рд╛рдордирд╛ рдЧрд░реНрдиреЗрдЫреМрдВ:
- рд╕реНрд░реЛрддрд╣рд░реВрдХреЛ рдЕрдХреБрд╢рд▓ рдкреНрд░рдпреЛрдЧ, рдХрд┐рдирдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рди рдПрдХ рдкреВрд░реНрдг рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдо рд╣реЛред
- рдкреНрд▓реЗрдЯрдлрд░реНрдо рдирд┐рд░реНрднрд░рддрд╛ред рд╕реНрдерд╛рдиреАрдп рдХрдореНрдкреНрдпреБрдЯрд░рдорд╛ рдХрд╛рдо рдЧрд░реНрдиреЗ рдХреБрд░рд╛ рдЙрддреНрдкрд╛рджрди рд╕рд░реНрднрд░рдорд╛ рдХрд╛рдо рдирдЧрд░реНрди рд╕рдХреНрдЫред
- рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рди-рдЖрдзрд╛рд░рд┐рдд рд╕рдорд╛рдзрд╛рдирдХреЛ рдврд┐рд▓реЛ рд░ рд╕рдВрд╕рд╛рдзрди-рдЧрд╣рди рд╕реНрдХреЗрд▓рд┐рдВрдЧред
Nginx рд╡реЗрдм рд╕рд░реНрднрд░ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рд╕реНрдерд┐рд░ рдлрд╛рдЗрд▓рд╣рд░реВ рд╕реЗрд╡рд╛ рдЧрд░реНрджреИ
рдпрджрд┐ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ рднрдиреЗ, рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирд╣рд░реВрдХреЛ рддреБрд▓рдирд╛рдорд╛, рдирд┐рдореНрди рд╢рдХреНрддрд┐рд╣рд░реВ рдиреЛрдЯ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ:
- рд╕реНрд░реЛрддрд╣рд░реВрдХреЛ рдХреБрд╢рд▓ рдкреНрд░рдпреЛрдЧ: рдбрдХрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдорд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрджреИред
- рдкреНрд▓реЗрдЯрдлрд░реНрдо рд╕реНрд╡рддрдиреНрддреНрд░ред рдПрдХ рдХрдиреНрдЯреЗрдирд░ рдЬреБрди рдПрдХ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд▓реЗ рдЖрдлреНрдиреЛ рдХрдореНрдкреНрдпреБрдЯрд░рдорд╛ рдЪрд▓рд╛рдЙрди рд╕рдХреНрдЫ рдЬрд╣рд╛рдБ рдкрдирд┐ рдХрд╛рдо рдЧрд░реНрдиреЗрдЫред
- рдЫрд╡рд┐ рддрд╣рд╣рд░реВрдХреЛ рдкреНрд░рдпреЛрдЧ рдорд╛рд░реНрдлрдд рд╣рд▓реНрдХрд╛ рддреИрдирд╛рдеред
рдХрдиреНрдЯреЗрдирд░рдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рд╕реНрдерд┐рд░ рдлрд╛рдЗрд▓рд╣рд░реВ рд╕реЗрд╡рд╛ рдЧрд░реНрдиреЗ Nginx рд╡реЗрдм рд╕рд░реНрднрд░
рд╣рд╛рдореАрд▓реЗ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╢рд┐рдирд╣рд░реВ рд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рдХреЗрд╣реА рдмрд┐рдиреНрджреБрд╣рд░реВрдорд╛ рдорд╛рддреНрд░ рддреБрд▓рдирд╛ рдЧрд░реЗрдХрд╛ рдЫреМрдВ, рддрд░ рдпреЛ рдкрдирд┐ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдХреЛ рд╢рдХреНрддрд┐рдХреЛ рд▓рд╛рдЧрд┐ рдорд╣рд╕реБрд╕ рдЧрд░реНрди рдкрд░реНрдпрд╛рдкреНрдд рдЫред
тЦН рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдХрдиреНрдЯреЗрдирд░ рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрджреИ
рдбрдХрд░ рдХрдиреНрдЯреЗрдирд░рдХреЛ рдЖрдзрд╛рд░рднреВрдд рдирд┐рд░реНрдорд╛рдг рдмреНрд▓рдХ рдлрд╛рдЗрд▓ рд╣реЛ Dockerfile
ред рдпрд╕ рдлрд╛рдЗрд▓рдХреЛ рд╕реБрд░реБрдорд╛, рдХрдиреНрдЯреЗрдирд░рдХреЛ рдЖрдзрд╛рд░ рдЫрд╡рд┐рдХреЛ рд░реЗрдХрд░реНрдб рдмрдирд╛рдЗрдПрдХреЛ рдЫ, рддреНрдпрд╕рдкрдЫрд┐ рддреНрдпрд╣рд╛рдБ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛рд╣рд░реВ рдкреВрд░рд╛ рдЧрд░реНрдиреЗ рдХрдиреНрдЯреЗрдирд░ рдХрд╕рд░реА рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗ рднрдиреЗрд░ рд╕рдВрдХреЗрдд рдЧрд░реНрдиреЗ рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВрдХреЛ рдЕрдиреБрдХреНрд░рдо рдЫред
рд╣рд╛рдореАрд▓реЗ рдлрд╛рдЗрд▓рд╕рдБрдЧ рдХрд╛рдо рд╕реБрд░реБ рдЧрд░реНрдиреБ рдЕрдШрд┐ Dockerfile
Nginx рд╕рд░реНрднрд░рдорд╛ рдЕрдкрд▓реЛрдб рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдлрд╛рдЗрд▓рд╣рд░реВ рддрдпрд╛рд░ рдЧрд░реНрди рд╣рд╛рдореАрд▓реЗ рдХреЗ рдЧрд░реНрдпреМрдВ рд╕рдореНрдЭреМрдВ:
- рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЖрд╡реЗрджрди рдкреНрдпрд╛рдХреЗрдЬ рдирд┐рд░реНрдорд╛рдг (
npm run build
). - Nginx рд╕рд░реНрднрд░ рд╕реБрд░реБ рдЧрд░реНрджреИред
- рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рд╛рдордЧреНрд░реАрд╣рд░реВ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрджреИ
build
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдлреЛрд▓реНрдбрд░рдмрд╛рдЯsa-frontend
рд╕рд░реНрднрд░ рдлреЛрд▓реНрдбрд░рдорд╛nginx/html
.
рддрд▓ рддрдкрд╛рдЗрдБ рдХрдиреНрдЯреЗрдирд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд░ рддрдкрд╛рдЗрдБрдХреЛ рд╕реНрдерд╛рдиреАрдп рдХрдореНрдкреНрдпреБрдЯрд░рдорд╛ рдкреНрд░рджрд░реНрд╢рди рдЧрд░рд┐рдПрдХрд╛ рдорд╛рдерд┐рдХрд╛ рдЪрд░рдгрд╣рд░реВ рдмреАрдЪ рд╕рдорд╛рдирд╛рдиреНрддрд░рд╣рд░реВ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
тЦН SA-Frontend рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ Dockerfile рддрдпрд╛рд░реА рдЧрд░реНрджреИ
рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдиреЗрдЫрдиреН Dockerfile
рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ SA-Frontend
, рдХреЗрд╡рд▓ рджреБрдИ рдЯреЛрд▓реА рдорд┐рд▓реЗрд░ рдмрдиреЗрдХреЛ рдЫред рддрдереНрдп рдпреЛ рд╣реЛ рдХрд┐ Nginx рд╡рд┐рдХрд╛рд╕ рдЯреЛрд▓реАрд▓реЗ рдЖрдзрд╛рд░рднреВрдд рддрдпрд╛рд░реА рдЧрд░реЗрдХреЛ рдЫ
- рдЫрд╡рд┐рдХреЛ рдЖрдзрд╛рд░ Nginx рдЫрд╡рд┐ рд╣реБрдиреБрдкрд░реНрдЫред
- рдлреЛрд▓реНрдбрд░ рд╕рд╛рдордЧреНрд░реА
sa-frontend/build
рдЫрд╡рд┐ рдлреЛрд▓реНрдбрд░рдорд╛ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫnginx/html
.
рдпрджрд┐ рддрдкрд╛рдЗрдБ рдпрд╕ рд╡рд┐рд╡рд░рдгрдмрд╛рдЯ рдлрд╛рдЗрд▓рдорд╛ рдЬрд╛рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ Dockerfile
, рддреНрдпрд╕рдкрдЫрд┐ рдпреЛ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреЗрдЫ:
FROM nginx
COPY build /usr/share/nginx/html
рддрдкрд╛рдИрд▓реЗ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреЗ рд░реВрдкрдорд╛, рдпрд╣рд╛рдБ рд╕рдмреИ рдХреБрд░рд╛ рдзреЗрд░реИ рд╕рд░рд▓ рдЫ, рд░ рдлрд╛рдИрд▓рдХреЛ рд╕рд╛рдордЧреНрд░реАрд╣рд░реВ рдкрдирд┐ рдкрдвреНрди рдпреЛрдЧреНрдп рд░ рдмреБрдЭреНрди рдпреЛрдЧреНрдп рд╣реБрдиреНрдЫрдиреНред рдпреЛ рдлрд╛рдЗрд▓рд▓реЗ рдкреНрд░рдгрд╛рд▓реАрд▓рд╛рдИ рдЫрд╡рд┐ рд▓рд┐рди рдмрддрд╛рдЙрдБрдЫ nginx
рдпрд╕рдорд╛ рдкрд╣рд┐рд▓реЗ рдиреИ рд░рд╣реЗрдХреЛ рд╕рдмреИ рдХреБрд░рд╛рдХреЛ рд╕рд╛рде, рд░ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрдХреЛ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрдиреБрд╣реЛрд╕реН build
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдорд╛ nginx/html
.
рдпрд╣рд╛рдБ рддрдкрд╛рдИрд╕рдБрдЧ рдПрдЙрдЯрд╛ рдкреНрд░рд╢реНрди рд╣реБрди рд╕рдХреНрдЫ рдорд▓рд╛рдИ рдХрд╕рд░реА рдерд╛рд╣рд╛ рдЫ рддрдкрд╛рдИрд▓реЗ рдлреЛрд▓реНрдбрд░рдмрд╛рдЯ рдлрд╛рдЗрд▓рд╣рд░реВ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ build
, рддреНрдпреЛ рд╣реЛ, рдЬрд╣рд╛рдБрдмрд╛рдЯ рдмрд╛рдЯреЛ рдЖрдпреЛ /usr/share/nginx/html
ред рд╡рд╛рд╕реНрддрд╡рдорд╛, рдпрд╣рд╛рдБ рдХреЗрд╣рд┐ рдкрдирд┐ рдЬрдЯрд┐рд▓ рдЫреИрдиред рддрдереНрдп рдпреЛ рд╣реЛ рдХрд┐ рд╕рд╛рдиреНрджрд░реНрднрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкрд╛рдЙрди рд╕рдХрд┐рдиреНрдЫ
тЦН рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рдЧрд░реА рднрдгреНрдбрд╛рд░рдорд╛ рдЕрдкрд▓реЛрдб рдЧрд░реНрджреИ
рд╣рд╛рдореАрд▓реЗ рд╕рдорд╛рдкреНрдд рдЫрд╡рд┐рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрди рд╕рдХреНрдиреБ рдЕрдШрд┐, рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ рдЫрд╡рд┐ рднрдгреНрдбрд╛рд░рдорд╛ рдкреБрд╢ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореА рдирд┐: рд╢реБрд▓реНрдХ рдХреНрд▓рд╛рдЙрдб рдЫрд╡рд┐ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкреНрд▓реЗрдЯрдлрд░реНрдо рдбрдХрд░ рд╣рдм рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВред рдХрд╛рдордХреЛ рдпрд╕ рдЪрд░рдгрдорд╛ рддрдкрд╛рдИрдВрд▓реЗ рдирд┐рдореНрди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ:
- рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН
рдбрдХрд░ . - рдбрдХрд░ рд╣рдм рд╡реЗрдмрд╕рд╛рдЗрдЯрдорд╛ рджрд░реНрддрд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
- рдЯрд░реНрдорд┐рдирд▓рдорд╛ рдирд┐рдореНрди рдЖрджреЗрд╢ рдЪрд▓рд╛рдПрд░ рдЖрдлреНрдиреЛ рдЦрд╛рддрд╛рдорд╛ рд▓рдЧ рдЗрди рдЧрд░реНрдиреБрд╣реЛрд╕реН:
docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"
рдЕрдм рддрдкрд╛рдИрд▓реЗ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрдорд╛ рдЬрд╛рди рдЯрд░реНрдорд┐рдирд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ sa-frontend
рд░ рддреНрдпрд╣рд╛рдБ рдирд┐рдореНрди рдЖрджреЗрд╢ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН:
docker build -f Dockerfile -t $DOCKER_USER_ID/sentiment-analysis-frontend .
рдпрд╣рд╛рдБ рд░ рдЕрдЧрд╛рдбрд┐ рд╕рдорд╛рди рдЖрджреЗрд╢рд╣рд░реВрдорд╛ $DOCKER_USER_ID
рддрдкрд╛рдЗрдБрдХреЛ рдбрдХрд░ рд╣рдм рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рд╕рдВрдЧ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрдиреБрдкрд░реНрдЫред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рдЖрджреЗрд╢ рдХреЛ рдпреЛ рднрд╛рдЧ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рди рд╕рдХреНрдЫ: rinormaloku/sentiment-analysis-frontend
.
рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдпреЛ рдЖрджреЗрд╢ рдпрд╕рд▓рд╛рдИ рд╣рдЯрд╛рдПрд░ рдЫреЛрдЯреЛ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ -f Dockerfile
, рдХрд┐рдирдХрд┐ рдпреЛ рдлрд╛рдЗрд▓ рдлреЛрд▓реНрдбрд░рдорд╛ рдкрд╣рд┐рд▓реЗ рдиреИ рдЕрд╡рд╕реНрдерд┐рдд рдЫ рдЬрд╕рдорд╛ рд╣рд╛рдореАрд▓реЗ рдпреЛ рдЖрджреЗрд╢ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрджреИрдЫреМрдВред
рд╕рдорд╛рдкреНрдд рдЫрд╡рд┐ рднрдгреНрдбрд╛рд░рдорд╛ рдкрдард╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореАрд▓рд╛рдИ рдирд┐рдореНрди рдЖрджреЗрд╢ рдЪрд╛рд╣рд┐рдиреНрдЫ:
docker push $DOCKER_USER_ID/sentiment-analysis-frontend
рдпрд╕рд▓рд╛рдИ рдкреВрд░рд╛ рдЧрд░реЗрдкрдЫрд┐, рдХреНрд▓рд╛рдЙрдб рднрдгреНрдбрд╛рд░рдгрдорд╛ рдЫрд╡рд┐рдХреЛ рдЕрдкрд▓реЛрдб рд╕рдлрд▓ рднрдпреЛ рдХрд┐ рднрдиреЗрд░ рдмреБрдЭреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдбрдХрд░ рд╣рдмрдорд╛ рддрдкрд╛рдИрдВрдХреЛ рднрдгреНрдбрд╛рд░рд╣рд░реВрдХреЛ рд╕реВрдЪреА рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
тЦН рдХрдиреНрдЯреЗрдирд░ рдЪрд▓рд╛рдЙрдБрджреИ
рдЕрдм рдЬреЛ рдХреЛрд╣реАрд▓реЗ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрди рд░ рдЫрд╡рд┐ рдЪрд▓рд╛рдЙрди рд╕рдХреНрдЫ, рдХреЛ рд░реВрдкрдорд╛ рдЪрд┐рдирд┐рдиреНрдЫ $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>
рдкреЛрд░реНрдЯрдорд╛ <containerPort>
ред рддреНрдпреЛ рд╣реЛ, рдкреЛрд░реНрдЯ рдкрд╣реБрдБрдЪ 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
рдлрд╛рдЗрд▓рдХреЛ рд░реВрдкрдорд╛ рдПрдЙрдЯреИ рдлреЛрд▓реНрдбрд░рдорд╛ рд╣реБрдиреБрдкрд░реНрдЫ Dockerfile
ред рдЕрдм рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рд╕реЗрдХреЗрдиреНрдбрдХреЛ рдХреБрд░рд╛ рд╣реБрдиреЗрдЫред
рдЕрдм рдЬрд╛рднрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдЫрд╡рд┐рдорд╛ рдХрд╛рдо рдЧрд░реМрдВред
тЦН Java рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдХрдиреНрдЯреЗрдирд░ рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрджреИ
рддрдкрд╛рдИрдВрд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫ, рддрдкрд╛рдИрдВрд▓реЗ рдХрдиреНрдЯреЗрдирд░ рдЫрд╡рд┐рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЬрд╛рдиреНрди рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдиреЗ рд╕рдмреИ рдХреБрд░рд╛рд╣рд░реВ рдкрд╣рд┐рд▓реЗ рдиреИ рд╕рд┐рдХреЗрдХрд╛ рдЫрдиреНред рддреНрдпрд╕реИрд▓реЗ рдпреЛ рдЦрдгреНрдб рдзреЗрд░реИ рдЫреЛрдЯреЛ рд╣реБрдиреЗрдЫред
рдлрд╛рдЗрд▓ рдЦреЛрд▓реНрдиреБрд╣реЛрд╕реН Dockerfile
рдЬреБрди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдлреЛрд▓реНрдбрд░рдорд╛ рдЫ sa-webapp
ред рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдпреЛ рдлрд╛рдЗрд▓рдХреЛ рдкрд╛рда рдкрдвреНрдиреБрднрдпреЛ рднрдиреЗ, рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕рдорд╛ рджреБрдИрд╡рдЯрд╛ рдирдпрд╛рдБ рдирд┐рд░реНрдорд╛рдгрд╣рд░реВ рдорд╛рддреНрд░ рджреЗрдЦреНрдиреБрд╣реБрдиреЗрдЫ, рдХреБрдЮреНрдЬреА рд╢рдмреНрджрд╣рд░реВрдмрд╛рдЯ рд╕реБрд░реБ рд╣реБрдБрджреИ ENV
╨╕ EXPOSE
:
ENV SA_LOGIC_API_URL http://localhost:5000
тАж
EXPOSE 8080
рдХреАрд╡рд░реНрдб ENV
рддрдкрд╛рдИрдВрд▓рд╛рдИ рдбрдХрд░ рдХрдиреНрдЯреЗрдирд░ рднрд┐рддреНрд░ рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ рдШреЛрд╖рдгрд╛ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рд╡рд┐рд╢реЗрд╖ рдЧрд░реА, рд╣рд╛рдореНрд░реЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдпрд╕рд▓реЗ рддрдкрд╛рдЗрдБрд▓рд╛рдИ рдкрд╛рда рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ API рдкрд╣реБрдБрдЪ рдЧрд░реНрди URL рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред
рдХреАрд╡рд░реНрдб EXPOSE
рддрдкрд╛рдИрдВрд▓рд╛рдИ рдбрдХрд░рд▓рд╛рдИ рдкреЛрд░реНрдЯ рдЦреЛрд▓реНрди рднрдиреНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рд╣рд╛рдореА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд▓рд╛рдЙрдБрджрд╛ рдпреЛ рдкреЛрд░реНрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЬрд╛рдБрджреИрдЫреМрдВред рдпрд╣рд╛рдБ рддрдкрд╛рдИрдВрд▓реЗ рддреНрдпреЛ рдиреЛрдЯрд┐рд╕ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ Dockerfile
рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ SA-Frontend
рддреНрдпрд╕реНрддреЛ рдХреБрдиреИ рдЖрджреЗрд╢ рдЫреИрдиред рдпреЛ рдХреЗрд╡рд▓ рдХрд╛рдЧрдЬрд╛рдд рдЙрджреНрджреЗрд╢реНрдпрдХрд╛ рд▓рд╛рдЧрд┐ рд╣реЛ, рдЕрд░реНрдХреЛ рд╢рдмреНрджрдорд╛, рдпреЛ рдирд┐рд░реНрдорд╛рдг рдкрдвреНрдиреЗ рд╡реНрдпрдХреНрддрд┐рдХреЛ рд▓рд╛рдЧрд┐ рд╣реЛ Dockerfile
.
рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рдЧрд░реА рднрдгреНрдбрд╛рд░рдорд╛ рдкреБрд╢ рдЧрд░реНрдиреБ рдЕрдШрд┐рд▓реНрд▓реЛ рдЙрджрд╛рд╣рд░рдгрдорд╛ рдЬрд╕реНрддреИ рджреЗрдЦрд┐рдиреНрдЫред рдпрджрд┐ рддрдкрд╛рдИрдВ рдЕрдЭреИ рдЖрдлреНрдиреЛ рдХреНрд╖рдорддрд╛рд╣рд░реВрдорд╛ рдзреЗрд░реИ рд╡рд┐рд╢реНрд╡рд╕реНрдд рд╣реБрдиреБрд╣реБрдиреНрди рднрдиреЗ, рд╕рдореНрдмрдиреНрдзрд┐рдд рдЖрджреЗрд╢рд╣рд░реВ рдлрд╛рдЗрд▓рдорд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХрд┐рдиреНрдЫред README.md
рдлреЛрд▓реНрдбрд░рдорд╛ sa-webapp
.
тЦНрдкрд╛рдЗрдерди рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдХрдиреНрдЯреЗрдирд░ рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрджреИ
рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдлрд╛рдЗрд▓рдХреЛ рд╕рд╛рдордЧреНрд░реАрд╣рд░реВ рд╣реЗрд░реНрдиреБрднрдпреЛ рднрдиреЗ Dockerfile
рдлреЛрд▓реНрдбрд░рдорд╛ sa-logic
, рддрдм рддрдкрд╛рдИрд▓реЗ рддреНрдпрд╣рд╛рдБ рдЖрдлреНрдиреЛ рд▓рд╛рдЧрд┐ рдХреЗрд╣рд┐ рдирдпрд╛рдБ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреБрд╣реБрдиреЗрдЫреИрдиред рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рд░ рднрдгреНрдбрд╛рд░рдорд╛ рдкрдард╛рдЙрдиреЗ рдЖрджреЗрд╢рд╣рд░реВ рдкрдирд┐ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдкрд╣рд┐рд▓реЗ рдиреИ рдкрд░рд┐рдЪрд┐рдд рд╣реБрдиреБрдкрд░реНрдЫ, рддрд░, рд╣рд╛рдореНрд░реЛ рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдЬрд╕реНрддреИ, рддрд┐рдиреАрд╣рд░реВ рдлрд╛рдЗрд▓рдорд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХрд┐рдиреНрдЫред README.md
рдлреЛрд▓реНрдбрд░рдорд╛ sa-logic
.
тЦН рдХрдиреНрдЯреЗрдирд░рдХреГрдд рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрджреИ
рдХреЗ рддрдкрд╛рдИрдВрд▓реЗ рдкрд░реАрдХреНрд╖рдг рдирдЧрд░реЗрдХреЛ рдХреБрд░рд╛рдорд╛ рднрд░реЛрд╕рд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ? рдо рдкрдирд┐ рд╕рдХреНрджрд┐рди ред рд╣рд╛рдореНрд░реЛ рдХрдиреНрдЯреЗрдирд░ рдкрд░реАрдХреНрд╖рдг рдЧрд░реМрдВред
- рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрдиреНрдЯреЗрдирд░ рд╕реБрд░реБ рдЧрд░реМрдВ
sa-logic
рд░ рдпрд╕рд▓рд╛рдИ рдкреЛрд░реНрдЯрдорд╛ рд╕реБрдиреНрди рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН5050
:docker run -d -p 5050:5000 $DOCKER_USER_ID/sentiment-analysis-logic
- рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрдиреНрдЯреЗрдирд░ рд╕реБрд░реБ рдЧрд░реМрдВ
sa-webapp
рд░ рдпрд╕рд▓рд╛рдИ рдкреЛрд░реНрдЯрдорд╛ рд╕реБрдиреНрди рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН8080
ред рдердк рд░реВрдкрдорд╛, рд╣рд╛рдореАрд▓реЗ рдкреЛрд░реНрдЯ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рдЬрд╕рдорд╛ рдкрд╛рдЗрдерди рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ рдкреБрди: рдЕрд╕рд╛рдЗрди рдЧрд░реЗрд░ 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 рдареЗрдЧрд╛рдирд╛ рдХрд╕рд░реА рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреЗ рднрдиреЗрд░ рдЬрд╛рдиреНрдирдХреЛ рд▓рд╛рдЧрд┐, рдлрд╛рдЗрд▓рд▓рд╛рдИ рд╕рдиреНрджрд░реНрдн рдЧрд░реНрдиреБрд╣реЛрд╕реН
рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрдиреНрдЯреЗрдирд░ рд╕реБрд░реБ рдЧрд░реМрдВ sa-frontend
:
docker run -d -p 80:80 $DOCKER_USER_ID/sentiment-analysis-frontend
рдЕрдм рд╕рдмреИ рдмреНрд░рд╛рдЙрдЬрд░рдорд╛ рдареЗрдЧрд╛рдирд╛рдорд╛ рдЬрд╛рди рддрдпрд╛рд░ рдЫ localhost:80
рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН рдХрд┐ рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдкреЛрд░реНрдЯ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБрднрдпреЛ рднрдиреЗ sa-webapp
, рд╡рд╛ рдпрджрд┐ рддрдкрд╛рдЗрдБ рдбрдХрд░ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рди рдЪрд▓рд╛рдЙрдБрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рдлрд╛рдЗрд▓ рд╕рдореНрдкрд╛рджрди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рд╣реБрдиреЗрдЫ App.js
рдлреЛрд▓реНрдбрд░рдмрд╛рдЯ sa-frontend
рд╡рд┐рдзрд┐рдорд╛ IP рдареЗрдЧрд╛рдирд╛ рд╡рд╛ рдкреЛрд░реНрдЯ рдирдореНрдмрд░ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реЗрд░ analyzeSentence()
, рдкреБрд░рд╛рдиреЛ рдбрд╛рдЯрд╛ рдХреЛ рд╕рдЯреНрдЯрд╛ рд╡рд░реНрддрдорд╛рди рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрдиред рдпрд╕ рдкрдЫрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдЫрд╡рд┐ рдкреБрди: рдЬрдореНрдорд╛ рдЧрд░реНрди рд░ рдпрд╕рд▓рд╛рдИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред
рдпреЛ рд╣рд╛рдореНрд░реЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ рдЕрд╣рд┐рд▓реЗ рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫред
рдорд╛рдЗрдХреНрд░реЛ рд╕реЗрд╡рд╛рд╣рд░реВ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдорд╛ рдЪрд▓реНрдЫрдиреН
рд╕рд╛рд░рд╛рдВрд╢: рд╣рд╛рдореАрд▓рд╛рдИ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рдХрд┐рди рдЪрд╛рд╣рд┐рдиреНрдЫ?
рд╣рд╛рдореАрд▓реЗ рднрд░реНрдЦрд░реИ рдлрд╛рдЗрд▓рд╣рд░реВ рдЬрд╛рдБрдЪ рдЧрд░реЗрдХрд╛ рдЫреМрдВ Dockerfile
, рдХрд╕рд░реА рдЫрд╡рд┐рд╣рд░реВ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрдиреЗ рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдбрдХрд░ рднрдгреНрдбрд╛рд░рдорд╛ рдкреБрд╢ рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ рдХреБрд░рд╛ рдЧрд░реЗред рдердк рд░реВрдкрдорд╛, рд╣рд╛рдореАрд▓реЗ рдлрд╛рдЗрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЫрд╡рд┐ рдПрд╕реЗрдореНрдмрд▓реАрд▓рд╛рдИ рдХрд╕рд░реА рдЧрддрд┐ рджрд┐рдиреЗ рднрдиреЗрд░ рд╕рд┐рдХреНрдпреМрдВ .dockerignore
ред рдирддрд┐рдЬрд╛рдХреЛ рд░реВрдкрдорд╛, рд╣рд╛рдореНрд░рд╛ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд╛рд╣рд░реВ рдЕрдм рдбрдХрд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдорд╛ рдЪрд▓реНрдЫрдиреНред рдпрд╣рд╛рдБ рддрдкрд╛рдИрд▓рд╛рдИ рдХреБрдмреЗрд░рдиреЗрдЯ рдХрд┐рди рдЪрд╛рд╣рд┐рдиреНрдЫ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рдкреВрд░реНрдгрддрдпрд╛ рдЬрд╛рдпрдЬ рдкреНрд░рд╢реНрди рд╣реБрди рд╕рдХреНрдЫред рдпреЛ рд╕рд╛рдорд╛рдЧреНрд░реА рдХреЛ рджреЛрд╕реНрд░реЛ рднрд╛рдЧ рдпреЛ рдкреНрд░рд╢реНрди рдХреЛ рдЬрд╡рд╛рдл рд╕рдорд░реНрдкрд┐рдд рд╣реБрдиреЗрдЫред рдпрд╕ рдмреАрдЪрдорд╛, рдирд┐рдореНрди рдкреНрд░рд╢реНрдирд▓рд╛рдИ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН:
рдорд╛рдиреМрдВ рдкрд╛рда рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореНрд░реЛ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рд╢реНрд╡рд╡реНрдпрд╛рдкреА рд░реВрдкрдорд╛ рд▓реЛрдХрдкреНрд░рд┐рдп рднрдПрдХреЛ рдЫред рдЙрд╣рд╛рдБрд▓рд╛рдИ рд╣рд░реЗрдХ рдорд┐рдиреЗрдЯрдорд╛ рд▓рд╛рдЦреМрдВ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдЖрдЙрдБрдЫрдиреНред рдпрд╕рдХреЛ рдЕрд░реНрде рдорд╛рдЗрдХреНрд░реЛ рд╕рд░реНрднрд┐рд╕ рд╣реЛ sa-webapp
╨╕ sa-logic
рдареВрд▓реЛ рднрд╛рд░ рдЕрдиреНрддрд░реНрдЧрдд рд╣реБрдиреЗрдЫред рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрднрд┐рд╕ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдХрдиреНрдЯреЗрдирд░ рдХрд╕рд░реА рдорд╛рдкрди рдЧрд░реНрдиреЗ?
рд╕реНрд░реЛрдд: www.habr.com