แƒ—แƒแƒœแƒแƒ›แƒ”แƒ“แƒ แƒแƒ•แƒ” แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ OpenShift-แƒ–แƒ”, แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 2: แƒฏแƒแƒญแƒ•แƒฃแƒ แƒ˜ แƒ™แƒแƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜

แฒกแƒแƒšแƒแƒ›แƒ˜ แƒงแƒ•แƒ”แƒšแƒแƒก! แƒ”แƒก แƒแƒ แƒ˜แƒก แƒฉแƒ•แƒ”แƒœแƒ˜ แƒกแƒ”แƒ แƒ˜แƒ˜แƒก แƒ›แƒ”แƒแƒ แƒ” แƒžแƒแƒกแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒจแƒ˜แƒช แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ—, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ’แƒแƒœแƒ•แƒแƒ—แƒแƒ•แƒกแƒแƒ— แƒ—แƒแƒœแƒแƒ›แƒ”แƒ“แƒ แƒแƒ•แƒ” แƒ•แƒ”แƒ‘ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ Red Hat OpenShift-แƒ–แƒ”.

แƒ—แƒแƒœแƒแƒ›แƒ”แƒ“แƒ แƒแƒ•แƒ” แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ OpenShift-แƒ–แƒ”, แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 2: แƒฏแƒแƒญแƒ•แƒฃแƒ แƒ˜ แƒ™แƒแƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜

แƒฌแƒ˜แƒœแƒ แƒžแƒแƒกแƒขแƒจแƒ˜ แƒแƒ“แƒœแƒแƒ• แƒจแƒ”แƒ•แƒ”แƒฎแƒ”แƒ— แƒแƒฎแƒแƒšแƒ˜ S2I (source-to-image) แƒจแƒ”แƒ›แƒฅแƒ›แƒœแƒ”แƒšแƒ˜แƒก แƒ˜แƒ›แƒ˜แƒฏแƒ˜แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ”แƒ‘แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒœแƒ™แƒฃแƒ—แƒ•แƒœแƒ˜แƒšแƒ˜แƒ OpenShift แƒžแƒšแƒแƒขแƒคแƒแƒ แƒ›แƒแƒ–แƒ” แƒ—แƒแƒœแƒแƒ›แƒ”แƒ“แƒ แƒแƒ•แƒ” แƒ•แƒ”แƒ‘ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฅแƒ›แƒœแƒ”แƒšแƒแƒ“ แƒ“แƒ แƒ’แƒแƒœแƒกแƒแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒšแƒแƒ“. แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ“แƒ˜แƒ— แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒ—แƒ”แƒ›แƒ˜แƒ—, แƒ“แƒฆแƒ”แƒก แƒ™แƒ˜ แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ•แƒ—, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ— S2I แƒกแƒฃแƒ แƒแƒ—แƒ˜, แƒ แƒแƒ’แƒแƒ แƒช โ€žแƒกแƒฃแƒคแƒ—แƒโ€œ แƒ›แƒจแƒ”แƒœแƒ”แƒ‘แƒšแƒ˜แƒก แƒกแƒฃแƒ แƒแƒ—แƒ˜ แƒ“แƒ แƒ’แƒแƒ•แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒแƒ— แƒ˜แƒ’แƒ˜ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒš OpenShift แƒแƒกแƒแƒ›แƒ‘แƒšแƒ”แƒ”แƒ‘แƒ—แƒแƒœ.

แƒ›แƒจแƒ”แƒœแƒ”แƒ‘แƒšแƒ˜แƒก แƒกแƒฃแƒคแƒ—แƒ แƒกแƒฃแƒ แƒแƒ—แƒ˜

แƒ แƒแƒ’แƒแƒ แƒช แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒœแƒแƒฌแƒ˜แƒšแƒจแƒ˜ แƒแƒฆแƒ•แƒœแƒ˜แƒจแƒœแƒ”แƒ—, แƒ—แƒแƒœแƒแƒ›แƒ”แƒ“แƒ แƒแƒ•แƒ” แƒ•แƒ”แƒ‘ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒฃแƒ›แƒ”แƒขแƒ”แƒกแƒแƒ‘แƒแƒก แƒแƒฅแƒ•แƒก แƒ”แƒ’แƒ แƒ”แƒ— แƒฌแƒแƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒจแƒ”แƒœแƒ”แƒ‘แƒšแƒแƒ‘แƒ˜แƒก แƒ”แƒขแƒแƒžแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช, แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ”แƒกแƒ˜, แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒก แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒก, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ แƒ™แƒแƒ“แƒ˜แƒก แƒขแƒ แƒแƒœแƒกแƒžแƒ˜แƒšแƒแƒชแƒ˜แƒ, แƒ›แƒ แƒแƒ•แƒแƒšแƒฏแƒ”แƒ แƒแƒ“แƒ˜ แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ”แƒ แƒ—แƒ”แƒ‘แƒ แƒ“แƒ แƒ›แƒ˜แƒœแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ. แƒแƒ› แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ“ แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜ - แƒ“แƒ แƒ”แƒก แƒแƒ แƒ˜แƒก แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ HTML, JavaScript แƒ“แƒ CSS - แƒ˜แƒœแƒแƒฎแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ”แƒจแƒ˜. แƒแƒ› แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ˜แƒก แƒ›แƒ“แƒ”แƒ‘แƒแƒ แƒ”แƒแƒ‘แƒ แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ˜แƒ›แƒแƒ–แƒ”, แƒ—แƒฃ แƒ แƒ build แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ, แƒฎแƒแƒšแƒ React-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ”แƒก แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ ./build แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ” (แƒแƒ›แƒแƒก แƒฃแƒคแƒ แƒ แƒ“แƒ”แƒขแƒแƒšแƒฃแƒ แƒแƒ“ แƒ“แƒแƒ•แƒฃแƒ‘แƒ แƒฃแƒœแƒ“แƒ”แƒ‘แƒ˜แƒ— แƒฅแƒ•แƒ”แƒ›แƒแƒ—).

แƒฌแƒงแƒแƒ แƒ-แƒกแƒฃแƒ แƒแƒ—แƒ˜ (S2I)

แƒแƒ› แƒžแƒแƒกแƒขแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒแƒ  แƒจแƒ”แƒ•แƒ”แƒฎแƒ”แƒ‘แƒ˜แƒ— แƒ—แƒ”แƒ›แƒแƒก "แƒ แƒ แƒแƒ แƒ˜แƒก S2I แƒ“แƒ แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ˜แƒ’แƒ˜" (แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ›แƒ”แƒขแƒ˜ แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒแƒ— แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒแƒฅ), แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜แƒ แƒ•แƒ˜แƒชแƒแƒ“แƒ”แƒ— แƒแƒ› แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒแƒ แƒ˜ แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜, แƒ แƒแƒ—แƒ แƒ’แƒแƒ˜แƒ’แƒแƒ— แƒ แƒแƒก แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒก Web App Builder แƒกแƒฃแƒ แƒแƒ—แƒ˜.

แƒจแƒ”แƒ™แƒ แƒ”แƒ‘แƒ˜แƒก แƒ”แƒขแƒแƒžแƒ˜

แƒแƒกแƒแƒ›แƒ‘แƒšแƒ”แƒ˜แƒก แƒคแƒแƒ–แƒ แƒ‘แƒฃแƒœแƒ”แƒ‘แƒ˜แƒ— แƒซแƒแƒšแƒ˜แƒแƒœ แƒฐแƒ’แƒแƒ•แƒก แƒ˜แƒ›แƒแƒก, แƒ แƒแƒช แƒฎแƒ“แƒ”แƒ‘แƒ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ—แƒฅแƒ•แƒ”แƒœ แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ— docker build-แƒก แƒ“แƒ แƒ›แƒ—แƒแƒ•แƒ แƒ“แƒ”แƒ‘แƒ แƒแƒฎแƒแƒšแƒ˜ Docker แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒ—. แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ“, แƒ”แƒก แƒ”แƒขแƒแƒžแƒ˜ แƒฎแƒ“แƒ”แƒ‘แƒ OpenShift แƒžแƒšแƒแƒขแƒคแƒแƒ แƒ›แƒแƒ–แƒ” build-แƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ˜แƒกแƒแƒก.

Web App Builder แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ˜แƒก แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒ–แƒ” แƒ“แƒ build-แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒแƒ–แƒ”. แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜แƒก แƒแƒฌแƒงแƒแƒ‘แƒ. แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“, แƒแƒฆแƒ›แƒจแƒ”แƒœแƒ”แƒ‘แƒšแƒ˜แƒก แƒกแƒฃแƒ แƒแƒ—แƒ˜ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก npm run build แƒ™แƒแƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒแƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒ˜แƒกแƒ˜ แƒ’แƒแƒ“แƒแƒคแƒแƒ แƒ•แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ NPM_BUILD แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒชแƒ•แƒšแƒแƒ“แƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—.

แƒ แƒแƒ’แƒแƒ แƒช แƒแƒ“แƒ แƒ” แƒ•แƒ—แƒฅแƒ•แƒ˜แƒ—, แƒ“แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒฃแƒšแƒ˜, แƒฃแƒ™แƒ•แƒ” แƒแƒจแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒ“แƒ”แƒ‘แƒแƒ แƒ”แƒแƒ‘แƒ แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ˜แƒ›แƒแƒ–แƒ”, แƒ—แƒฃ แƒ แƒ แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒก แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ—. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, React-แƒ˜แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒ”แƒก แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ ./build แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ”, แƒฎแƒแƒšแƒ Angular แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ”แƒก แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ project_name/dist แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ”. แƒ“แƒ, แƒ แƒแƒ’แƒแƒ แƒช แƒฃแƒ™แƒ•แƒ” แƒœแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜แƒ แƒฌแƒ˜แƒœแƒ แƒžแƒแƒกแƒขแƒจแƒ˜, แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒก แƒ›แƒ“แƒ”แƒ‘แƒแƒ แƒ”แƒแƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“ แƒแƒกแƒแƒ’แƒ”แƒ‘แƒแƒ“, แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ“แƒแƒ˜แƒฌแƒ”แƒ แƒแƒก OUTPUT_DIR แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒชแƒ•แƒšแƒแƒ“แƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—. แƒ™แƒแƒ แƒ’แƒแƒ“, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ˜แƒก แƒ›แƒ“แƒ”แƒ‘แƒแƒ แƒ”แƒแƒ‘แƒ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ“แƒ”แƒ‘แƒ แƒฉแƒแƒ แƒฉแƒแƒ“แƒแƒœ แƒฉแƒแƒ แƒฉแƒแƒจแƒ˜, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ“แƒแƒแƒ™แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒ— แƒ’แƒแƒ›แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒฃแƒš แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒก แƒ’แƒแƒ›แƒแƒกแƒแƒฎแƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒš แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ”แƒจแƒ˜, แƒ™แƒ”แƒ แƒซแƒแƒ“ /opt/apt-root/output. แƒ”แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜แƒ แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒ“แƒแƒœแƒแƒ แƒฉแƒ”แƒœแƒ˜ แƒ’แƒแƒกแƒแƒ’แƒ”แƒ‘แƒแƒ“, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒฎแƒšแƒ แƒ›แƒแƒ“แƒ˜แƒ— แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒ’แƒแƒ“แƒแƒ•แƒฎแƒ”แƒ“แƒแƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ”แƒขแƒแƒžแƒ–แƒ” - แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒคแƒแƒ–แƒแƒก.

แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒคแƒแƒ–แƒ

แƒ”แƒก แƒ”แƒขแƒแƒžแƒ˜ แƒฎแƒ“แƒ”แƒ‘แƒ แƒ›แƒแƒจแƒ˜แƒœ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ’แƒแƒ›แƒแƒซแƒแƒฎแƒ”แƒ‘แƒ แƒฎแƒ“แƒ”แƒ‘แƒ แƒ“แƒแƒ™แƒ”แƒ แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒแƒ–แƒ” แƒแƒฎแƒแƒš แƒกแƒฃแƒ แƒแƒ—แƒ–แƒ”, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒฅแƒ›แƒœแƒ แƒแƒกแƒแƒ›แƒ‘แƒšแƒ”แƒ˜แƒก แƒ”แƒขแƒแƒžแƒ–แƒ”. แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒฎแƒ“แƒ”แƒ‘แƒ OpenShift แƒžแƒšแƒแƒขแƒคแƒแƒ แƒ›แƒแƒ–แƒ” แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒกแƒแƒก. แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜ แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒ›แƒแƒ“แƒฃแƒšแƒ˜ แƒ–แƒ”แƒ›แƒแƒแƒฆแƒœแƒ˜แƒจแƒœแƒฃแƒš แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒš แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒš แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒจแƒ˜ แƒ›แƒ“แƒ”แƒ‘แƒแƒ แƒ” แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒจแƒ˜แƒœแƒแƒแƒ แƒกแƒ˜แƒก แƒ›แƒแƒกแƒแƒ›แƒกแƒแƒฎแƒฃแƒ แƒ”แƒ‘แƒšแƒแƒ“.

แƒ”แƒก แƒ›แƒ”แƒ—แƒแƒ“แƒ˜ แƒ™แƒแƒ แƒ’แƒ˜แƒ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒ’แƒแƒœแƒกแƒแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒšแƒแƒ“, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ–แƒแƒ’แƒแƒ“แƒแƒ“ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ แƒ”แƒ™แƒแƒ›แƒ”แƒœแƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒจแƒ˜แƒœแƒแƒแƒ แƒกแƒ˜แƒก แƒแƒ› แƒ’แƒ–แƒ˜แƒ— แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ. แƒ˜แƒกแƒ”, แƒ แƒแƒ“แƒ’แƒแƒœ แƒกแƒ˜แƒœแƒแƒ›แƒ“แƒ•แƒ˜แƒšแƒ”แƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ  แƒจแƒ˜แƒœแƒแƒแƒ แƒกแƒก แƒ•แƒ”แƒ›แƒกแƒแƒฎแƒฃแƒ แƒ”แƒ‘แƒ˜แƒ—, แƒแƒ  แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ Node.js แƒ“แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒฉแƒ•แƒ”แƒœแƒ˜ แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒก แƒจแƒ˜แƒ’แƒœแƒ˜แƒ— - แƒกแƒแƒ™แƒ›แƒแƒ แƒ˜แƒกแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ•แƒ”แƒ‘ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜.

แƒกแƒฎแƒ•แƒ แƒกแƒ˜แƒขแƒงแƒ•แƒ”แƒ‘แƒ˜แƒ— แƒ แƒแƒ› แƒ•แƒ—แƒฅแƒ•แƒแƒ—, แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒกแƒแƒก แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ”แƒ แƒ—แƒ˜ แƒ แƒแƒ›, แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒกแƒแƒก - แƒ›แƒ”แƒแƒ แƒ”. แƒแƒ› แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒแƒจแƒ˜, แƒฏแƒแƒญแƒ•แƒฃแƒ แƒ˜ แƒœแƒแƒ’แƒ”แƒ‘แƒแƒ‘แƒ”แƒ‘แƒ˜ แƒ’แƒแƒ›แƒแƒ“แƒ’แƒ”แƒ‘แƒ.

แƒ›แƒ˜แƒฏแƒแƒญแƒ•แƒฃแƒšแƒ˜ แƒœแƒแƒ’แƒ”แƒ‘แƒแƒ‘แƒ”แƒ‘แƒ˜

แƒแƒ›แƒแƒ–แƒ” แƒฌแƒ”แƒ แƒ”แƒœ แƒ›แƒ˜แƒฏแƒแƒญแƒ•แƒฃแƒšแƒ˜ แƒœแƒแƒ’แƒ”แƒ‘แƒแƒ‘แƒ”แƒ‘แƒ˜ OpenShift แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒแƒจแƒ˜:

โ€žแƒแƒ แƒ˜ แƒแƒกแƒแƒ›แƒ‘แƒšแƒ”แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ”แƒ แƒ—แƒ›แƒแƒœแƒ”แƒ—แƒ—แƒแƒœ แƒ˜แƒงแƒแƒก แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜, แƒ”แƒ แƒ—แƒ˜ แƒฅแƒ›แƒœแƒ˜แƒก แƒจแƒ”แƒ“แƒ’แƒ”แƒœแƒ˜แƒš แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒก, แƒฎแƒแƒšแƒ แƒ›แƒ”แƒแƒ แƒ” แƒ›แƒแƒกแƒžแƒ˜แƒœแƒซแƒšแƒแƒ‘แƒก แƒแƒ› แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒก แƒชแƒแƒšแƒ™แƒ”แƒฃแƒš แƒกแƒฃแƒ แƒแƒ—แƒจแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒแƒ› แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ˜แƒก แƒ’แƒแƒกแƒแƒจแƒ•แƒ”แƒ‘แƒแƒ“.

แƒกแƒฎแƒ•แƒ แƒกแƒ˜แƒขแƒงแƒ•แƒ”แƒ‘แƒ˜แƒ— แƒ แƒแƒ› แƒ•แƒ—แƒฅแƒ•แƒแƒ—, แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ— Web App Builder-แƒ˜แƒก แƒกแƒฃแƒ แƒแƒ—แƒ˜ แƒฉแƒ•แƒ”แƒœแƒ˜ build-แƒ˜แƒก แƒ’แƒแƒกแƒแƒจแƒ•แƒ”แƒ‘แƒแƒ“ แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ•แƒ”แƒ‘ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒฃแƒ แƒแƒ—แƒ˜, แƒ˜แƒ’แƒ˜แƒ•แƒ” NGINX, แƒฉแƒ•แƒ”แƒœแƒ˜ แƒจแƒ˜แƒœแƒแƒแƒ แƒกแƒ˜แƒก แƒ›แƒแƒกแƒแƒ›แƒกแƒแƒฎแƒฃแƒ แƒ”แƒ‘แƒšแƒแƒ“.

แƒแƒ›แƒ แƒ˜แƒ’แƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ— Web App Builder แƒกแƒฃแƒ แƒแƒ—แƒ˜, แƒ แƒแƒ’แƒแƒ แƒช โ€žแƒกแƒฃแƒคแƒ—แƒโ€œ แƒ›แƒจแƒ”แƒœแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ“แƒ แƒแƒ›แƒแƒ•แƒ” แƒ“แƒ แƒแƒก แƒ’แƒ•แƒฅแƒแƒœแƒ“แƒ”แƒก แƒ›แƒชแƒ˜แƒ แƒ” แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒกแƒฃแƒ แƒแƒ—แƒ˜.

แƒแƒฎแƒšแƒ แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒฎแƒ”แƒ“แƒแƒ— แƒแƒ›แƒแƒก แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒšแƒ˜ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜แƒ—.

แƒขแƒ แƒ”แƒœแƒ˜แƒœแƒ’แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ React แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ, แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒšแƒ˜แƒ 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 แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒก. แƒฉแƒ•แƒ”แƒœแƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒจแƒ˜ React แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒกแƒแƒœแƒ”แƒ แƒ•แƒ˜แƒฃแƒšแƒ แƒแƒ แƒแƒคแƒ”แƒ แƒ˜แƒ, แƒ แƒแƒ“แƒ’แƒแƒœ React แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ• แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒแƒก, แƒ แƒแƒ’แƒแƒ แƒช แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ”, แƒ›แƒแƒ’แƒ แƒแƒ› 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'

แƒ’แƒแƒ“แƒแƒฎแƒ”แƒ“แƒ”แƒ— แƒ›แƒ”แƒกแƒแƒ›แƒ” แƒ“แƒ แƒ›แƒ”แƒแƒ—แƒฎแƒ” แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒก. แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒแƒ แƒ˜แƒ•แƒ” แƒ’แƒแƒœแƒ˜แƒกแƒแƒ–แƒฆแƒ•แƒ แƒ”แƒ‘แƒ, แƒ แƒแƒ’แƒแƒ แƒช Docker แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ—แƒฅแƒ•แƒ”แƒœ แƒœแƒแƒ—แƒšแƒแƒ“ แƒฎแƒ”แƒ“แƒแƒ•แƒ—, แƒกแƒแƒ˜แƒ“แƒแƒœ แƒ›แƒแƒ“แƒ˜แƒก แƒ˜แƒกแƒ˜แƒœแƒ˜.

แƒ›แƒ”แƒกแƒแƒ›แƒ” แƒกแƒฃแƒ แƒแƒ—แƒ˜ แƒแƒ แƒ˜แƒก web-app-builder แƒ“แƒ แƒ˜แƒก แƒ›แƒแƒ“แƒ˜แƒก 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.

แƒ“แƒแƒ‘แƒœแƒ”แƒฃแƒšแƒ˜? แƒแƒฎแƒšแƒ แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒฎแƒ”แƒ“แƒแƒ— build-แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒก แƒ“แƒ แƒชแƒแƒขแƒ แƒฃแƒคแƒ แƒ แƒœแƒแƒ—แƒ”แƒšแƒ˜ แƒ’แƒแƒฎแƒ“แƒ”แƒ‘แƒ.

แƒฉแƒ•แƒ”แƒœแƒก แƒจแƒแƒ‘แƒšแƒแƒœแƒก แƒแƒฅแƒ•แƒก แƒแƒ แƒ˜ build แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ. แƒแƒฅ แƒแƒ แƒ˜แƒก แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ“แƒ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒšแƒ˜แƒ:

  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-แƒšแƒ˜ แƒ”แƒขแƒ˜แƒ™แƒ”แƒขแƒ˜แƒก แƒฎแƒแƒ–แƒ˜ แƒแƒ›แƒ‘แƒแƒ‘แƒก, แƒ แƒแƒ› แƒแƒ› แƒ™แƒแƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜ แƒ’แƒแƒœแƒ—แƒแƒ•แƒกแƒ“แƒ”แƒ‘แƒ แƒ˜แƒ›แƒแƒ•แƒ” react-web-app-builder แƒกแƒฃแƒ แƒแƒ—แƒ–แƒ”, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒชแƒแƒขแƒ แƒแƒ“แƒ แƒ” แƒ•แƒœแƒแƒฎแƒ”แƒ— ImageStreams แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒแƒจแƒ˜.

แƒฎแƒแƒ–แƒ˜, แƒกแƒแƒฎแƒ”แƒšแƒฌแƒแƒ“แƒ”แƒ‘แƒ˜แƒ— 2, แƒ’แƒ”แƒขแƒงแƒ•แƒ˜แƒ—, แƒกแƒแƒ˜แƒ“แƒแƒœ แƒ›แƒ˜แƒ˜แƒฆแƒแƒ— แƒ™แƒแƒ“แƒ˜. แƒฉแƒ•แƒ”แƒœแƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ”แƒก แƒแƒ แƒ˜แƒก git แƒกแƒแƒชแƒแƒ•แƒ˜ แƒ“แƒ แƒ›แƒ“แƒ”แƒ‘แƒแƒ แƒ”แƒแƒ‘แƒ, ref แƒ“แƒ แƒ™แƒแƒœแƒขแƒ”แƒฅแƒกแƒขแƒฃแƒ แƒ˜ แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ” แƒ’แƒแƒœแƒ˜แƒกแƒแƒ–แƒฆแƒ•แƒ แƒ”แƒ‘แƒ แƒ˜แƒ› แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒฃแƒ™แƒ•แƒ” แƒ•แƒœแƒแƒฎแƒ”แƒ— แƒ–แƒ”แƒ›แƒแƒ—.

3-แƒ˜แƒแƒœแƒ˜ แƒฎแƒแƒ–แƒ˜ แƒแƒ แƒ˜แƒก แƒ˜แƒก, แƒ แƒแƒช แƒฃแƒ™แƒ•แƒ” แƒ•แƒœแƒแƒฎแƒ”แƒ— แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒแƒจแƒ˜. แƒ˜แƒก แƒแƒ›แƒแƒขแƒ”แƒ‘แƒก OUTPUT_DIR แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒชแƒ•แƒšแƒแƒ“แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฉแƒ•แƒ”แƒœแƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒจแƒ˜ แƒแƒ แƒ˜แƒก build.
แƒฎแƒแƒ–แƒ˜, แƒกแƒแƒฎแƒ”แƒšแƒฌแƒแƒ“แƒ”แƒ‘แƒ˜แƒ— 4, แƒแƒ›แƒ‘แƒแƒ‘แƒก, แƒ แƒแƒ› แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒก แƒ•แƒ”แƒ‘-แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒ›แƒฅแƒ›แƒœแƒ”แƒšแƒ˜-แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒกแƒฃแƒ แƒแƒ—แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฃแƒ™แƒ•แƒ” แƒ•แƒœแƒแƒฎแƒ”แƒ— ImageStream แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒแƒจแƒ˜.

แƒ›แƒ”-5 แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒจแƒ˜ แƒœแƒแƒ—แƒฅแƒ•แƒแƒ›แƒ˜แƒ, แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒ˜แƒœแƒ“แƒ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒ™แƒแƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ, แƒ—แƒฃ S2I แƒ’แƒแƒ›แƒแƒกแƒแƒฎแƒฃแƒšแƒ”แƒ‘แƒ แƒ›แƒฎแƒแƒ แƒก แƒฃแƒญแƒ”แƒ แƒก แƒ›แƒแƒก แƒ“แƒ Web App Builder-แƒ˜แƒก แƒกแƒฃแƒ แƒแƒ—แƒก. แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒกแƒแƒก, แƒแƒกแƒแƒ›แƒ‘แƒšแƒ”แƒ˜แƒก แƒ”แƒขแƒแƒžแƒ˜แƒก แƒ“แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒกแƒฃแƒ แƒแƒ—แƒ˜ แƒจแƒ”แƒ˜แƒœแƒแƒฎแƒแƒ•แƒก 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

แƒแƒกแƒ” แƒ แƒแƒ›, แƒ›แƒ”แƒแƒ แƒ” build แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒแƒ แƒ˜แƒก react-web-app-runtime แƒ“แƒ แƒ˜แƒก แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒšแƒแƒ“ แƒ˜แƒฌแƒงแƒ”แƒ‘แƒ.

แƒฎแƒแƒ–แƒ˜, แƒกแƒแƒฎแƒ”แƒšแƒฌแƒแƒ“แƒ”แƒ‘แƒ˜แƒ— 1, แƒแƒฎแƒแƒšแƒ˜ แƒแƒ แƒแƒคแƒ”แƒ แƒ˜แƒ - แƒ˜แƒก แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒแƒ›แƒ‘แƒแƒ‘แƒก, แƒ แƒแƒ› build-แƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜ แƒ›แƒแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ react-web-app-runtime แƒกแƒฃแƒ แƒแƒ—แƒจแƒ˜.

แƒฎแƒแƒ–แƒ˜ แƒฌแƒแƒ แƒฌแƒ”แƒ แƒ˜แƒ— 2, แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ˜แƒœแƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒจแƒ˜, แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ‘แƒก แƒกแƒแƒ˜แƒ“แƒแƒœ แƒฃแƒœแƒ“แƒ แƒ›แƒ˜แƒ˜แƒฆแƒแƒ— แƒฌแƒงแƒแƒ แƒแƒก แƒ™แƒแƒ“แƒ˜. แƒ›แƒแƒ’แƒ แƒแƒ› แƒงแƒฃแƒ แƒแƒ“แƒฆแƒ”แƒ‘แƒ แƒ›แƒ˜แƒแƒฅแƒชแƒ˜แƒ”แƒ—, แƒ แƒแƒ› แƒแƒฅ แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ›แƒ‘แƒแƒ‘แƒ—, แƒ แƒแƒ› แƒ”แƒก แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒ“แƒแƒœ แƒแƒ แƒ˜แƒก แƒแƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜. แƒฃแƒคแƒ แƒ แƒ›แƒ”แƒขแƒ˜แƒช, แƒ˜แƒ› แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒ“แƒแƒœ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฉแƒ•แƒ”แƒœ แƒแƒฎแƒšแƒแƒฎแƒแƒœ แƒจแƒ”แƒ•แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— - react-web-app-builder-แƒ˜แƒกแƒ’แƒแƒœ (แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ 3-แƒ˜แƒก แƒฎแƒแƒ–แƒจแƒ˜). แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ’แƒ•แƒ˜แƒœแƒ“แƒ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ—, แƒแƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒกแƒแƒฎแƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ˜แƒ’แƒœแƒ˜แƒ— แƒ“แƒ แƒ›แƒแƒ—แƒ˜ แƒ›แƒ“แƒ”แƒ‘แƒแƒ แƒ”แƒแƒ‘แƒ แƒ˜แƒฅ แƒแƒ แƒ˜แƒก แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜ 4-แƒ˜แƒ—, แƒฉแƒ•แƒ”แƒœแƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒ”แƒก แƒแƒ แƒ˜แƒก /opt/app-root/output/. แƒ—แƒฃ แƒ’แƒแƒฎแƒกแƒแƒ•แƒ—, แƒกแƒฌแƒแƒ แƒ”แƒ“ แƒแƒฅ แƒ˜แƒœแƒแƒฎแƒ”แƒ‘แƒ แƒฉแƒ•แƒ”แƒœแƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒคแƒฃแƒซแƒ•แƒ”แƒšแƒ–แƒ” แƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜.

แƒ“แƒแƒœแƒ˜แƒจแƒœแƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ”, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒขแƒ”แƒ แƒ›แƒ˜แƒœแƒจแƒ˜ แƒ”แƒขแƒ˜แƒ™แƒ”แƒขแƒ˜แƒ— 5, แƒแƒ แƒ˜แƒก แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ” แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒ (แƒ”แƒก แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜, แƒ’แƒแƒฎแƒกแƒแƒ•แƒ“แƒ”แƒ—, แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ แƒแƒฆแƒแƒช แƒฏแƒแƒ“แƒแƒกแƒœแƒฃแƒ  แƒœแƒ˜แƒ•แƒ—แƒจแƒ˜, แƒกแƒแƒฎแƒ”แƒšแƒฌแƒแƒ“แƒ”แƒ‘แƒ˜แƒ— OpenShift, แƒ“แƒ แƒแƒ แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ• แƒ™แƒแƒ›แƒžแƒ˜แƒฃแƒขแƒ”แƒ แƒ–แƒ”).

แƒกแƒขแƒ แƒแƒขแƒ”แƒ’แƒ˜แƒ˜แƒก แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒ - แƒฎแƒแƒ–แƒ˜ 6-แƒ˜แƒ— - แƒแƒกแƒ”แƒ•แƒ” แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜แƒ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ build แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก. แƒ›แƒฎแƒแƒšแƒแƒ“ แƒแƒ›แƒฏแƒ”แƒ แƒแƒ“ แƒ•แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒ— แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ— nginx-image-runtime, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฃแƒ™แƒ•แƒ” แƒ•แƒœแƒแƒฎแƒ”แƒ— ImageStream แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒแƒจแƒ˜.

แƒ“แƒแƒ‘แƒแƒšแƒแƒก, แƒฎแƒแƒ–แƒ˜, แƒกแƒแƒฎแƒ”แƒšแƒฌแƒแƒ“แƒ”แƒ‘แƒ˜แƒ— 7, แƒแƒ แƒ˜แƒก แƒขแƒ แƒ˜แƒ’แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒแƒฅแƒขแƒ˜แƒฃแƒ แƒ”แƒ‘แƒก แƒแƒ› build-แƒก แƒงแƒแƒ•แƒ”แƒš แƒฏแƒ”แƒ แƒ–แƒ”, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ˜แƒชแƒ•แƒšแƒ”แƒ‘แƒ react-web-app-builder แƒกแƒฃแƒ แƒแƒ—แƒ˜.

แƒฌแƒ˜แƒœแƒแƒแƒฆแƒ›แƒ“แƒ”แƒ’ แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ”แƒก แƒจแƒแƒ‘แƒšแƒแƒœแƒ˜ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒšแƒ˜ แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒก, แƒ˜แƒกแƒ”แƒ•แƒ” แƒ แƒแƒ’แƒแƒ แƒช แƒ›แƒแƒ›แƒกแƒแƒฎแƒฃแƒ แƒ”แƒ‘แƒ”แƒ‘แƒก แƒ“แƒ แƒ›แƒแƒ แƒจแƒ แƒฃแƒขแƒ”แƒ‘แƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒแƒ› แƒ–แƒ”แƒ“แƒ›แƒ”แƒข แƒ“แƒ”แƒขแƒแƒšแƒ”แƒ‘แƒก แƒแƒ  แƒจแƒ”แƒ•แƒ”แƒฎแƒ”แƒ‘แƒ˜แƒ—. แƒ’แƒ—แƒฎแƒแƒ•แƒ— แƒ’แƒแƒ˜แƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒแƒ—, แƒ แƒแƒ› แƒ’แƒแƒ›แƒแƒกแƒแƒฎแƒฃแƒšแƒ”แƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒœแƒšแƒแƒ’แƒ“แƒ”แƒ‘แƒ แƒแƒ แƒ˜แƒก react-web-app-runtime แƒกแƒฃแƒ แƒแƒ—แƒ˜.

แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ

แƒแƒฎแƒšแƒ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ“แƒแƒ•แƒฎแƒ”แƒ“แƒ”แƒ— แƒจแƒแƒ‘แƒšแƒแƒœแƒก, แƒ•แƒœแƒแƒฎแƒแƒ—, แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ˜แƒ’แƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒœแƒกแƒแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒšแƒแƒ“.

แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ— OpenShift แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ˜, แƒกแƒแƒฎแƒ”แƒšแƒฌแƒแƒ“แƒ”แƒ‘แƒ˜แƒ— oc แƒฉแƒ•แƒ”แƒœแƒ˜ แƒจแƒแƒ‘แƒšแƒแƒœแƒ˜แƒก แƒ’แƒแƒ›แƒแƒกแƒแƒงแƒ”แƒœแƒ”แƒ‘แƒšแƒแƒ“:

$ 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: แƒฏแƒแƒญแƒ•แƒฃแƒ แƒ˜ แƒ™แƒแƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜

แƒ“แƒแƒแƒฌแƒ™แƒแƒžแƒฃแƒœแƒ”แƒ— แƒ‘แƒ›แƒฃแƒšแƒ–แƒ” แƒ“แƒ แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ“แƒแƒ•แƒ˜แƒงแƒ•แƒแƒœแƒ— แƒฉแƒ•แƒ”แƒœแƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒแƒจแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ แƒ˜แƒก แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜ React App แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜:

แƒ—แƒแƒœแƒแƒ›แƒ”แƒ“แƒ แƒแƒ•แƒ” แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ OpenShift-แƒ–แƒ”, แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 2: แƒฏแƒแƒญแƒ•แƒฃแƒ แƒ˜ แƒ™แƒแƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜

แƒ“แƒแƒœแƒแƒ›แƒแƒขแƒ˜ 1 แƒฌ

Angular-แƒ˜แƒก แƒ›แƒแƒงแƒ•แƒแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒกแƒแƒช แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒ’แƒแƒœแƒแƒชแƒฎแƒแƒ“แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜.

แƒœแƒ˜แƒ›แƒฃแƒจแƒ˜ แƒแƒฅแƒแƒช แƒ˜แƒ’แƒ˜แƒ•แƒ”แƒ, แƒ’แƒแƒ แƒ“แƒ OUTPUT_DIR แƒชแƒ•แƒšแƒแƒ“แƒ˜แƒกแƒ.

แƒ“แƒแƒœแƒแƒ›แƒแƒขแƒ˜ 2 แƒฌ

แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ— NGINX, แƒ แƒแƒ’แƒแƒ แƒช แƒ•แƒ”แƒ‘ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒ˜แƒกแƒ˜ แƒฉแƒแƒœแƒแƒชแƒ•แƒšแƒ”แƒ‘แƒ Apache-แƒ˜แƒ— แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ, แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒจแƒ”แƒชแƒ•แƒแƒšแƒ”แƒ— แƒจแƒแƒ‘แƒšแƒแƒœแƒ˜ แƒคแƒแƒ˜แƒšแƒจแƒ˜ NGINX แƒกแƒฃแƒ แƒแƒ—แƒ˜ on แƒแƒžแƒแƒฉแƒ˜แƒก แƒกแƒฃแƒ แƒแƒ—แƒ˜.

แƒ“แƒแƒกแƒ™แƒ•แƒœแƒ

แƒแƒ› แƒกแƒ”แƒ แƒ˜แƒ˜แƒก แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒœแƒแƒฌแƒ˜แƒšแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ—, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒ’แƒแƒœแƒ•แƒแƒ—แƒแƒ•แƒกแƒแƒ— แƒ—แƒแƒœแƒแƒ›แƒ”แƒ“แƒ แƒแƒ•แƒ” แƒ•แƒ”แƒ‘ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ OpenShift แƒžแƒšแƒแƒขแƒคแƒแƒ แƒ›แƒแƒ–แƒ”. แƒ“แƒฆแƒ”แƒก แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒฎแƒ”แƒ“แƒ”แƒ— แƒ แƒแƒก แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒก แƒ•แƒ”แƒ‘ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒกแƒฃแƒ แƒแƒ—แƒ˜ แƒ“แƒ แƒ แƒแƒ’แƒแƒ  แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ›แƒ˜แƒกแƒ˜ แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ แƒกแƒฃแƒคแƒ—แƒ แƒ•แƒ”แƒ‘ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ—แƒแƒœ, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ NGINX, แƒฏแƒแƒญแƒ•แƒฃแƒ แƒ˜ แƒ™แƒแƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒฃแƒคแƒ แƒ แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ›แƒ–แƒ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฅแƒ›แƒœแƒ”แƒšแƒแƒ“. แƒแƒ› แƒกแƒ”แƒ แƒ˜แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ“แƒ แƒ‘แƒแƒšแƒ แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ—, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ’แƒแƒฃแƒจแƒ•แƒแƒ— แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก OpenShift-แƒ–แƒ” แƒ“แƒ แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒ•แƒงแƒแƒ— แƒšแƒแƒ™แƒแƒšแƒฃแƒ แƒ˜ แƒ“แƒ แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ แƒ˜ แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒœแƒฅแƒ แƒแƒœแƒ˜แƒ–แƒแƒชแƒ˜แƒ.

แƒกแƒขแƒแƒขแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒแƒ› แƒกแƒ”แƒ แƒ˜แƒ˜แƒก แƒจแƒ˜แƒœแƒแƒแƒ แƒกแƒ˜

  • แƒœแƒแƒฌแƒ˜แƒšแƒ˜ X: แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒœแƒแƒ—แƒแƒ•แƒกแƒแƒ— แƒ—แƒแƒœแƒแƒ›แƒ”แƒ“แƒ แƒแƒ•แƒ” แƒ•แƒ”แƒ‘ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜แƒ—;
  • แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 2: แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ— แƒแƒฎแƒแƒšแƒ˜ S2I แƒกแƒฃแƒ แƒแƒ—แƒ˜ แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜ HTTP แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ˜แƒ›แƒ˜แƒฏแƒ˜แƒ—, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ NGINX, แƒแƒกแƒแƒชแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ OpenShift แƒแƒกแƒแƒ›แƒ‘แƒšแƒ”แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒกแƒแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒšแƒแƒ“;
  • แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 3: แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒฃแƒจแƒ•แƒแƒ— แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก OpenShift แƒžแƒšแƒแƒขแƒคแƒแƒ แƒ›แƒแƒ–แƒ” แƒ“แƒ แƒกแƒ˜แƒœแƒฅแƒ แƒแƒœแƒ˜แƒ–แƒแƒชแƒ˜แƒ แƒ›แƒแƒแƒฎแƒ“แƒ˜แƒœแƒแƒก แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ• แƒคแƒแƒ˜แƒšแƒฃแƒ  แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒแƒกแƒ—แƒแƒœ.

แฒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒ˜

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ