Nyob zoo sawv daws! Qhov no yog qhov thib ob tshaj tawm hauv peb cov series uas peb qhia yuav ua li cas xa cov ntawv thov web niaj hnub ntawm Red Hat OpenShift.
Hauv cov ntawv tshaj tawm dhau los, peb tau kov me ntsis ntawm lub peev xwm ntawm S2I tshiab (qhov chaw-rau-daim duab) tsim cov duab, uas yog tsim los tsim thiab siv lub vev xaib niaj hnub siv ntawm OpenShift platform. Tom qab ntawd peb tau xav txog lub ntsiab lus ntawm kev xa daim ntawv thov sai sai, thiab hnub no peb yuav saib yuav ua li cas siv cov duab S2I ua "dawb huv" cov duab tsim thiab muab sib xyaw nrog OpenShift cov rooj sib tham.
Cleaner duab
Raws li peb tau hais hauv Tshooj XNUMX, feem ntau cov ntawv thov web niaj hnub muaj qhov hu ua theem tsim, uas feem ntau ua haujlwm xws li kev hloov pauv code, ntau cov ntaub ntawv sib txuas, thiab minification. Cov ntaub ntawv tau txais los ntawm cov haujlwm no - thiab qhov no yog qhov zoo li HTML, JavaScript thiab CSS - khaws cia rau hauv cov ntawv tso tawm. Qhov chaw ntawm daim nplaub tshev no feem ntau yog nyob ntawm seb cov cuab yeej tsim tau siv li cas, thiab rau React qhov no yuav yog ./build folder (peb yuav rov qab los rau qhov kev nthuav dav ntxiv hauv qab no).
Source-to-Image (S2I)
Hauv tsab xov xwm no peb tsis txhob kov lub ntsiab lus "S2I yog dab tsi thiab yuav siv nws li cas" (koj tuaj yeem nyeem ntxiv txog qhov no no), tab sis nws yog ib qho tseem ceeb kom paub meej txog ob kauj ruam hauv cov txheej txheem no kom nkag siab tias Web App Builder duab ua li cas.
Nyob rau hauv rooj plaub ntawm Web App Builder duab, nws yog lub luag haujlwm rau kev txhim kho koj daim ntawv thov kev vam khom thiab khiav qhov tsim. sau ntawv. Los ntawm lub neej ntawd, cov duab tsim siv npm khiav tsim tsim, tab sis qhov no tuaj yeem hla dhau los ntawm NPM_BUILD ib puag ncig hloov pauv.
Raws li peb tau hais ua ntej, qhov chaw ntawm qhov ua tiav, twb tau tsim daim ntawv thov nyob ntawm seb koj siv cov cuab yeej twg. Piv txwv li, nyob rau hauv rooj plaub ntawm React qhov no yuav yog ./build folder, thiab rau Angular daim ntawv thov nws yuav yog qhov project_name/dist folder. Thiab, raws li twb tau qhia nyob rau hauv tsab xov xwm dhau los, qhov chaw ntawm cov ntaub ntawv tso tawm, uas tau teeb tsa los ntawm lub neej ntawd, tuaj yeem hla dhau los ntawm OUTPUT_DIR ib puag ncig hloov pauv. Zoo, txij li qhov chaw ntawm cov zis nplaub tshev txawv ntawm lub moj khaum mus rau lub moj khaum, koj tsuas yog luam tawm cov khoom tsim tawm mus rau tus qauv nplaub tshev hauv daim duab, uas yog /opt/apt-root/output. Qhov no yog qhov tseem ceeb rau kev nkag siab txog qhov seem ntawm tsab xov xwm no, tab sis tam sim no cia saib sai sai rau theem tom ntej - theem khiav.
khiav theem
Cov theem no tshwm sim thaum hu rau docker khiav yog ua rau ntawm cov duab tshiab tsim thaum lub sij hawm sib dhos. Tib yam tshwm sim thaum xa tawm ntawm OpenShift platform. Default khiav tsab ntawv siv pab module los pab cov ntsiab lus zoo li qub nyob rau hauv cov txheej txheem tso zis saum toj no.
Txoj kev no yog qhov zoo rau kev siv cov ntawv thov sai sai, tab sis feem ntau nws tsis pom zoo los ua cov ntsiab lus zoo li no. Zoo, txij li qhov tseeb peb tsuas yog ua haujlwm zoo li qub, peb tsis xav tau Node.js ntsia hauv peb cov duab - lub vev xaib server yuav txaus.
Hauv lwm lo lus, thaum sib sau peb xav tau ib yam, thaum ua tiav peb xav tau lwm yam. Hauv qhov xwm txheej no, chained tsim los ua ke.
chained tsim
Nov yog qhov lawv sau txog chained tsim hauv cov ntaub ntawv OpenShift:
"Ob lub rooj sib txoos tuaj yeem txuas ua ke, nrog rau ib qho tsim ib lub koom haum muab tso ua ke thiab lwm qhov hosting qhov chaw nyob rau hauv ib daim duab cais uas siv los khiav qhov chaw."
Hauv lwm lo lus, peb tuaj yeem siv Web App Builder duab los khiav peb cov tsim, thiab tom qab ntawd siv lub web server duab, tib NGINX, los pab peb cov ntsiab lus.
Yog li, peb tuaj yeem siv Web App Builder duab ua "ntshiab" tsim thiab tib lub sijhawm muaj cov duab me me.
Tam sim no cia saib qhov no nrog ib qho piv txwv tshwj xeeb.
Cia peb saib cov ntaub ntawv no kom ntxaws ntxiv, thiab pib nrog cov ntu ntu.
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
Txhua yam ntawm no yog qhov tseeb zoo nkauj, tab sis nws tsim nyog them nqi rau OUTPUT_DIR parameter. Rau daim ntawv thov React hauv peb qhov piv txwv, tsis muaj dab tsi yuav txhawj txog, txij li React siv tus nqi qub raws li cov ntawv tso tawm, tab sis nyob rau hauv rooj plaub ntawm Angular lossis lwm yam, qhov ntsuas no yuav tsum tau hloov pauv raws li qhov tsim nyog.
Tam sim no cia saib thawj ob daim duab. Lawv yog ob qho tib si khoob thaum pib thiab tsuas yog tsim thaum lub sijhawm tsim. Thawj daim duab, react-web-app-builder, yuav yog qhov tshwm sim ntawm cov kauj ruam sib dhos uas yuav muab cov duab web-app-builder-runtime thiab peb qhov chaws. Yog vim li cas peb ntxiv "-builder" rau lub npe ntawm daim duab no.
Daim duab thib ob - react-web-app-runtime - yuav yog qhov tshwm sim ntawm kev sib txuas nginx-image-runtime thiab qee cov ntaub ntawv los ntawm cov duab react-web-app-builder. Cov duab no tseem yuav raug siv thaum lub sijhawm xa mus thiab tsuas yog muaj lub vev xaib server thiab zoo li HTML, JavaScript, CSS ntawm peb daim ntawv thov.
Tsis meej pem? Tam sim no cia peb saib cov kev tsim kho thiab nws yuav dhau los ua kom pom me ntsis.
Peb cov template muaj ob lub configurations. Nov yog thawj tus, thiab nws yog tus qauv zoo nkauj:
Yog li qhov thib ob tsim configuration yog react-web-app-runtime, thiab nws pib tawm tus qauv zoo nkauj.
Cov kab ntawv sau npe 1 tsis muaj dab tsi tshiab - nws tsuas yog hais tias cov txiaj ntsig tsim tau muab tso rau hauv cov duab react-web-app-runtime.
Cov kab ntawv sau npe 2, raws li nyob rau hauv kev teeb tsa yav dhau los, qhia qhov twg kom tau txais qhov chaws los ntawm. Tab sis nco ntsoov tias ntawm no peb tab tom hais tias nws yog coj los ntawm daim duab. Ntxiv mus, los ntawm cov duab uas peb nyuam qhuav tsim - los ntawm react-web-app-builder (qhia hauv kab sau npe 3). Cov ntaub ntawv peb xav siv yog nyob rau hauv daim duab thiab lawv qhov chaw nyob rau hauv kab ntawv sau npe 4, nyob rau hauv peb cov ntaub ntawv nws yog /opt/app-root/output/. Yog tias koj nco qab, qhov no yog qhov uas cov ntaub ntawv tsim tawm raws li cov txiaj ntsig ntawm kev tsim peb daim ntawv thov raug khaws cia.
Cov ntaub ntawv lo lus uas tau teev tseg hauv lo lus nrog daim ntawv lo 5 tsuas yog daim ntawv teev npe tam sim no (qhov no yog tag nrho, nco ntsoov, khiav hauv qee yam khoom siv yees siv hu ua OpenShift, thiab tsis nyob hauv koj lub computer hauv zos).
Tshooj tswv yim - kab sau npe 6 - kuj zoo ib yam li thawj qhov kev teeb tsa. Tsuas yog lub sijhawm no peb yuav siv nginx-image-runtime, uas peb twb pom hauv ntu ImageStream.
Hauv tsab xov xwm no peb siv NGINX ua lub vev xaib server, tab sis nws yooj yim heev los hloov nws nrog Apache, tsuas yog hloov cov qauv hauv cov ntaub ntawv. NGINX duab rau Apache duab.
xaus
Hauv thawj ntu ntawm cov koob no, peb tau qhia yuav ua li cas sai sai xa cov ntawv thov web niaj hnub ntawm OpenShift platform. Niaj hnub no peb saib qhov Web App duab ua li cas thiab yuav ua li cas nws tuaj yeem ua ke nrog lub vev xaib dawb huv zoo li NGINX siv cov chained tsim los tsim ntau cov ntawv thov tsim. Nyob rau hauv tsab xov xwm tom ntej thiab zaum kawg hauv cov koob no, peb yuav qhia yuav ua li cas khiav lub server txhim kho rau koj daim ntawv thov ntawm OpenShift thiab xyuas kom muaj kev sib koom ua ke ntawm cov ntaub ntawv hauv zos thiab cov chaw taws teeb.