Nga tono hou mo OpenShift, wahanga 2: hanga mekameka
Kia ora katoa! Koinei te pou tuarua i roto i ta maatau raupapa e whakaatu ana me pehea te tuku tono tukutuku hou i runga i te Red Hat OpenShift.
I roto i te pou o mua, i pa atu matou ki nga kaha o te ahua hou o te S2I (puna-ki-ahua) i hangaia mo te hanga me te whakamahi i nga tono tukutuku hou i runga i te papaaho OpenShift. Na ka aro atu matou ki te kaupapa o te tuku tere i tetahi tono, a i tenei ra ka tirohia me pehea te whakamahi i te ahua S2I hei ahua hanga "parakore" me te whakakotahi me nga huihuinga OpenShift e pa ana.
Atahanga hanga ma
I korerohia e matou i te Wāhanga XNUMX, ko te nuinga o nga tono tukutuku hou he waahi e kiia nei ko te hanga, e mahi ana i nga mahi penei i te whakawhiti waehere, te whakakotahi i nga konae maha, me te whakaiti. Ko nga konae i puta mai i enei mahi - he HTML pateko tenei, JavaScript me CSS - ka rongoa ki te kōpaki putanga. Ko te waahi o tenei kōpaki ka whakawhirinaki ki nga taputapu hanga e whakamahia ana, a, mo React ko te kōpaki ./build tenei (ka hoki mai ano ki tenei korero i raro nei).
Puna-ki-Whakaahua (S2I)
I tenei pou kaore matou e pa ki te kaupapa "he aha te S2I me pehea te whakamahi" (ka taea e koe te panui atu mo tenei konei), engari he mea nui kia marama mo nga kaupae e rua i roto i tenei mahi kia mohio ai koe he aha te ahua o te Kaihanga Taupānga Tukutuku.
Wāhanga Huihuinga
He rite tonu te ahua o te wahanga huihuinga ki nga mea e pa ana ina whakahaere koe i te hanga docker ka mutu ki tetahi ahua Docker hou. No reira, ka puta tenei waahanga i te tiimata o te hanga i runga i te papaaho OpenShift.
Mo te ahua o te Kaihanga Taupānga Tukutuku, kei a ia te kawenga mo te whakauru i nga whakawhirinakitanga o to tono me te whakahaere i te hanga. whakaemi tuhinga. Ma te taunoa, ka whakamahi te ahua hangahanga i te hangahanga hanga npm run, engari ka taea te whakakore i tenei ma te taurangi taiao NPM_BUILD.
Ka rite ki ta matou korero i mua, ko te waahi o te tono kua oti, kua oti te hanga i runga i nga taputapu e whakamahia ana e koe. Hei tauira, mo te React ko te kōpaki ./build tenei, mo nga tono Angular ko te kaupapa_name/dist folder. Na, kua whakaatuhia i roto i te pou o mua, ko te waahi o te whaiaronga whakaputa, kua tautuhia ki te hanga ma te taunoa, ka taea te whakakore i roto i te taurangi taiao OUTPUT_DIR. Ana, i te mea he rereke te waahi o te kōpaki putanga mai i te anga ki tera anga, ka kape noa koe i te putanga i hangaia ki te kōpaki paerewa o te ahua, ara / opt/apt-root/output. He mea nui tenei mo te maarama ki te toenga o tenei tuhinga, engari mo tenei wa ka titiro wawe ki te waahanga e whai ake nei - te wahanga oma.
wahanga oma
Ka puta tenei wahanga ka puta he waea ki te oma docker ki runga i te ahua hou i hangaia i te wahanga huihuinga. Ka pera ano i te wa e tukuna ana i runga i te papaaho OpenShift. Taunoa rere hōtuhi whakamahinga mahi kōwae ki te mahi i nga ihirangi pateko kei roto i te raarangi putanga paerewa o runga ake nei.
He pai tenei tikanga mo te tuku tere i nga tono, engari ko te tikanga karekau i te tūtohu kia tukuna nga ihirangi pateko penei. Ae, i te mea ka mahi noa matou i nga ihirangi pateko, kaore matou e hiahia kia whakauruhia a Node.js ki roto i to maatau ahua - ka rato te tūmau tukutuku.
I etahi atu kupu, i te wa e huihui ana ka hiahia tetahi mea, i te wa e mahia ana ka hiahia tetahi atu. I tenei ahuatanga, ka uru mai nga hanga mekameka.
Hanga mekameka
Koinei ta ratou e tuhi ana hanga mekameka i roto i te tuhinga OpenShift:
"E rua nga huihuinga ka taea te hono tahi, me te whakaputa i tetahi hinonga whakahiato me tetahi atu e manaaki ana i taua hinonga ki tetahi ahua motuhake e whakamahia ana hei whakahaere i taua hinonga."
I etahi atu kupu, ka taea e tatou te whakamahi i te ahua o te Kaihanga Tukutuku Tukutuku hei whakahaere i ta tatou hanga, katahi ka whakamahi i te ahua o te tūmau tukutuku, te NGINX ano, ki te mahi i o tatou ihirangi.
Na, ka taea e tatou te whakamahi i te ahua o te Kaihanga Tukutuku Tukutuku hei kaihanga "parakore" me te wa ano he ahua iti o te waa whakahaere.
Inaianei kia tirohia tenei me tetahi tauira motuhake.
Mo te whakangungu ka whakamahia e matou tono React ngawari, i hangaia ma te whakamahi i te hanga-react-app taputapu raina whakahau.
Kia ata tirohia tenei konae, ka tiimata me te waahanga tawhā.
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
Ko nga mea katoa kei konei he tino marama, engari he pai ki te aro ki te tawhā OUTPUT_DIR. Mo te tono React i roto i ta maatau tauira, kaore he mea hei awangawanga, na te mea ka whakamahia e React te uara taunoa hei kōpaki putanga, engari mo te Angular tetahi atu mea ranei, me whakarereke tenei tawhā i te mea e tika ana.
Tirohia nga whakaahua tuatoru me te tuawha. Ko enei e rua kua tautuhia hei whakaahua Docker, a ka tino kitea e koe no hea mai.
Ko te whakaahua tuatoru ko te kaihanga-tukutuku-taupānga-a ka puta mai i te nodeshift/ubi8-s2i-web-app kua tohua 10.x i runga Pupu Docker.
Ko te tuawha he ahua NGINX (putanga 1.12) me te tohu hou kei runga Pupu Docker.
Inaianei ka titiro tatou ki nga whakaahua tuatahi e rua. Kei te noho kau raua i te timatanga, ka hangaia i te wa o te hangahanga. Ko te ahua tuatahi, ko te react-web-app-builder, ko te hua o te huinga huihuinga ka whakakotahi i te ahua tukutuku-app-builder-runtime me to tatou waehere puna. Koia i taapirihia e matou te "-kaihanga" ki te ingoa o tenei ahua.
Ko te ahua tuarua - react-web-app-runtime - ko te hua o te whakakotahi i te nginx-image-runtime me etahi konae mai i te react-web-app-builder image. Ka whakamahia ano tenei ahua i te wa e horahia ana, ka mau anake te tūmau tukutuku me te HTML pateko, JavaScript, CSS o ta maatau tono.
Poauau? Inaianei me titiro ki nga whirihoranga hanga ka marama ake.
E rua nga whirihoranga hanga o ta maatau tauira. Anei te mea tuatahi, he tino paerewa:
Ka taea e koe te kite, ko te raina me te tapanga 1 e kii ana ko te hua o tenei hanga ka tuu ki roto i te ahua react-web-app-builder i kitehia e matou i mua i te waahanga ImageStreams.
Ko te rarangi tapanga 2 e whakaatu ana ki a koe te wahi hei tiki mai i te waehere. I roto i to maatau, he putunga git tenei, a ko te waahi, te ref me te kōpaki horopaki e whakatauhia ana e nga tawhā kua kitea e matou i runga ake nei.
Ko te raina e tapaina ana ko te 3 te mea i kitea e matou i nga waahanga tawhā. Ka taapirihia te taurangi taiao OUTPUT_DIR, kei roto i a maatau tauira te hanga.
Ko te rarangi tapanga 4 e kii ana ki te whakamahi i te ahua o te paetukutuku-app-builder-runtime, kua kitea e matou i te waahanga ImageStream.
Raina tapanga 5 e kii ana kei te pirangi matou ki te whakamahi i te hanga taapiri mena ka tautokohia e te ahua S2I, me te ahua o te Kaihanga Taupānga Tukutuku. I te whakarewatanga tuatahi, i muri i te otinga o te wahanga huihuinga, ka tiakina e te ahua te kōpaki node_modules ki roto i te konae purongo. Na, i nga oma ka whai ake, ka wetewete noa te ahua o tenei kōpaki hei whakaiti i te wa hanga.
Ka mutu, ko te raina e tapaina ana ko te 6 he iti noa nga kaikorero kia rere aunoa te hanga, kaore he wawaotanga a-ringa, ina huri tetahi mea.
I te katoa he whirihoranga hanga paerewa pai tenei.
Inaianei me titiro ki te whirihoranga hanga tuarua. He tino rite ki te tuatahi, engari kotahi ano te rereketanga nui.
Na ko te whirihoranga hanga tuarua ko te react-web-app-runtime, a ka tiimata te tino paerewa.
Ko te raina kua tapaina 1 ehara i te mea hou - e kii ana ka tukuna te hua hanga ki te ahua react-web-app-runtime.
Ko te raina kua tapaina ki te 2, penei i te whirihoranga o mua, e tohu ana i hea ka puta mai te waehere puna. Engari kia mahara kei konei e kii ana i tangohia mai i te ahua. I tua atu, mai i te ahua i hangaia e matou - mai i te react-web-app-builder (kua tohuhia ki te rarangi tapanga 3). Ko nga konae e hiahia ana matou ki te whakamahi kei roto i te ahua me to raatau waahi kei te rarangi tapanga 4, i roto i ta maatau ko /opt/app-root/output/. Mena ka maumahara koe, koinei te waahi ka penapena nga konae i hangaia i runga i nga hua o te hanga i a maatau tono.
Ko te kōpaki ūnga kua tohua i roto i te kupu me te tapanga 5 ko te whaiaronga o naianei (koinei, kia mahara, ka rere ki roto i etahi mea makutu e kiia nei ko OpenShift, kaua ki to rorohiko o to rohe).
Ko te waahanga rautaki - rarangi tapanga 6 - he rite ano ki te whirihoranga hanga tuatahi. Ko tenei wa anake ka whakamahia e matou te nginx-image-runtime, kua kitea e matou i te waahanga ImageStream.
Ka mutu, ko te raina e tapaina ana ko te 7 he wahanga o nga keu ka whakahohe i tenei hanga i nga wa katoa ka huri te ahua o te react-web-app-builder.
Ki te kore, kei roto i tenei tauira te whirihoranga whakatakotoranga paerewa tino pai, me nga mea e pa ana ki nga ratonga me nga huarahi, engari kare matou e uru ki nga korero nui rawa atu. Kia mahara ko te ahua ka tukuna ko te react-web-app-runtime image.
Taupānga Tukunga
Na inaianei kua titiro tatou ki te tauira, me pehea te whakamahi hei whakatakoto tono.
Ka taea e matou te whakamahi i te taputapu kiritaki OpenShift e kiia nei ko oc hei tuku i ta maatau tauira:
Ko te whakahau tuatahi i roto i te Whakaahuamata i runga ake nei he huarahi hangai ki te kimi tauira./openshiftio/application.yaml.
Ko te whakahau tuarua he hanga tono hou i runga i tenei tauira.
Ka mutu enei whakahau, ka kite tatou e rua nga huihuinga:
Na ka hoki ki te mata Tirohanga, ka kite tatou i te putunga kua whakarewahia:
Patohia te hono ka kawea matou ki to maatau taupānga, ko te wharangi React App taunoa:
Tāpiritanga 1
Mo te hunga aroha Angular kei a matou ano tauira tono.
He rite tonu te tauira i konei, haunga te taurangi OUTPUT_DIR.
Tāpiritanga 2
I roto i tenei tuhinga i whakamahia e matou te NGINX hei tūmau tukutuku, engari he mea ngawari ki te whakakapi ki a Apache, huri noa i te tauira i roto i te konae. Whakaahua NGINX i runga i ahua Apache.
mutunga
I te wahanga tuatahi o tenei raupapa, i whakaatu matou me pehea te tuku tere i nga tono tukutuku hou i runga i te papaaho OpenShift. I tenei ra i titiro matou he aha te ahua o te Tukutuku Tukutuku me te pehea e honoa ai ki te tūmau tukutuku parakore penei i te NGINX ma te whakamahi i nga hanga mekameka hei hanga i tetahi hanga tono kua rite. I roto i te tuhinga e whai ake nei me te whakamutunga o tenei raupapa, ka whakaatu matou me pehea te whakahaere i tetahi tūmau whanaketanga mo to tono i runga i OpenShift me te whakarite i te tukutahi o nga konae rohe me te mamao.
Wāhanga 2: Me pehea te whakamahi i te ahua S2I hou me te ahua o te tūmau HTTP, penei i te NGINX, ma te whakamahi i nga huihuinga OpenShift e hono ana mo te tuku whakangao;
Wāhanga 3: me pehea te whakahaere i tetahi tūmau whanaketanga mo to tono i runga i te papaaho OpenShift me te tukutahi me te punaha konae a rohe.