OpenShift рдорд╛ рдЖрдзреБрдирд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ, рднрд╛рдЧ 2: рдЪреЗрди рдмрд┐рд▓реНрдбрд╣рд░реВ

рдирдорд╕реНрддреЗ рд╕рдмреИ! рдпреЛ рд╣рд╛рдореНрд░реЛ рд╢реГрдЩреНрдЦрд▓рд╛рдХреЛ рджреЛрд╕реНрд░реЛ рдкреЛрд╖реНрдЯ рд╣реЛ рдЬрд╕рдорд╛ рд╣рд╛рдореАрд▓реЗ Red Hat OpenShift рдорд╛ рдЖрдзреБрдирд┐рдХ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдХрд╕рд░реА рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реНрдиреЗ рднрдиреЗрд░ рджреЗрдЦрд╛рдЙрдБрдЫреМрдВред

OpenShift рдорд╛ рдЖрдзреБрдирд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ, рднрд╛рдЧ 2: рдЪреЗрди рдмрд┐рд▓реНрдбрд╣рд░реВ

рдЕрдШрд┐рд▓реНрд▓реЛ рдкреЛрд╖реНрдЯрдорд╛, рд╣рд╛рдореАрд▓реЗ рдирдпрд╛рдБ S2I (рд╕реНрд░реЛрдд-рджреЗрдЦрд┐-рдЫрд╡рд┐) рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдЫрд╡рд┐рдХреЛ рдХреНрд╖рдорддрд╛рд╣рд░реВрдорд╛ рдереЛрд░реИ рдЫреЛрдПрдХрд╛ рдерд┐рдпреМрдВ, рдЬреБрди OpenShift рдкреНрд▓реЗрдЯрдлрд░реНрдордорд╛ рдЖрдзреБрдирд┐рдХ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдирд┐рд░реНрдорд╛рдг рд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдбрд┐рдЬрд╛рдЗрди рдЧрд░рд┐рдПрдХреЛ рд╣реЛред рддреНрдпрд╕реЛрднрдП рд╣рд╛рдореА рдЪрд╛рдБрдбреИ рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдбрд┐рдкреНрд▓реЛрдЗ рдЧрд░реНрдиреЗ рд╡рд┐рд╖рдпрдорд╛ рдЪрд╛рд╕реЛ рд░рд╛рдЦреНрдпреМрдВ, рд░ рдЖрдЬ рд╣рд╛рдореА рдХрд╕рд░реА S2I рдЫрд╡рд┐рд▓рд╛рдИ "рд╢реБрджреНрдз" рдмрд┐рд▓реНрдбрд░ рдЫрд╡рд┐рдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рд░ рдпрд╕рд▓рд╛рдИ рд╕рдореНрдмрдиреНрдзрд┐рдд OpenShift рд╕рднрд╛рд╣рд░реВрд╕рдБрдЧ рд╕рдВрдпреЛрдЬрди рдЧрд░реНрдиреЗ рднрдиреЗрд░ рд╣реЗрд░реНрдиреЗрдЫреМрдВред

рд╕рдлрд╛ рдмрд┐рд▓реНрдбрд░ рдЫрд╡рд┐

рд╣рд╛рдореАрд▓реЗ рднрд╛рдЧ рез рдорд╛ рдЙрд▓реНрд▓реЗрдЦ рдЧрд░реЗрдЭреИрдВ, рдзреЗрд░реИрдЬрд╕реЛ рдЖрдзреБрдирд┐рдХ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдорд╛ рддрдерд╛рдХрдерд┐рдд рдирд┐рд░реНрдорд╛рдг рдЪрд░рдг рд╣реБрдиреНрдЫ, рдЬрд╕рд▓реЗ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдХреЛрдб рдЯреНрд░рд╛рдиреНрд╕рдкрд┐рд▓реЗрд╕рди, рдорд▓реНрдЯрд┐рдкрд▓ рдлрд╛рдЗрд▓ рдХрдиреНрдЯреЗрдиреЗрд╕рди, рд░ рдорд┐рдирд┐рдлрд┐рдХреЗрд╢рди рдЬрд╕реНрддрд╛ рдХрд╛рд░реНрдпрд╣рд░реВ рдЧрд░реНрджрдЫред рдпреА рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рдкрд░рд┐рдгрд╛рдо рд╕реНрд╡рд░реВрдк рдкреНрд░рд╛рдкреНрдд рдЧрд░рд┐рдПрдХрд╛ рдлрд╛рдЗрд▓рд╣рд░реВ - рд░ рдпреЛ рд╕реНрдерд┐рд░ HTML, JavaScript рд░ CSS рд╣реЛ - рдЖрдЙрдЯрдкреБрдЯ рдлреЛрд▓реНрдбрд░рдорд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░рд┐рдиреНрдЫред рдпрд╕ рдлреЛрд▓реНрдбрд░рдХреЛ рд╕реНрдерд╛рди рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдХреБрди рдирд┐рд░реНрдорд╛рдг рдЙрдкрдХрд░рдгрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рднрдЗрд░рд╣реЗрдХреЛ рдЫ рднрдиреНрдиреЗрдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджрдЫ, рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдпреЛ ./build рдлреЛрд▓реНрдбрд░ рд╣реБрдиреЗрдЫ (рд╣рд╛рдореА рддрд▓ рдердк рд╡рд┐рд╡рд░рдгрдорд╛ рдпрд╕рдорд╛ рдлрд┐рд░реНрддрд╛ рдЖрдЙрдиреЗрдЫреМрдВ)ред

рд╕реНрд░реЛрдд-рджреЗрдЦрд┐-рдЫрд╡рд┐ (S2I)

рдпрд╕ рдкреЛрд╖реНрдЯрдорд╛ рд╣рд╛рдореА "S2I рдХреЗ рд╣реЛ рд░ рдпрд╕рд▓рд╛рдИ рдХрд╕рд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ" рд╢реАрд░реНрд╖рдХрдорд╛ рдЫреБрдБрджреИрдиреМрдВ (рддрдкрд╛рдИрдВ рдпрд╕рдХреЛ рдмрд╛рд░реЗрдорд╛ рдердк рдкрдвреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдпрд╣рд╛рдБ), рддрд░ рд╡реЗрдм рдПрдк рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдЫрд╡рд┐рд▓реЗ рдХреЗ рдЧрд░реНрдЫ рднрдиреЗрд░ рдмреБрдЭреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдпрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХрд╛ рджреБрдИ рдЪрд░рдгрд╣рд░реВрдмрд╛рд░реЗ рд╕реНрдкрд╖реНрдЯ рд╣реБрдиреБ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫред

рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдЪрд░рдг

рдЕрд╕реЗрдВрдмрд▓реА рдЪрд░рдг рдкреНрд░рдХреГрддрд┐рдорд╛ рдзреЗрд░реИ рдорд┐рд▓реНрджреЛрдЬреБрд▓реНрджреЛ рдЫ рдЬрдм рддрдкрд╛рдЗрдБ рдбрдХрд░ рдмрд┐рд▓реНрдб рдЪрд▓рд╛рдЙрдиреБрд╣реБрдиреНрдЫ рд░ рдирдпрд╛рдБ рдбрдХрд░ рдЫрд╡рд┐рдХреЛ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реБрдиреНрдЫред рддрджрдиреБрд╕рд╛рд░, рдпреЛ рдЪрд░рдг OpenShift рдкреНрд▓реЗрдЯрдлрд░реНрдордорд╛ рдирд┐рд░реНрдорд╛рдг рд╕реБрд░реБ рдЧрд░реНрджрд╛ рд╣реБрдиреНрдЫред

рд╡реЗрдм рдПрдк рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдЫрд╡рд┐рдХреЛ рдорд╛рдорд▓рд╛рдорд╛, рдпреЛ рддрдкрд╛рдИрдВрдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд░ рдирд┐рд░реНрдорд╛рдг рдЪрд▓рд╛рдЙрди рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдЫред рд▓рд┐рдкрд┐ рдЬрдореНрдорд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛, рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдЫрд╡рд┐рд▓реЗ npm рд░рди рдирд┐рд░реНрдорд╛рдг рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ, рддрд░ рдпрд╕рд▓рд╛рдИ NPM_BUILD рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ рдорд╛рд░реНрдлрдд рдУрднрд░рд░рд╛рдЗрдб рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред

рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рднрдиреЗрдЭреИрдВ, рд╕рдорд╛рдкреНрдд рднрдПрдХреЛ, рдкрд╣рд┐рд▓реЗ рдиреИ рдирд┐рд░реНрдорд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд╕реНрдерд╛рди рддрдкрд╛рдИрд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдЙрдкрдХрд░рдгрд╣рд░реВрдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджрдЫред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдорд╛рдорд▓рд╛ рдорд╛ рдпреЛ ./build рдлреЛрд▓реНрдбрд░ рд╣реБрдиреЗрдЫ, рд░ Angular рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реБ рдХреЛ рд▓рд╛рдЧреА рдпреЛ project_name/dist рдлреЛрд▓реНрдбрд░ рд╣реБрдиреЗрдЫред рд░, рдЕрдШрд┐рд▓реНрд▓реЛ рдкреЛрд╖реНрдЯрдорд╛ рджреЗрдЦрд╛рдЗрдПрдЭреИрдВ, рдЖрдЙрдЯрдкреБрдЯ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрдХреЛ рд╕реНрдерд╛рди, рдЬреБрди рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рд╕реЗрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫ, OUTPUT_DIR рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ рдорд╛рд░реНрдлрдд рдУрднрд░рд░рд╛рдЗрдб рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдард┐рдХ рдЫ, рдЖрдЙрдЯрдкреБрдЯ рдлреЛрд▓реНрдбрд░рдХреЛ рд╕реНрдерд╛рди рдлреНрд░реЗрдорд╡рд░реНрдХ рджреЗрдЦрд┐ рдлреНрд░реЗрдорд╡рд░реНрдХрдорд╛ рдлрд░рдХ рднрдПрдХреЛ рд╣реБрдирд╛рд▓реЗ, рддрдкрд╛рдИрд▓реЗ рдЙрддреНрдкрдиреНрди рдЖрдЙрдЯрдкреБрдЯрд▓рд╛рдИ рдЫрд╡рд┐рдХреЛ рдорд╛рдирдХ рдлреЛрд▓реНрдбрд░рдорд╛ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЕрд░реНрдерд╛рддреН /opt/apt-root/outputред рдпреЛ рд▓реЗрдЦрдХреЛ рдмрд╛рдБрдХреА рднрд╛рдЧ рдмреБрдЭреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдпреЛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫ, рддрд░ рдЕрд╣рд┐рд▓реЗрдХреЛ рд▓рд╛рдЧрд┐ рдЪрд╛рдБрдбреИ рдЕрд░реНрдХреЛ рдЪрд░рдгрдорд╛ рд╣реЗрд░реМрдВ - рд░рди рдЪрд░рдгред

рд░рди рдЪрд░рдг

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

рдпреЛ рд╡рд┐рдзрд┐ рдЪрд╛рдБрдбреИ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдбрд┐рдкреНрд▓реЛрдЗ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рд░рд╛рдореНрд░реЛ рдЫ, рддрд░ рдпреЛ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рд╕реНрдерд┐рд░ рд╕рд╛рдордЧреНрд░реА рдпрд╕ рддрд░рд┐рдХрд╛рд▓реЗ рд╕реЗрд╡рд╛ рдЧрд░реНрди рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░рд┐рдПрдХреЛ рдЫреИрдиред рдард┐рдХ рдЫ, рд╡рд╛рд╕реНрддрд╡рдорд╛ рд╣рд╛рдореА рдХреЗрд╡рд▓ рд╕реНрдерд┐рд░ рд╕рд╛рдордЧреНрд░реА рдорд╛рддреНрд░ рд╕реЗрд╡рд╛ рдЧрд░реНрдЫреМрдВ, рд╣рд╛рдореАрд▓рд╛рдИ рд╣рд╛рдореНрд░реЛ рдЫрд╡рд┐ рднрд┐рддреНрд░ рд╕реНрдерд╛рдкрд┐рдд Node.js рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджреИрди - рд╡реЗрдм рд╕рд░реНрднрд░ рдкрд░реНрдпрд╛рдкреНрдд рд╣реБрдиреЗрдЫред

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

рдЬрдВрдЬреАрд░ рдмрдирд╛рдЙрдБрдЫ

рдпрд┐рдиреИ рд╡рд┐рд╖рдпрдорд╛ рд▓реЗрдЦреНрдЫрдиреН рдЬрдВрдЬреАрд░ рдирд┐рд░реНрдорд╛рдгрд╣рд░реВ OpenShift рдХрд╛рдЧрдЬрд╛рддрдорд╛:

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

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

рдпрд╕рд░реА, рд╣рд╛рдореАрд▓реЗ рд╡реЗрдм рдПрдк рдмрд┐рд▓реНрдбрд░ рдЫрд╡рд┐рд▓рд╛рдИ "рд╢реБрджреНрдз" рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛рдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ рд░ рдПрдХреИ рд╕рдордпрдорд╛ рд╕рд╛рдиреЛ рд░рдирдЯрд╛рдЗрдо рдЫрд╡рд┐ рдЫред

рдЕрдм рдпрд╕рд▓рд╛рдИ рд╡рд┐рд╢реЗрд╖ рдЙрджрд╛рд╣рд░рдгрдХреЛ рд╕рд╛рде рд╣реЗрд░реМрдВред

рдкреНрд░рд╢рд┐рдХреНрд╖рдгрдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВ рд╕рд░рд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЖрд╡реЗрджрди, create-react-app рдХрдорд╛рдгреНрдб рд▓рд╛рдЗрди рдЙрдкрдХрд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдпреЛред

рдпрд╕рд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рд╕рдмреИ рдХреБрд░рд╛ рдорд┐рд▓рд╛рдЙрди рдорджреНрджрдд рдЧрд░реНрдиреЗрдЫ OpenShift рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдлрд╛рдЗрд▓.

рдпрд╕ рдлрд╛рдЗрд▓рд▓рд╛рдИ рдердк рд╡рд┐рд╡рд░рдгрдорд╛ рд╣реЗрд░реМрдВ, рд░ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдЦрдгреНрдбрд╕рдБрдЧ рд╕реБрд░реБ рдЧрд░реМрдВред

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ред

рджреЛрд╕реНрд░реЛ рдЖрджреЗрд╢рд▓реЗ рдпрд╕ рдЯреЗрдореНрдкреНрд▓реЗрдЯрдорд╛ рдЖрдзрд╛рд░рд┐рдд рдирдпрд╛рдБ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрдЫред

рдпреА рдЖрджреЗрд╢рд╣рд░реВрд▓реЗ рдХрд╛рдо рдЧрд░реЗрдкрдЫрд┐, рд╣рд╛рдореА рджреЗрдЦреНрдиреЗрдЫреМрдВ рдХрд┐ рд╣рд╛рдореАрд╕рдБрдЧ рджреБрдИрд╡рдЯрд╛ рд╕рдореНрдореЗрд▓рдирд╣рд░реВ рдЫрдиреН:

OpenShift рдорд╛ рдЖрдзреБрдирд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ, рднрд╛рдЧ 2: рдЪреЗрди рдмрд┐рд▓реНрдбрд╣рд░реВ

рд░ рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди рд╕реНрдХреНрд░рд┐рдирдорд╛ рдлрд░реНрдХреЗрд░, рд╣рд╛рдореА рд╕реБрд░реБ рдЧрд░рд┐рдПрдХреЛ рдкреЛрдб рджреЗрдЦреНрдиреЗрдЫреМрдВ:

OpenShift рдорд╛ рдЖрдзреБрдирд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ, рднрд╛рдЧ 2: рдЪреЗрди рдмрд┐рд▓реНрдбрд╣рд░реВ

рд▓рд┐рдЩреНрдХ рдХреНрд▓рд┐рдХ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рд╣рд╛рдореАрд▓рд╛рдИ рд╣рд╛рдореНрд░реЛ рдПрдкрдорд╛ рд▓рдЧрд┐рдиреЗрдЫ, рдЬреБрди рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдПрдк рдкреГрд╖реНрда рд╣реЛ:

OpenShift рдорд╛ рдЖрдзреБрдирд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ, рднрд╛рдЧ 2: рдЪреЗрди рдмрд┐рд▓реНрдбрд╣рд░реВ

рдкреВрд░рдХ реирежреиреж

Angular рдкреНрд░реЗрдореАрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореАрд╕рдБрдЧ рдкрдирд┐ рдЫ рдЙрджрд╛рд╣рд░рдг рдЖрд╡реЗрджрди.

рдпрд╣рд╛рдБ рдврд╛рдБрдЪрд╛ рдЙрд╕реНрддреИ рдЫ, OUTPUT_DIR рдЪрд░ рдмрд╛рд╣реЗрдХред

рдкреВрд░рдХ реирежреиреж

рдпрд╕ рд▓реЗрдЦрдорд╛ рд╣рд╛рдореАрд▓реЗ NGINX рд▓рд╛рдИ рд╡реЗрдм рд╕рд░реНрднрд░рдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдпреМрдВ, рддрд░ рдпрд╕рд▓рд╛рдИ Apache рд╕рдБрдЧ рдмрджрд▓реНрди рд╕рдЬрд┐рд▓реЛ рдЫ, рдлрд╛рдЗрд▓рдорд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред NGINX рдЫрд╡рд┐ рдорд╛ Apache рдЫрд╡рд┐.

рдирд┐рд╖реНрдХрд░реНрд╖рдорд╛

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

рд▓реЗрдЦ рдХреЛ рдпреЛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рд╕рд╛рдордЧреНрд░реА

  • рднрд╛рдЧ 1: рдХреЗрд╡рд▓ рдХреЗрд╣рд┐ рдЪрд░рдгрд╣рд░реВрдорд╛ рдЖрдзреБрдирд┐рдХ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдХрд╕рд░реА рддреИрдирд╛рдд рдЧрд░реНрдиреЗ;
  • рднрд╛рдЧ реи: рдХрд╕рд░реА рдирдпрд╛рдБ S2I рдЫрд╡рд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рд╡рд┐рджреНрдпрдорд╛рди HTTP рд╕рд░реНрднрд░ рдЫрд╡рд┐рдХреЛ рд╕рд╛рде, рдЬрд╕реНрддреИ NGINX, рдЙрддреНрдкрд╛рджрди рдкрд░рд┐рдирд┐рдпреЛрдЬрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕рдореНрдмрдиреНрдзрд┐рдд OpenShift рд╕рднрд╛рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░;
  • рднрд╛рдЧ 3: OpenShift рдкреНрд▓реЗрдЯрдлрд░реНрдордорд╛ рддрдкрд╛рдЗрдБрдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рдХрд╛рд╕ рд╕рд░реНрднрд░ рдХрд╕рд░реА рдЪрд▓рд╛рдЙрдиреЗ рд░ рдпрд╕рд▓рд╛рдИ рд╕реНрдерд╛рдиреАрдп рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реАрд╕рдБрдЧ рд╕рд┐рдЩреНрдХреНрд░реЛрдирд╛рдЗрдЬ рдЧрд░реНрдиреЗред

рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрд░реЛрддрд╣рд░реВ

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди