Aplikasi modéren dina OpenShift, bagian 2: ngawangun ranté
Halo sadayana! Ieu mangrupikeun pos kadua dina séri kami dimana kami nunjukkeun kumaha nyebarkeun aplikasi wéb modern dina Red Hat OpenShift.
Dina postingan sateuacana, urang rada keuna kana kamampuan gambar pembina S2I (sumber-ka-gambar) énggal, anu dirancang pikeun ngawangun sareng nyebarkeun aplikasi wéb modern dina platform OpenShift. Teras kami kabetot dina topik anu gancang nyebarkeun aplikasi, sareng ayeuna urang bakal ningali kumaha cara ngagunakeun gambar S2I salaku gambar pembina "murni" sareng ngagabungkeun sareng rakitan OpenShift anu aya hubunganana.
Gambar pembina bersih
Sapertos anu disebatkeun dina Bagéan XNUMX, kalolobaan aplikasi wéb modern ngagaduhan anu disebut tahap ngawangun, anu biasana ngalaksanakeun operasi sapertos transpilasi kode, sababaraha panyambungan file, sareng minifikasi. Payil anu dicandak salaku hasil tina operasi ieu - sareng ieu HTML statik, JavaScript sareng CSS - disimpen dina folder kaluaran. Lokasi polder ieu biasana gumantung kana naon alat ngawangun anu dianggo, sareng pikeun React ieu bakal janten folder ./build (urang bakal uih deui kana ieu langkung rinci di handap).
Sumber-ka-Gambar (S2I)
Dina tulisan ieu kami henteu nyabak topik "naon S2I sareng kumaha ngagunakeunana" (anjeun tiasa maca langkung seueur ngeunaan ieu. di dieu), tapi penting pikeun écés ngeunaan dua léngkah dina prosés ieu pikeun ngartos naon anu dilakukeun ku gambar Pangwangun Aplikasi Web.
Fase assembly
Fase assembly pisan sarupa di alam naon kajadian mun anjeun ngajalankeun docker ngawangun sarta mungkas nepi ka gambar Docker anyar. Sasuai, tahap ieu lumangsung nalika ngamimitian ngawangun dina platform OpenShift.
Dina kasus gambar Web App Builder, éta tanggung jawab pikeun masang dependensi aplikasi anjeun sareng ngajalankeun ngawangun. ngumpul naskah. Sacara standar, gambar pembina nganggo konstruk ngawangun npm run, tapi ieu tiasa ditimpa ku variabel lingkungan NPM_BUILD.
Salaku urang ceuk tadi, lokasi rengse, geus diwangun aplikasi gumantung kana naon parabot Anjeun pake. Salaku conto, dina kasus React ieu bakal janten folder ./build, sareng pikeun aplikasi Angular bakal janten folder project_name/dist. Na, sakumaha geus ditémbongkeun dina pos saméméhna, lokasi diréktori kaluaran, nu disetel ka ngawangun sacara standar, bisa overridden ngaliwatan variabel lingkungan OUTPUT_DIR. Nya, sabab lokasi folder kaluaran béda ti kerangka ka kerangka, anjeun ngan saukur nyalin kaluaran anu dihasilkeun kana folder standar dina gambar, nyaéta /opt/apt-root/output. Ieu penting pikeun ngartos sesa artikel ieu, tapi pikeun ayeuna hayu urang gancang kasampak di tahap salajengna - fase ngajalankeun.
fase ngajalankeun
Tahap ieu lumangsung nalika panggero docker run dijieun dina gambar anyar dijieun salila tahap assembly. Hal anu sami kajadian nalika nyebarkeun dina platform OpenShift. Default ngajalankeun skrip ngagunakeun ngawula modul pikeun ngalayanan eusi statik ayana dina diréktori kaluaran baku luhur.
Metoda ieu alus pikeun gancang nyebarkeun aplikasi, tapi umumna henteu dianjurkeun pikeun ngalayanan eusi statik ku cara ieu. Nya, sabab kanyataanna urang ngan ukur ngalayanan eusi statik, urang henteu peryogi Node.js dipasang di jero gambar urang - pangladén wéb bakal cekap.
Dina basa sejen, nalika assembling urang butuh hiji hal, nalika executing urang butuh sejen. Dina kaayaan ieu, ngawangun ranté datang gunana.
Ngawangun rante
Ieu naon maranéhna nulis ngeunaan ngawangun ranté dina dokuméntasi OpenShift:
"Dua majelis tiasa dikaitkeun babarengan, sareng hiji ngahasilkeun éntitas anu disusun sareng anu sanésna nyayogikeun éntitas éta dina gambar anu misah anu dianggo pikeun ngajalankeun éntitas éta."
Kalayan kecap séjén, urang tiasa nganggo gambar Web App Builder pikeun ngajalankeun wangunan urang, lajeng nganggo gambar web server, NGINX sarua, ngawula eusi urang.
Ku kituna, urang tiasa nganggo gambar Web App Builder salaku pembina "murni" sareng dina waktos anu sami gaduh gambar runtime anu alit.
Ayeuna hayu urang nempo ieu kalawan conto husus.
Pikeun latihan urang bakal ngagunakeun aplikasi Réaksi basajan, dijieun ngagunakeun alat garis paréntah create-react-app.
Hayu urang nempo file ieu leuwih jéntré, tur mimitian ku bagian parameter.
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
Sagalana di dieu cukup jelas, tapi éta patut nengetan parameter OUTPUT_DIR. Pikeun aplikasi React dina conto urang, teu aya anu hariwang, sabab React nganggo nilai standar salaku folder kaluaran, tapi dina kasus Angular atanapi anu sanés, parameter ieu kedah dirobih upami diperyogikeun.
Ayeuna hayu urang tingali dina bagian ImageStreams.
Tingali dina gambar katilu jeung kaopat. Duanana diartikeun salaku gambar Docker, sareng anjeun tiasa jelas ningali ti mana asalna.
Gambar katilu nyaéta web-app-builder sareng asalna tina nodeshift/ubi8-s2i-web-app tagged 10.x on Docker hub.
Kaopat nyaéta gambar NGINX (versi 1.12) kalayan tag panganyarna dina Docker hub.
Ayeuna hayu urang nempo dua gambar munggaran. Duanana kosong dina mimiti sareng didamel ngan ukur dina tahap ngawangun. Gambar kahiji, meta-web-app-builder, bakal hasil tina léngkah assembly anu bakal ngagabungkeun gambar web-app-builder-runtime jeung kode sumber urang. Éta pisan sababna naha urang ditambahkeun "-builder" kana nami gambar ieu.
Gambar kadua - react-web-app-runtime - bakal hasil tina ngagabungkeun nginx-image-runtime sareng sababaraha file tina gambar réact-web-app-builder. Gambar ieu ogé bakal dianggo nalika panyebaran sareng ngan ukur ngandung pangladén wéb sareng HTML statik, JavaScript, CSS tina aplikasi urang.
Lieur? Ayeuna hayu urang tingali konfigurasi ngawangun sareng éta bakal langkung jelas.
Témplat kami ngagaduhan dua konfigurasi ngawangun. Ieu anu munggaran, sareng éta lumayan standar:
Sakumaha anjeun tiasa tingali, garis kalawan labél 1 nyebutkeun yén hasil tina ngawangun ieu bakal ditempatkeun dina sarua réaksi-web-aplikasi-pembina gambar nu urang nempo saeutik saméméhna dina bagian ImageStreams.
Garis dilabélan 2 ngabejaan Anjeun dimana meunang kode ti. Dina kasus urang, ieu mangrupikeun gudang git, sareng lokasi, ref sareng folder kontéks ditangtukeun ku parameter anu parantos urang tingali di luhur.
Garis anu dilabélan 3 mangrupikeun anu parantos urang tingali dina bagian parameter. Éta nambihan variabel lingkungan OUTPUT_DIR, anu dina conto urang ngawangun.
Garis anu dilabélan 4 nyarios nganggo gambar web-app-builder-runtime, anu parantos kami tingali dina bagian ImageStream.
Garis dilabélan 5 nyebutkeun yen urang hoyong ngagunakeun hiji ngawangun Incremental lamun gambar S2I ngarojong eta, sarta gambar Web App Pangwangun teu. Dina peluncuran kahiji, sanggeus tahap assembly réngsé, gambar bakal nyimpen folder node_modules kana file arsip. Lajeng, dina ngajalankeun saterusna, gambar saukur bakal unzip folder ieu pikeun ngurangan waktu ngawangun.
Sarta pamustunganana, garis dilabélan 6 ngan sababaraha micu sangkan ngawangun ngajalankeun otomatis, tanpa campur manual, lamun hal robah.
Gemblengna ieu mangrupikeun konfigurasi ngawangun standar anu lumayan.
Ayeuna hayu urang tingali dina konfigurasi ngawangun kadua. Éta pisan mirip sareng anu munggaran, tapi aya hiji bédana anu penting.
Janten konfigurasi ngawangun anu kadua nyaéta réaksi-web-app-runtime, sareng éta dimimitian sacara standar.
Garis anu dilabélan 1 sanés énggal - éta ngan ukur nyarios yén hasil ngawangun dilebetkeun kana gambar réact-web-app-runtime.
Garis dilabélan 2, sakumaha dina konfigurasi saméméhna, nunjukkeun dimana meunang kodeu sumber. Tapi perhatikeun yén di dieu urang nyarios yén éta dicandak tina gambar. Leuwih ti éta, tina gambar nu urang ngan dijieun - ti meta-web-app-builder (dituduhkeun dina garis dilabélan 3). Payil anu urang hoyong pake aya di jero gambar sareng lokasina disetél dina garis anu dilabélan 4, dina hal urang nyaéta /opt/app-root/output/. Upami anjeun émut, ieu mangrupikeun file anu didamel dumasar kana hasil ngawangun aplikasi urang disimpen.
Folder tujuan anu ditetepkeun dina istilah sareng labél 5 ngan saukur diréktori ayeuna (ieu sadayana, émut, ngajalankeun di jero sababaraha hal gaib anu disebut OpenShift, sanés dina komputer lokal anjeun).
Bagian strategi - garis dilabélan 6 - ogé sami sareng konfigurasi ngawangun munggaran. Ngan waktos ayeuna urang badé nganggo nginx-image-runtime, anu parantos urang tingali dina bagian ImageStream.
Tungtungna, garis anu dilabélan 7 mangrupikeun bagian tina pemicu anu bakal ngaktifkeun gedong ieu unggal waktos gambar réact-web-app-builder.
Upami teu kitu, template ieu ngandung konfigurasi deployment geulis baku, kitu ogé hal anu patali jeung jasa jeung ruteu, tapi urang moal balik kana nu teuing jéntré. Perhatikeun yén gambar anu bakal disebarkeun nyaéta gambar réact-web-app-runtime.
Panyebaran Aplikasi
Janten ayeuna urang parantos ningali template, hayu urang tingali kumaha cara ngagunakeunana pikeun nyebarkeun aplikasi.
Urang tiasa nganggo alat klien OpenShift anu disebut oc pikeun nyebarkeun template kami:
Dina artikel ieu kami nganggo NGINX salaku pangladén wéb, tapi cukup gampang pikeun ngagentos éta ku Apache, ngan ukur robih template dina file. gambar NGINX dina Gambar Apache.
kacindekan
Dina bagian mimiti séri ieu, kami nunjukkeun kumaha gancang nyebarkeun aplikasi wéb modern dina platform OpenShift. Dinten ieu kami ningal naon gambar Web App sareng kumaha éta tiasa digabungkeun sareng pangladén wéb murni sapertos NGINX nganggo ngawangun ranté pikeun nyiptakeun aplikasi anu langkung siap produksi. Dina artikel salajengna sareng ahir dina séri ieu, kami bakal nunjukkeun kumaha ngajalankeun server pangembangan pikeun aplikasi anjeun dina OpenShift sareng mastikeun sinkronisasi file lokal sareng jauh.
Bagian 2: Kumaha ngagunakeun gambar S2I anyar sareng gambar server HTTP anu tos aya, sapertos NGINX, nganggo rakitan OpenShift anu aya hubunganana pikeun panyebaran produksi;
Bagian 3: kumaha ngajalankeun server pamekaran pikeun aplikasi anjeun dina platform OpenShift sareng singkronkeun sareng sistem file lokal.