Spring Boot -palvelimen julkaisu ilman ulkoista tietokantaa
Seuraavassa käydään läpi Spring Boot -palvelimen julkaisu ilman ulkoista tietokantaa.
Tietokannan konfigurointi käsitellään seuraavassa luvussa.
Rahti-palvelun työkaluilla voidaan luoda sovelluksen julkaisuun tarvittavat resurssit repositorion sisällön perusteella automaattisesti. Resurssit voidaan luoda joko
- suoraan lähdekoodin perusteella (Source-to-Image, S2I) tai
- projektissa määritetyn Dockerfile:n perusteella.
Materiaalissa annetaan ohjeet molempiin tapoihin. Tavat ovat vaihtoehtoisia.
Projektin valmistelu julkaisua varten
Projektin sijainti repositoriossa
Build-työkalut olettavat, että sovellusprojekti sijaitsee repositorion juurihakemistossa. Jos näin ei ole, sinun on erikseen annettava työkaluille tieto siitä, missä hakemistossa Spring Boot -projekti sijaitsee.
Repositorio-oikeudet
Rahti-työkalut tarvitsevat pääsyn projektin repositorioon. Jos repositorio on julkinen, ei pääsyoikeuksia tarvitse erikseen määrittää.
Jos repositorio on yksityinen, on Rahti-projektille järjestettävä pääsy luvun Julkaisu yksityisestä GitHub-repositoriosta ohjeiden mukaisesti.
Spring-projektin valmistelu
Jos käytät Source-to-Image -julkaisua, ei tarvita erillisiä valmisteluja.
Jos käytät Dockerfile-julkaisua, lisää Spring-projektin juureen tiedosto Dockerfile
, jonka sisältö on seuraava:
FROM eclipse-temurin:17-jdk-focal as builder
WORKDIR /opt/app
COPY .mvn/ .mvn
COPY mvnw pom.xml ./
RUN chmod +x ./mvnw
RUN ./mvnw dependency:go-offline
COPY ./src ./src
RUN ./mvnw clean install -DskipTests
RUN find ./target -type f -name '*.jar' -exec cp {} /opt/app/app.jar \; -quit
FROM eclipse-temurin:17-jre-alpine
COPY --from=builder /opt/app/*.jar /opt/app/
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/opt/app/app.jar" ]
Sovelluksen luonti web-käyttöliittymässä
Sovellus voidaan luoda web-käyttöliittymän Developer-näkymän Add-osiossa Import from Git-lomakkeella.
Kaikkein yksinkertaisin tapaus on julkaisu julkisesta repositoriosta, jossa sovellus sijaitsee juuressa.
Seuraavassa käydään läpi lomakkeen kenttien selitykset ja suositellut valinnat. Riippuen valinnoistasi kaikkia kenttiä ei välttävättä näytetä lainkaan. Osa kentistä on Show advanced option-valinnan takana.
Kenttä | Selitys |
---|---|
Git Repo URL | Repositorion osoite. Huom! Jos repositorio on yksityinen, osoite pitää antaa SSH-muodossa (esim. git@github.com:username/reponame.git ). |
Git reference | Haara, tag tai commit, josta julkaisu tehdään. Ei tarvita, jos julkaisu tehdään oletushaarasta. |
Context dir | Sovellusprojektin juurihakemisto, oletusarvoisesti repositorion juurihakemisto / . |
Source Secret | Salaisuus, joka sisältää repositoriopääsyyn tarvittavan SSH-avaimen. Tarvitaan vain, jos repositorio on yksityinen. Salaisuuden voi myös luoda valinnalla Create new Secret. |
Import Strategy | Sovelluksen luonnissa käytettävä metodi. Valitse Dockerfile tai Builder Image (Source-to-Image). |
Builder Image | Jos valitsit metodiksi Builder Image, valitse Java. |
Builder Image version | Jos valitsit metodiksi Builder Image, valitse versio, jonka JDK vastaa projektisi JDK-versiota. |
Dockerfile path | Jos valitsit metodiksi Dockerfile, voit määrittää Dockerfile :n sijainnin ja nimen. Oletusarvoisesti nimi on Dockerfile ja sijainti sovelluksen juuressa. |
Application | Sovelluksen nimi. |
Name | Sovelluksen tunniste, joka liitetään kaikkiin sovellukseen luotaviin resursseihin etuliitteksi. |
Build Option | Valitse oletus Build ja muut oletukset. |
Resource type | Valitse oletus Deployment ja muut oletukset. |
Target port | Palveluun luodun reitin portti. Valitse oletus 8080 ja muut oletukset. |
Kun painat valintaa Create, tarvittavat resurssit luodaan ja build käynnistyy. Voit seurata buildin etenemistä web-käyttöliittymässä.
Kun julkaisu on onnistunut, projektiin on ilmaantunut Deployment, jossa on toivottavasti käynnissä oleva kontti (Pod), palvelu (Service) sekä reitti (Route). josta sovelluksesi vastaa. Jos näin ei ole, tilannetta voi selvitellä luvun Virheenjäljitys ohjeiden avulla.
Sovelluksen luonti komentorivillä
Sovellus voidaan luoda komentorivikomennoilla. Tämä tapa on vaihtoehtoinen web-käyttöliittymän käytölle.
Huom! Jotta tässä luvussa käytettäviä oc
-komentoja voi antaa, on ensin kirjauduttava Rahti-palveluun luvun Rahti-palveluun kirjautuminen komentorivillä ohjeiden mukaisesti.
Kirjaudu ensin Rahti-palveluun komentorivillä ja aseta luomasi projekti aktiiviseksi.
oc project myproject
Uusi sovellus voidaan luoda komentorivikomennolla oc new-app
. Komennolle annetaan parametrina repositorio-osoite, josta projekti käydään hakemassa.
Sovellusprojektin sijainti repositoriossa
Jos sovellusprojekti ei sijaitse repositorion juurihakemistossa, projektihakemisto annetaan oc new-app
-komennossa valitsinparametrilla --context-dir
:
--context-dir=<projektihakemisto>
<projektihakemisto>
on suhteellinen polku repositorion juuresta siihen hakemistoon, jossa sovellusprojekti sijaitsee, esim. --context-dir=myproj
.
Repositorio-oikeudet
Jos repositorio on julkinen, ei pääsyoikeuksia tarvitse erikseen määrittää.
Jos repositorio on yksityinen, annettavissa komennoissa on annettava tieto tarvittavasta SSH-avaimesta valitsimella
--source-secret=<github-creds-secret-name>
<github-creds-secret-name>
on salaisuus, joka sisältää yksityisen SSH-avaimen.
Tässä tapauksessa repositorion osoite pitää antaa SSH-muodossa, esim:
git@github.com:<user>/<repositorionimi>.git
Sovelluksen luontikomennot
Seuraavissa esimerkeissä käydään läpi sovelluksen luonti molemmilla edellä mainituilla tavoilla. Kaikki komennot tehdään komentoriviltä.
Jos repositorio on julkinen, voit luoda projektiin sovelluksen (application) komennolla:
oc new-app <repository-URL>#<branch-name>
<repository-URL>
on osoite, josta repositorion voi kloonata
- <branch-name>
on haara, josta julkaistaan.
Jos repositorio on yksityinen, on komentoon lisättävä tieto käytettävästä SSH-avaimesta:
oc new-app <repository-URL>#<branch-name> --source-secret=<github-creds-secret-name>
Jos repositorio on julkinen, voit luoda projektiin sovelluksen (application) komennolla:
oc new-app registry.access.redhat.com/ubi8/openjdk-17:1.18-2~<repository-URL>#<branch-name>
registry.access.redhat.com/ubi8/openjdk-17:1.18-2
on S2I-työkalulevykuva Java 17-sovelluksille
- <repositorio-URL>
on osoite, josta repositorion voi kloonata
- <branch-name>
on haara, josta julkaistaan.
Jos repositorio on yksityinen, on komentoon lisättävä tieto käytettävästä SSH-avaimesta:
oc new-app registry.access.redhat.com/ubi8/openjdk-17:1.18-2~<repository-URL>#<branch-name> --source-secret=<github-creds-secret-name>
Komennon tuloksena ludoaan tarvittavat resurssit ja build käynnistyy. Voit seurata buildin etenemistä web-käyttöliittymässä.
Kun julkaisu on onnistunut, projektiin on ilmaantunut Deployment, jossa on toivottavasti käynnissä oleva kontti (Pod) ja palvelu (Service). Jos näin ei ole, tilannetta voi selvitellä luvun Virheenjäljitys ohjeiden avulla.
Tämän jälkeen on vielä avattava palvelulle reitti (route), jolla palveluun pääsee internetistä. Sen voi tehdä komennolla:
oc expose service <service-name>
<service-name>
on äsken luodun palvelun nimi, oletusarvoisesti sama kuin sovelluksen nimi. Sovelluksen palvelut voi katsoa web-käyttöliittymästä tai listata komennolla oc get svc
.
Oletusarvoisesti luodaan salaamaton http-reitti. Jos halutaan https-pääsy, on se konfiguroitava erikseen, ks. luku HTTPS-konfigurointi
Buildin käynnistäminen manuaalisesti
Julkaisun jälkeen uusi julkaisu voidaan käynnistää manuaalisesti web-käyttöliittymästä tai komentorivillä oc
-komennolla.
oc start-build <build-config-name>
<build-config-name>
on oletusarvoisesti sama kuin <deployment-config-name>
Build voidaan myös automatisoida tapahtumaan aina, kun GitHub-repositorioon pusketaan uusi versio lähdekoodista