рдирдорд╕реНрддреЗ рд╕рдмреИ! рдпреЛ рд╣рд╛рдореНрд░реЛ рд╢реГрдЩреНрдЦрд▓рд╛рдХреЛ рджреЛрд╕реНрд░реЛ рдкреЛрд╖реНрдЯ рд╣реЛ рдЬрд╕рдорд╛ рд╣рд╛рдореАрд▓реЗ Red Hat OpenShift рдорд╛ рдЖрдзреБрдирд┐рдХ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдХрд╕рд░реА рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реНрдиреЗ рднрдиреЗрд░ рджреЗрдЦрд╛рдЙрдБрдЫреМрдВред
рдЕрдШрд┐рд▓реНрд▓реЛ рдкреЛрд╖реНрдЯрдорд╛, рд╣рд╛рдореАрд▓реЗ рдирдпрд╛рдБ S2I (рд╕реНрд░реЛрдд-рджреЗрдЦрд┐-рдЫрд╡рд┐) рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдЫрд╡рд┐рдХреЛ рдХреНрд╖рдорддрд╛рд╣рд░реВрдорд╛ рдереЛрд░реИ рдЫреЛрдПрдХрд╛ рдерд┐рдпреМрдВ, рдЬреБрди OpenShift рдкреНрд▓реЗрдЯрдлрд░реНрдордорд╛ рдЖрдзреБрдирд┐рдХ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдирд┐рд░реНрдорд╛рдг рд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдбрд┐рдЬрд╛рдЗрди рдЧрд░рд┐рдПрдХреЛ рд╣реЛред рддреНрдпрд╕реЛрднрдП рд╣рд╛рдореА рдЪрд╛рдБрдбреИ рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдбрд┐рдкреНрд▓реЛрдЗ рдЧрд░реНрдиреЗ рд╡рд┐рд╖рдпрдорд╛ рдЪрд╛рд╕реЛ рд░рд╛рдЦреНрдпреМрдВ, рд░ рдЖрдЬ рд╣рд╛рдореА рдХрд╕рд░реА S2I рдЫрд╡рд┐рд▓рд╛рдИ "рд╢реБрджреНрдз" рдмрд┐рд▓реНрдбрд░ рдЫрд╡рд┐рдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рд░ рдпрд╕рд▓рд╛рдИ рд╕рдореНрдмрдиреНрдзрд┐рдд OpenShift рд╕рднрд╛рд╣рд░реВрд╕рдБрдЧ рд╕рдВрдпреЛрдЬрди рдЧрд░реНрдиреЗ рднрдиреЗрд░ рд╣реЗрд░реНрдиреЗрдЫреМрдВред
рд╕рдлрд╛ рдмрд┐рд▓реНрдбрд░ рдЫрд╡рд┐
рд╣рд╛рдореАрд▓реЗ рднрд╛рдЧ рез рдорд╛ рдЙрд▓реНрд▓реЗрдЦ рдЧрд░реЗрдЭреИрдВ, рдзреЗрд░реИрдЬрд╕реЛ рдЖрдзреБрдирд┐рдХ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдорд╛ рддрдерд╛рдХрдерд┐рдд рдирд┐рд░реНрдорд╛рдг рдЪрд░рдг рд╣реБрдиреНрдЫ, рдЬрд╕рд▓реЗ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдХреЛрдб рдЯреНрд░рд╛рдиреНрд╕рдкрд┐рд▓реЗрд╕рди, рдорд▓реНрдЯрд┐рдкрд▓ рдлрд╛рдЗрд▓ рдХрдиреНрдЯреЗрдиреЗрд╕рди, рд░ рдорд┐рдирд┐рдлрд┐рдХреЗрд╢рди рдЬрд╕реНрддрд╛ рдХрд╛рд░реНрдпрд╣рд░реВ рдЧрд░реНрджрдЫред рдпреА рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рдкрд░рд┐рдгрд╛рдо рд╕реНрд╡рд░реВрдк рдкреНрд░рд╛рдкреНрдд рдЧрд░рд┐рдПрдХрд╛ рдлрд╛рдЗрд▓рд╣рд░реВ - рд░ рдпреЛ рд╕реНрдерд┐рд░ HTML, JavaScript рд░ CSS рд╣реЛ - рдЖрдЙрдЯрдкреБрдЯ рдлреЛрд▓реНрдбрд░рдорд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░рд┐рдиреНрдЫред рдпрд╕ рдлреЛрд▓реНрдбрд░рдХреЛ рд╕реНрдерд╛рди рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдХреБрди рдирд┐рд░реНрдорд╛рдг рдЙрдкрдХрд░рдгрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рднрдЗрд░рд╣реЗрдХреЛ рдЫ рднрдиреНрдиреЗрдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджрдЫ, рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдпреЛ ./build рдлреЛрд▓реНрдбрд░ рд╣реБрдиреЗрдЫ (рд╣рд╛рдореА рддрд▓ рдердк рд╡рд┐рд╡рд░рдгрдорд╛ рдпрд╕рдорд╛ рдлрд┐рд░реНрддрд╛ рдЖрдЙрдиреЗрдЫреМрдВ)ред
рд╕реНрд░реЛрдд-рджреЗрдЦрд┐-рдЫрд╡рд┐ (S2I)
рдпрд╕ рдкреЛрд╖реНрдЯрдорд╛ рд╣рд╛рдореА "S2I рдХреЗ рд╣реЛ рд░ рдпрд╕рд▓рд╛рдИ рдХрд╕рд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ" рд╢реАрд░реНрд╖рдХрдорд╛ рдЫреБрдБрджреИрдиреМрдВ (рддрдкрд╛рдИрдВ рдпрд╕рдХреЛ рдмрд╛рд░реЗрдорд╛ рдердк рдкрдвреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдЪрд░рдг
рдЕрд╕реЗрдВрдмрд▓реА рдЪрд░рдг рдкреНрд░рдХреГрддрд┐рдорд╛ рдзреЗрд░реИ рдорд┐рд▓реНрджреЛрдЬреБрд▓реНрджреЛ рдЫ рдЬрдм рддрдкрд╛рдЗрдБ рдбрдХрд░ рдмрд┐рд▓реНрдб рдЪрд▓рд╛рдЙрдиреБрд╣реБрдиреНрдЫ рд░ рдирдпрд╛рдБ рдбрдХрд░ рдЫрд╡рд┐рдХреЛ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реБрдиреНрдЫред рддрджрдиреБрд╕рд╛рд░, рдпреЛ рдЪрд░рдг OpenShift рдкреНрд▓реЗрдЯрдлрд░реНрдордорд╛ рдирд┐рд░реНрдорд╛рдг рд╕реБрд░реБ рдЧрд░реНрджрд╛ рд╣реБрдиреНрдЫред
рд╡реЗрдм рдПрдк рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдЫрд╡рд┐рдХреЛ рдорд╛рдорд▓рд╛рдорд╛, рдпреЛ рддрдкрд╛рдИрдВрдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд░ рдирд┐рд░реНрдорд╛рдг рдЪрд▓рд╛рдЙрди рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдЫред
рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рднрдиреЗрдЭреИрдВ, рд╕рдорд╛рдкреНрдд рднрдПрдХреЛ, рдкрд╣рд┐рд▓реЗ рдиреИ рдирд┐рд░реНрдорд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд╕реНрдерд╛рди рддрдкрд╛рдИрд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдЙрдкрдХрд░рдгрд╣рд░реВрдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджрдЫред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдорд╛рдорд▓рд╛ рдорд╛ рдпреЛ ./build рдлреЛрд▓реНрдбрд░ рд╣реБрдиреЗрдЫ, рд░ Angular рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реБ рдХреЛ рд▓рд╛рдЧреА рдпреЛ project_name/dist рдлреЛрд▓реНрдбрд░ рд╣реБрдиреЗрдЫред рд░, рдЕрдШрд┐рд▓реНрд▓реЛ рдкреЛрд╖реНрдЯрдорд╛ рджреЗрдЦрд╛рдЗрдПрдЭреИрдВ, рдЖрдЙрдЯрдкреБрдЯ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрдХреЛ рд╕реНрдерд╛рди, рдЬреБрди рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рд╕реЗрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫ, OUTPUT_DIR рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ рдорд╛рд░реНрдлрдд рдУрднрд░рд░рд╛рдЗрдб рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдард┐рдХ рдЫ, рдЖрдЙрдЯрдкреБрдЯ рдлреЛрд▓реНрдбрд░рдХреЛ рд╕реНрдерд╛рди рдлреНрд░реЗрдорд╡рд░реНрдХ рджреЗрдЦрд┐ рдлреНрд░реЗрдорд╡рд░реНрдХрдорд╛ рдлрд░рдХ рднрдПрдХреЛ рд╣реБрдирд╛рд▓реЗ, рддрдкрд╛рдИрд▓реЗ рдЙрддреНрдкрдиреНрди рдЖрдЙрдЯрдкреБрдЯрд▓рд╛рдИ рдЫрд╡рд┐рдХреЛ рдорд╛рдирдХ рдлреЛрд▓реНрдбрд░рдорд╛ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЕрд░реНрдерд╛рддреН /opt/apt-root/outputред рдпреЛ рд▓реЗрдЦрдХреЛ рдмрд╛рдБрдХреА рднрд╛рдЧ рдмреБрдЭреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдпреЛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫ, рддрд░ рдЕрд╣рд┐рд▓реЗрдХреЛ рд▓рд╛рдЧрд┐ рдЪрд╛рдБрдбреИ рдЕрд░реНрдХреЛ рдЪрд░рдгрдорд╛ рд╣реЗрд░реМрдВ - рд░рди рдЪрд░рдгред
рд░рди рдЪрд░рдг
рдпреЛ рдЪрд░рдг рддрдм рд╣реБрдиреНрдЫ рдЬрдм рдбрдХрд░ рд░рди рдХрд▓ рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдЪрд░рдг рдХреЛ рд╕рдордпрдорд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдирдпрд╛рдБ рдЫрд╡рд┐ рдорд╛ рдмрдирд╛рдЗрдиреНрдЫред OpenShift рдкреНрд▓реЗрдЯрдлрд░реНрдордорд╛ рдбрд┐рдкреНрд▓реЛрдЗ рдЧрд░реНрджрд╛ рддреНрдпрд╕реНрддреИ рд╣реБрдиреНрдЫред рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд
рдпреЛ рд╡рд┐рдзрд┐ рдЪрд╛рдБрдбреИ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдбрд┐рдкреНрд▓реЛрдЗ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рд░рд╛рдореНрд░реЛ рдЫ, рддрд░ рдпреЛ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рд╕реНрдерд┐рд░ рд╕рд╛рдордЧреНрд░реА рдпрд╕ рддрд░рд┐рдХрд╛рд▓реЗ рд╕реЗрд╡рд╛ рдЧрд░реНрди рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░рд┐рдПрдХреЛ рдЫреИрдиред рдард┐рдХ рдЫ, рд╡рд╛рд╕реНрддрд╡рдорд╛ рд╣рд╛рдореА рдХреЗрд╡рд▓ рд╕реНрдерд┐рд░ рд╕рд╛рдордЧреНрд░реА рдорд╛рддреНрд░ рд╕реЗрд╡рд╛ рдЧрд░реНрдЫреМрдВ, рд╣рд╛рдореАрд▓рд╛рдИ рд╣рд╛рдореНрд░реЛ рдЫрд╡рд┐ рднрд┐рддреНрд░ рд╕реНрдерд╛рдкрд┐рдд Node.js рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджреИрди - рд╡реЗрдм рд╕рд░реНрднрд░ рдкрд░реНрдпрд╛рдкреНрдд рд╣реБрдиреЗрдЫред
рдЕрд░реНрдХреЛ рд╢рдмреНрджрдорд╛, рд╕рдВрдпреЛрдЬрди рдЧрд░реНрджрд╛ рд╣рд╛рдореАрд▓рд╛рдИ рдПрдЙрдЯрд╛ рдЪреАрдЬ рдЪрд╛рд╣рд┐рдиреНрдЫ, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрджрд╛ рд╣рд╛рдореАрд▓рд╛рдИ рдЕрд░реНрдХреЛ рдЪрд╛рд╣рд┐рдиреНрдЫред рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдЬрдВрдЬреАрд░ рдирд┐рд░реНрдорд╛рдгрд╣рд░реВ рдХрд╛рдордорд╛ рдЖрдЙрдБрдЫрдиреНред
рдЬрдВрдЬреАрд░ рдмрдирд╛рдЙрдБрдЫ
рдпрд┐рдиреИ рд╡рд┐рд╖рдпрдорд╛ рд▓реЗрдЦреНрдЫрдиреН
"рджреБрдИрд╡рдЯрд╛ рдЕрд╕реЗрдореНрдмреНрд▓реАрд╣рд░реВ рд╕рдБрдЧреИ рдЬреЛрдбреНрди рд╕рдХрд┐рдиреНрдЫ, рдПрдЙрдЯрд╛рд▓реЗ рдПрдЙрдЯрд╛ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░рд┐рдПрдХреЛ рдЗрдХрд╛рдИ рдЙрддреНрдкрдиреНрди рдЧрд░реНрдЫ рд░ рдЕрд░реНрдХреЛрд▓реЗ рддреНрдпреЛ рд╕рдВрд╕реНрдерд╛рд▓рд╛рдИ рдЫреБрдЯреНрдЯреИ рдЫрд╡рд┐рдорд╛ рд╣реЛрд╕реНрдЯ рдЧрд░реНрдЫ рдЬреБрди рддреНрдпреЛ рд╕рдВрд╕реНрдерд╛ рдЪрд▓рд╛рдЙрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред"
рдЕрд░реНрдХреЛ рд╢рдмреНрджрдорд╛, рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рдирд┐рд░реНрдорд╛рдг рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рд╡реЗрдм рдПрдк рдмрд┐рд▓реНрдбрд░ рдЫрд╡рд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ, рд░ рддреНрдпрд╕рдкрдЫрд┐ рд╣рд╛рдореНрд░реЛ рд╕рд╛рдордЧреНрд░реА рд╕реЗрд╡рд╛ рдЧрд░реНрди рд╡реЗрдм рд╕рд░реНрднрд░ рдЫрд╡рд┐, рдЙрд╣реА NGINX рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред
рдпрд╕рд░реА, рд╣рд╛рдореАрд▓реЗ рд╡реЗрдм рдПрдк рдмрд┐рд▓реНрдбрд░ рдЫрд╡рд┐рд▓рд╛рдИ "рд╢реБрджреНрдз" рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛рдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ рд░ рдПрдХреИ рд╕рдордпрдорд╛ рд╕рд╛рдиреЛ рд░рдирдЯрд╛рдЗрдо рдЫрд╡рд┐ рдЫред
рдЕрдм рдпрд╕рд▓рд╛рдИ рд╡рд┐рд╢реЗрд╖ рдЙрджрд╛рд╣рд░рдгрдХреЛ рд╕рд╛рде рд╣реЗрд░реМрдВред
рдкреНрд░рд╢рд┐рдХреНрд╖рдгрдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВ
рдпрд╕рд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рд╕рдмреИ рдХреБрд░рд╛ рдорд┐рд▓рд╛рдЙрди рдорджреНрджрдд рдЧрд░реНрдиреЗрдЫ
рдпрд╕ рдлрд╛рдЗрд▓рд▓рд╛рдИ рдердк рд╡рд┐рд╡рд░рдгрдорд╛ рд╣реЗрд░реМрдВ, рд░ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдЦрдгреНрдбрд╕рдБрдЧ рд╕реБрд░реБ рдЧрд░реМрдВред
parameters:
- name: SOURCE_REPOSITORY_URL
description: The source URL for the application
displayName: Source URL
required: true
- name: SOURCE_REPOSITORY_REF
description: The branch name for the application
displayName: Source Branch
value: master
required: true
- name: SOURCE_REPOSITORY_DIR
description: The location within the source repo of the application
displayName: Source Directory
value: .
required: true
- name: OUTPUT_DIR
description: The location of the compiled static files from your web apps builder
displayName: Output Directory
value: build
required: false
рдпрд╣рд╛рдБ рд╕рдмреИ рдХреБрд░рд╛ рдПрдХрджрдо рд╕реНрдкрд╖реНрдЯ рдЫ, рддрд░ рдпреЛ OUTPUT_DIR рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рдорд╛ рдзреНрдпрд╛рди рджрд┐рди рд▓рд╛рдпрдХ рдЫред рд╣рд╛рдореНрд░реЛ рдЙрджрд╛рд╣рд░рдгрдорд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╕рдирдХреЛ рд▓рд╛рдЧрд┐, рдЪрд┐рдиреНрддрд╛ рд▓рд┐рдиреБ рдкрд░реНрдиреЗ рдХреБрдиреИ рдХреБрд░рд╛ рдЫреИрди, рдХрд┐рдирдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд▓реЗ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдорд╛рдирд▓рд╛рдИ рдЖрдЙрдЯрдкреБрдЯ рдлреЛрд▓реНрдбрд░рдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ, рддрд░ Angular рд╡рд╛ рдЕрдиреНрдп рдЪреАрдЬрдХреЛ рдорд╛рдорд▓рд╛рдорд╛, рдпреЛ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рдЖрд╡рд╢реНрдпрдХ рд░реВрдкрдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рд╣реБрдиреЗрдЫред
рдЕрдм ImageStreams рд╕реЗрдХреНрд╕рдирдорд╛ рд╣реЗрд░реМрдВред
- apiVersion: v1
kind: ImageStream
metadata:
name: react-web-app-builder // 1
spec: {}
- apiVersion: v1
kind: ImageStream
metadata:
name: react-web-app-runtime // 2
spec: {}
- apiVersion: v1
kind: ImageStream
metadata:
name: web-app-builder-runtime // 3
spec:
tags:
- name: latest
from:
kind: DockerImage
name: nodeshift/ubi8-s2i-web-app:10.x
- apiVersion: v1
kind: ImageStream
metadata:
name: nginx-image-runtime // 4
spec:
tags:
- name: latest
from:
kind: DockerImage
name: 'centos/nginx-112-centos7:latest'
рддреЗрд╕реНрд░реЛ рд░ рдЪреМрдереЛ рддрд╕реНрдмрд┐рд░рд╣рд░реВ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реНред рддрд┐рдиреАрд╣рд░реВ рджреБрдмреИ рдбрдХрд░ рдЫрд╡рд┐рд╣рд░реВрдХреЛ рд░реВрдкрдорд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЫрдиреН, рд░ рддрд┐рдиреАрд╣рд░реВ рдХрд╣рд╛рдБрдмрд╛рдЯ рдЖрдПрдХрд╛ рдЫрдиреН рддрдкрд╛рдИрдВрд▓реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
рддреЗрд╕реНрд░реЛ рдЫрд╡рд┐ рд╡реЗрдм-рдПрдк-рдмрд┐рд▓реНрдбрд░ рд╣реЛ рд░ рдпреЛ nodeshift/ubi8-s2i-web-app рдмрд╛рдЯ 10.x рдорд╛ рдЯреНрдпрд╛рдЧ рдЧрд░рд┐рдПрдХреЛ рдЫред
рдЪреМрдереЛ NGINX рдЫрд╡рд┐ (рд╕рдВрд╕реНрдХрд░рдг 1.12) рдкрдЫрд┐рд▓реНрд▓реЛ рдЯреНрдпрд╛рдЧрдХреЛ рд╕рд╛рде рд╣реЛ
рдЕрдм рдкрд╣рд┐рд▓реЛ рджреБрдИ рддрд╕реНрдмрд┐рд░ рд╣реЗрд░реМрдВред рддрд┐рдиреАрд╣рд░реВ рджреБрд╡реИ рд╕реБрд░реБрдорд╛ рдЦрд╛рд▓реА рдЫрдиреН рд░ рдирд┐рд░реНрдорд╛рдг рдЪрд░рдгрдХреЛ рд╕рдордпрдорд╛ рдорд╛рддреНрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдиреНрдЫред рдкрд╣рд┐рд▓реЛ рдЫрд╡рд┐, react-web-app-builder, рд╡реЗрдм-рдПрдк-рдмрд┐рд▓реНрдбрд░-рд░рдирдЯрд╛рдЗрдо рдЫрд╡рд┐ рд░ рд╣рд╛рдореНрд░реЛ рд╕реНрд░реЛрдд рдХреЛрдбрд▓рд╛рдИ рд╕рдВрдпреЛрдЬрди рдЧрд░реНрдиреЗ рдПрд╕реЗрдореНрдмрд▓реА рдЪрд░рдгрдХреЛ рдкрд░рд┐рдгрд╛рдо рд╣реБрдиреЗрдЫред рддреНрдпрд╕рдХрд╛рд░рдг рд╣рд╛рдореАрд▓реЗ рдпреЛ рдЫрд╡рд┐рдХреЛ рдирд╛рдордорд╛ "-builder" рдердкреНрдпреМрдВред
рджреЛрд╕реНрд░реЛ рдЫрд╡рд┐ - react-web-app-runtime - nginx-image-runtime рд░ react-web-app-builder рдЫрд╡рд┐рдмрд╛рдЯ рдХреЗрд╣реА рдлрд╛рдЗрд▓рд╣рд░реВ рд╕рдВрдпреЛрдЬрдирдХреЛ рдкрд░рд┐рдгрд╛рдо рд╣реБрдиреЗрдЫред рдпреЛ рдЫрд╡рд┐ рдкрдирд┐ рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯрдХреЛ рд╕рдордпрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреЗрдЫ рд░ рд╡реЗрдм рд╕рд░реНрднрд░ рд░ рд╕реНрдерд┐рд░ HTML, JavaScript, рд╣рд╛рдореНрд░реЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ CSS рдорд╛рддреНрд░ рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдиреЗрдЫред
рднреНрд░рдорд┐рдд? рдЕрдм рдирд┐рд░реНрдорд╛рдг рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд╣рд░реВ рд╣реЗрд░реМрдВ рд░ рдпреЛ рдЕрд▓рд┐ рд╕реНрдкрд╖реНрдЯ рд╣реБрдиреЗрдЫред
рд╣рд╛рдореНрд░реЛ рдЯреЗрдореНрдкреНрд▓реЗрдЯрдорд╛ рджреБрдИрд╡рдЯрд╛ рдирд┐рд░реНрдорд╛рдг рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд╣рд░реВ рдЫрдиреНред рдпрд╣рд╛рдБ рдкрд╣рд┐рд▓реЛ рдЫ, рд░ рдпреЛ рд░рд╛рдореНрд░реЛ рдорд╛рдирдХ рдЫ:
apiVersion: v1
kind: BuildConfig
metadata:
name: react-web-app-builder
spec:
output:
to:
kind: ImageStreamTag
name: react-web-app-builder:latest // 1
source: // 2
git:
uri: ${SOURCE_REPOSITORY_URL}
ref: ${SOURCE_REPOSITORY_REF}
contextDir: ${SOURCE_REPOSITORY_DIR}
type: Git
strategy:
sourceStrategy:
env:
- name: OUTPUT_DIR // 3
value: ${OUTPUT_DIR}
from:
kind: ImageStreamTag
name: web-app-builder-runtime:latest // 4
incremental: true // 5
type: Source
triggers: // 6
- github:
secret: ${GITHUB_WEBHOOK_SECRET}
type: GitHub
- type: ConfigChange
- imageChange: {}
type: ImageChange
рддрдкрд╛рдИрд▓реЗ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреЗ рд░реВрдкрдорд╛, рд▓реЗрдмрд▓ 1 рдХреЛ рд╕рд╛рде рд▓рд╛рдЗрдирд▓реЗ рднрдиреНрдЫ рдХрд┐ рдпрд╕ рдирд┐рд░реНрдорд╛рдгрдХреЛ рдирддрд┐рдЬрд╛ рдЙрд╣реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд╡реЗрдм-рдПрдк-рдмрд┐рд▓реНрдбрд░ рдЫрд╡рд┐рдорд╛ рд░рд╛рдЦрд┐рдиреЗрдЫ рдЬреБрди рд╣рд╛рдореАрд▓реЗ ImageStreams рд╕реЗрдХреНрд╕рдирдорд╛ рдЕрд▓рд┐ рдкрд╣рд┐рд▓реЗ рджреЗрдЦреНрдпреМрдВред
2 рд▓реЗрдмрд▓ рдЧрд░рд┐рдПрдХреЛ рд░реЗрдЦрд╛рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдХреЛрдб рдХрд╣рд╛рдБрдмрд╛рдЯ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдмрддрд╛рдЙрдБрдЫред рд╣рд╛рдореНрд░реЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдпреЛ рдПрдХ git рднрдгреНрдбрд╛рд░ рд╣реЛ, рд░ рд╕реНрдерд╛рди, рд░реЗрдл рд░ рд╕рдиреНрджрд░реНрдн рдлреЛрд▓реНрдбрд░ рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рдорд╛рдерд┐ рджреЗрдЦреЗрдХрд╛ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░рд┐рдиреНрдЫред
3 рд▓реЗрдмрд▓ рдЧрд░рд┐рдПрдХреЛ рд░реЗрдЦрд╛ рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рд╕реЗрдХреНрд╕рдирдорд╛ рджреЗрдЦреНрдпреМрдВред рдпрд╕рд▓реЗ OUTPUT_DIR рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ рдердкреНрдЫ, рдЬреБрди рд╣рд╛рдореНрд░реЛ рдЙрджрд╛рд╣рд░рдгрдорд╛ рдирд┐рд░реНрдорд╛рдг рд╣реЛред
4 рд▓реЗрдмрд▓ рдЧрд░рд┐рдПрдХреЛ рд░реЗрдЦрд╛рд▓реЗ рд╡реЗрдм-рдПрдк-рдмрд┐рд▓реНрдбрд░-рд░рдирдЯрд╛рдЗрдо рдЫрд╡рд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рднрдиреНрдЫ, рдЬреБрди рд╣рд╛рдореАрд▓реЗ рдЫрд╡рд┐рд╕реНрдЯреНрд░реАрдо рд╕реЗрдХреНрд╕рдирдорд╛ рджреЗрдЦреНрдпреМрдВред
Line рд▓реЗрдмрд▓ рдЧрд░рд┐рдПрдХреЛ 5 рднрдиреНрдЫ рдХрд┐ рдпрджрд┐ S2I рдЫрд╡рд┐рд▓реЗ рдпрд╕рд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫ рднрдиреЗ рд╣рд╛рдореА рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреМрдВ, рд░ рд╡реЗрдм рдПрдк рдмрд┐рд▓реНрдбрд░ рдЫрд╡рд┐рд▓реЗ рдЧрд░реНрдЫред рдкрд╣рд┐рд▓реЛ рдкреНрд░рдХреНрд╖реЗрдкрдгрдорд╛, рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдЪрд░рдг рдкреВрд░рд╛ рднрдПрдкрдЫрд┐, рдЫрд╡рд┐рд▓реЗ node_modules рдлреЛрд▓реНрдбрд░рд▓рд╛рдИ рдЕрднрд┐рд▓реЗрдЦ рдлрд╛рдЗрд▓рдорд╛ рдмрдЪрдд рдЧрд░реНрдиреЗрдЫред рддреНрдпрд╕рдкрдЫрд┐, рдкрдЫрд┐рдХреЛ рд░рдирд╣рд░реВрдорд╛, рдЫрд╡рд┐рд▓реЗ рдирд┐рд░реНрдорд╛рдг рд╕рдордп рдХрдо рдЧрд░реНрди рдпреЛ рдлреЛрд▓реНрдбрд░рд▓рд╛рдИ рдЕрдирдЬрд┐рдк рдЧрд░реНрдиреЗрдЫред
рд░ рдЕрдиреНрддрдорд╛, 6 рд▓реЗрдмрд▓ рдЧрд░рд┐рдПрдХреЛ рд▓рд╛рдЗрди рдХреЗрд╣рд┐ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдБрджрд╛, рдореНрдпрд╛рдиреБрдЕрд▓ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдмрд┐рдирд╛, рдирд┐рд░реНрдорд╛рдг рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдХреЗрд╣рд┐ рдЯреНрд░рд┐рдЧрд░рд╣рд░реВ рд╣реЛред
рд╕рдордЧреНрд░рдорд╛ рдпреЛ рдПрдХ рд░рд╛рдореНрд░реЛ рдорд╛рдирдХ рдирд┐рд░реНрдорд╛рдг рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╣реЛред
рдЕрдм рджреЛрд╕реНрд░реЛ рдирд┐рд░реНрдорд╛рдг рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдорд╛ рдПрдХ рдирдЬрд░ рд░рд╛рдЦреМрдВред рдпреЛ рдкрд╣рд┐рд▓реЛрд╕рдБрдЧ рдзреЗрд░реИ рд╕рдорд╛рди рдЫ, рддрд░ рддреНрдпрд╣рд╛рдБ рдПрдЙрдЯрд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рднрд┐рдиреНрдирддрд╛ рдЫред
apiVersion: v1
kind: BuildConfig
metadata:
name: react-web-app-runtime
spec:
output:
to:
kind: ImageStreamTag
name: react-web-app-runtime:latest // 1
source: // 2
type: Image
images:
- from:
kind: ImageStreamTag
name: react-web-app-builder:latest // 3
paths:
- sourcePath: /opt/app-root/output/. // 4
destinationDir: . // 5
strategy: // 6
sourceStrategy:
from:
kind: ImageStreamTag
name: nginx-image-runtime:latest
incremental: true
type: Source
triggers:
- github:
secret: ${GITHUB_WEBHOOK_SECRET}
type: GitHub
- type: ConfigChange
- type: ImageChange
imageChange: {}
- type: ImageChange
imageChange:
from:
kind: ImageStreamTag
name: react-web-app-builder:latest // 7
рддреНрдпрд╕реЛрднрдП рджреЛрд╕реНрд░реЛ рдирд┐рд░реНрдорд╛рдг рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд╡реЗрдм-рдПрдк-рд░рдирдЯрд╛рдЗрдо рд╣реЛ, рд░ рдпреЛ рд░рд╛рдореНрд░реЛ рдорд╛рдирдХрдмрд╛рдЯ рд╕реБрд░реБ рд╣реБрдиреНрдЫред
1 рд▓реЗрдмрд▓ рдЧрд░рд┐рдПрдХреЛ рд░реЗрдЦрд╛ рдХреБрдиреИ рдирдпрд╛рдБ рдХреБрд░рд╛ рд╣реЛрдЗрди - рдпрд╕рд▓реЗ рдХреЗрд╡рд▓ рднрдиреНрдЫ рдХрд┐ рдирд┐рд░реНрдорд╛рдг рдкрд░рд┐рдгрд╛рдо рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд╡реЗрдм-рдПрдк-рд░рдирдЯрд╛рдЗрдо рдЫрд╡рд┐рдорд╛ рд░рд╛рдЦрд┐рдПрдХреЛ рдЫред
2 рд▓реЗрдмрд▓ рдЧрд░рд┐рдПрдХреЛ рд░реЗрдЦрд╛, рдЕрдШрд┐рд▓реНрд▓реЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдорд╛ рдЬрд╕реНрддреИ, рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╣рд╛рдБрдмрд╛рдЯ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗ рднрдиреЗрд░ рд╕рдВрдХреЗрдд рдЧрд░реНрджрдЫред рддрд░ рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН рдХрд┐ рдпрд╣рд╛рдБ рд╣рд╛рдореА рдпреЛ рдЫрд╡рд┐рдмрд╛рдЯ рд▓рд┐рдЗрдПрдХреЛ рд╣реЛ рднрдиреЗрд░ рднрдирд┐рд░рд╣реЗрдХрд╛ рдЫреМрдВред рдпрд╕рдмрд╛рд╣реЗрдХ, рд╣рд╛рдореАрд▓реЗ рднрд░реНрдЦрд░реИ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реЗрдХреЛ рдЫрд╡рд┐рдмрд╛рдЯ - рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд╡реЗрдм-рдПрдк-рдмрд┐рд▓реНрдбрд░рдмрд╛рдЯ (рд▓рд╛рдЗрди рд▓реЗрдмрд▓ рдЧрд░рд┐рдПрдХреЛ 3 рдорд╛ рд╕рдВрдХреЗрдд рдЧрд░рд┐рдПрдХреЛ)ред рд╣рд╛рдореАрд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЪрд╛рд╣рдиреЗ рдлрд╛рдЗрд▓рд╣рд░реВ рдЫрд╡рд┐ рднрд┐рддреНрд░ рдЫрдиреН рд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рд╕реНрдерд╛рди рддреНрдпрд╣рд╛рдБ 4 рд▓реЗрдмрд▓ рдЧрд░рд┐рдПрдХреЛ рд▓рд╛рдЗрдирдорд╛ рд╕реЗрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫ, рд╣рд╛рдореНрд░реЛ рдХреЗрд╕рдорд╛ рдпреЛ /opt/app-root/output/ рд╣реЛред рдпрджрд┐ рддрдкрд╛рдЗрдБ рд╕рдореНрдЭрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рд╣рд╛рдореНрд░реЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдирд┐рд░реНрдорд╛рдгрдХреЛ рдирддрд┐рдЬрд╛рдХреЛ рдЖрдзрд╛рд░рдорд╛ рдЙрддреНрдкрдиреНрди рдЧрд░рд┐рдПрдХрд╛ рдлрд╛рдЗрд▓рд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░рд┐рдПрдХрд╛ рдЫрдиреНред
рд▓реЗрдмрд▓ 5 рдХреЛ рд╕рд╛рде рд╢рдмреНрджрдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░рд┐рдПрдХреЛ рдЧрдиреНрддрд╡реНрдп рдлреЛрд▓реНрдбрд░ рдХреЗрд╡рд▓ рд╣рд╛рд▓рдХреЛ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реА рд╣реЛ (рдпреЛ рд╕рдмреИ рд╣реЛ, рдпрд╛рдж рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдХреЗрд╣рд┐ рдЬрд╛рджреБрдИ рдЪреАрдЬ рднрд┐рддреНрд░ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЫ рдЬреБрди OpenShift рднрдирд┐рдиреНрдЫ, рд░ рддрдкрд╛рдИрдВрдХреЛ рд╕реНрдерд╛рдиреАрдп рдХрдореНрдкреНрдпреБрдЯрд░рдорд╛ рд╣реЛрдЗрди)ред
рд░рдгрдиреАрддрд┐ рдЦрдгреНрдб - рд░реЗрдЦрд╛ рд▓реЗрдмрд▓ 6 - рдкрдирд┐ рдкрд╣рд┐рд▓реЛ рдирд┐рд░реНрдорд╛рдг рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдЬрд╕реНрддреИ рдЫред рдХреЗрд╡рд▓ рдпрд╕ рдкрдЯрдХ рд╣рд╛рдореА nginx-image-runtime рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЬрд╛рдБрджреИрдЫреМрдВ, рдЬреБрди рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ ImageStream рд╕реЗрдХреНрд╕рдирдорд╛ рджреЗрдЦреНрдпреМрдВред
рдЕрдиреНрддрдорд╛, 7 рд▓реЗрдмрд▓ рдЧрд░рд┐рдПрдХреЛ рд░реЗрдЦрд╛ рдЯреНрд░рд┐рдЧрд░рд╣рд░реВрдХреЛ рдЦрдгреНрдб рд╣реЛ рдЬрд╕рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдкрдЯрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд╡реЗрдм-рдПрдк-рдмрд┐рд▓реНрдбрд░ рдЫрд╡рд┐ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрджрд╛ рдпреЛ рдирд┐рд░реНрдорд╛рдг рд╕рдХреНрд░рд┐рдп рдЧрд░реНрджрдЫред
рдЕрдиреНрдпрдерд╛, рдпреЛ рдЯреЗрдореНрдкреНрд▓реЗрдЯрд▓реЗ рд░рд╛рдореНрд░реЛ рдорд╛рдирдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди, рд╕рд╛рдереИ рд╕реЗрд╡рд╛рд╣рд░реВ рд░ рдорд╛рд░реНрдЧрд╣рд░реВрд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЪреАрдЬрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ, рддрд░ рд╣рд╛рдореА рддреНрдпреЛ рдзреЗрд░реИ рд╡рд┐рд╡рд░рдгрдорд╛ рдЬрд╛рдиреЗрдЫреИрдиреМрдВред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН рдХрд┐ рддреИрдирд╛рде рдЧрд░рд┐рдиреЗ рдЫрд╡рд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд╡реЗрдм-рдПрдк-рд░рдирдЯрд╛рдЗрдо рдЫрд╡рд┐ рд╣реЛред
рдЖрд╡реЗрджрди рдкрд░рд┐рдирд┐рдпреЛрдЬрди
рддреНрдпрд╕реЛрднрдП рдЕрдм рд╣рд╛рдореАрд▓реЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╣реЗрд░реЗрдХрд╛ рдЫреМрдВ, рдпрд╕рд▓рд╛рдИ рдХрд╕рд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рд╣реЗрд░реМрдВред
рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ oc рднрдирд┐рдиреЗ OpenShift рдХреНрд▓рд╛рдЗрдиреНрдЯ рдЙрдкрдХрд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ:
$ find . | grep openshiftio | grep application | xargs -n 1 oc apply -f
$ oc new-app --template react-web-app -p SOURCE_REPOSITORY_URL=https://github.com/lholmquist/react-web-app
рдорд╛рдерд┐рдХреЛ рд╕реНрдХреНрд░рд┐рдирд╕рдЯрдорд╛ рдкрд╣рд┐рд▓реЛ рдЖрджреЗрд╢ рдПрдЙрдЯрд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдЬрд╛рдирд╛рдЬрд╛рдиреА рдЗрдиреНрдЬрд┐рдирд┐рдпрд░рд┐рдЩ рддрд░рд┐рдХрд╛ рд╣реЛред/openshiftio/application.yamlред
рджреЛрд╕реНрд░реЛ рдЖрджреЗрд╢рд▓реЗ рдпрд╕ рдЯреЗрдореНрдкреНрд▓реЗрдЯрдорд╛ рдЖрдзрд╛рд░рд┐рдд рдирдпрд╛рдБ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрдЫред
рдпреА рдЖрджреЗрд╢рд╣рд░реВрд▓реЗ рдХрд╛рдо рдЧрд░реЗрдкрдЫрд┐, рд╣рд╛рдореА рджреЗрдЦреНрдиреЗрдЫреМрдВ рдХрд┐ рд╣рд╛рдореАрд╕рдБрдЧ рджреБрдИрд╡рдЯрд╛ рд╕рдореНрдореЗрд▓рдирд╣рд░реВ рдЫрдиреН:
рд░ рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди рд╕реНрдХреНрд░рд┐рдирдорд╛ рдлрд░реНрдХреЗрд░, рд╣рд╛рдореА рд╕реБрд░реБ рдЧрд░рд┐рдПрдХреЛ рдкреЛрдб рджреЗрдЦреНрдиреЗрдЫреМрдВ:
рд▓рд┐рдЩреНрдХ рдХреНрд▓рд┐рдХ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рд╣рд╛рдореАрд▓рд╛рдИ рд╣рд╛рдореНрд░реЛ рдПрдкрдорд╛ рд▓рдЧрд┐рдиреЗрдЫ, рдЬреБрди рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдПрдк рдкреГрд╖реНрда рд╣реЛ:
рдкреВрд░рдХ реирежреиреж
Angular рдкреНрд░реЗрдореАрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореАрд╕рдБрдЧ рдкрдирд┐ рдЫ
рдпрд╣рд╛рдБ рдврд╛рдБрдЪрд╛ рдЙрд╕реНрддреИ рдЫ, OUTPUT_DIR рдЪрд░ рдмрд╛рд╣реЗрдХред
рдкреВрд░рдХ реирежреиреж
рдпрд╕ рд▓реЗрдЦрдорд╛ рд╣рд╛рдореАрд▓реЗ NGINX рд▓рд╛рдИ рд╡реЗрдм рд╕рд░реНрднрд░рдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдпреМрдВ, рддрд░ рдпрд╕рд▓рд╛рдИ Apache рд╕рдБрдЧ рдмрджрд▓реНрди рд╕рдЬрд┐рд▓реЛ рдЫ, рдлрд╛рдЗрд▓рдорд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред
рдирд┐рд╖реНрдХрд░реНрд╖рдорд╛
рдпрд╕ рд╢реГрдЩреНрдЦрд▓рд╛рдХреЛ рдкрд╣рд┐рд▓реЛ рднрд╛рдЧрдорд╛, рд╣рд╛рдореАрд▓реЗ OpenShift рдкреНрд▓реЗрдЯрдлрд░реНрдордорд╛ рдЖрдзреБрдирд┐рдХ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдХрд╕рд░реА рджреНрд░реБрдд рд░реВрдкрдорд╛ рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реНрдиреЗ рднрдиреЗрд░ рджреЗрдЦрд╛рдпреМрдВред рдЖрдЬ рд╣рд╛рдореАрд▓реЗ рд╡реЗрдм рдПрдк рдЫрд╡рд┐рд▓реЗ рдХреЗ рдЧрд░реНрдЫ рд░ рдпрд╕рд▓рд╛рдИ рдердк рдЙрддреНрдкрд╛рджрди-рддрдпрд╛рд░ рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдирд┐рд░реНрдорд╛рдг рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЪреЗрди рдмрд┐рд▓реНрдбрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ NGINX рдЬрд╕реНрддрд╛ рд╢реБрджреНрдз рд╡реЗрдм рд╕рд░реНрднрд░рд╕рдБрдЧ рдХрд╕рд░реА рдЬреЛрдбреНрди рд╕рдХрд┐рдиреНрдЫ рднрдиреЗрд░ рд╣реЗрд░реНрдпреМрдВред рдпрд╕ рд╢реГрдЩреНрдЦрд▓рд╛рдХреЛ рдЕрд░реНрдХреЛ рд░ рдЕрдиреНрддрд┐рдо рд▓реЗрдЦрдорд╛, рд╣рд╛рдореА рдХрд╕рд░реА OpenShift рдорд╛ рддрдкрд╛рдИрдВрдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рдХрд╛рд╕ рд╕рд░реНрднрд░ рдЪрд▓рд╛рдЙрдиреЗ рд░ рд╕реНрдерд╛рдиреАрдп рд░ рд░рд┐рдореЛрдЯ рдлрд╛рдЗрд▓рд╣рд░реВрдХреЛ рд╕рд┐рдЩреНрдХреНрд░реЛрдирд╛рдЗрдЬреЗрд╕рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреЗ рджреЗрдЦрд╛рдЙрдиреЗрдЫреМрдВред
рд▓реЗрдЦ рдХреЛ рдпреЛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рд╕рд╛рдордЧреНрд░реА
- рднрд╛рдЧ 1:
рдХреЗрд╡рд▓ рдХреЗрд╣рд┐ рдЪрд░рдгрд╣рд░реВрдорд╛ рдЖрдзреБрдирд┐рдХ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдХрд╕рд░реА рддреИрдирд╛рдд рдЧрд░реНрдиреЗ ; - рднрд╛рдЧ реи: рдХрд╕рд░реА рдирдпрд╛рдБ S2I рдЫрд╡рд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рд╡рд┐рджреНрдпрдорд╛рди HTTP рд╕рд░реНрднрд░ рдЫрд╡рд┐рдХреЛ рд╕рд╛рде, рдЬрд╕реНрддреИ NGINX, рдЙрддреНрдкрд╛рджрди рдкрд░рд┐рдирд┐рдпреЛрдЬрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕рдореНрдмрдиреНрдзрд┐рдд OpenShift рд╕рднрд╛рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░;
- рднрд╛рдЧ 3: OpenShift рдкреНрд▓реЗрдЯрдлрд░реНрдордорд╛ рддрдкрд╛рдЗрдБрдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рдХрд╛рд╕ рд╕рд░реНрднрд░ рдХрд╕рд░реА рдЪрд▓рд╛рдЙрдиреЗ рд░ рдпрд╕рд▓рд╛рдИ рд╕реНрдерд╛рдиреАрдп рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реАрд╕рдБрдЧ рд╕рд┐рдЩреНрдХреНрд░реЛрдирд╛рдЗрдЬ рдЧрд░реНрдиреЗред
рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрд░реЛрддрд╣рд░реВ
- рдирд┐: рд╢реБрд▓реНрдХ рдИ-рдкреБрд╕реНрддрдХ
OpenShift рдорд╛ рддреИрдирд╛рдд рдЧрд░реНрджреИ . - рдорд╛ рдЬрд╛рдирдХрд╛рд░реА
OpenShift рд░ Kubernetes .
рд╕реНрд░реЛрдд: www.habr.com