Spring Boot -palvelimen julkaisu ilman ulkoista tietokantaa
Seuraavassa käydään läpi Spring Boot -palvelimen julkaisu ilman ulkoista tietokantaa. Ulkoisen tietokannan luonti ja konfigurointi käsitellään dokumentissa Spring Boot -palvelimen julkaisu Rahti-palvelussa Pukki-tietokantapalvelun avulla.
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.
Spring-projektin valmistelu julkaisua varten
Projektin repositorio
Projektin sijainti
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-projekti
Source-to-Image-julkaisu
Jos käytät Source-to-Image -julkaisua, ei tarvita erillisiä valmisteluja.
Dockerfile-julkaisu
Jos käytät Dockerfile-julkaisua, lisää Spring-projektin juureen tiedosto Dockerfile, jonka sisältö on seuraava:
# BUILD-VAIHE
FROM eclipse-temurin:17-jdk-focal AS builder
WORKDIR /opt/app
# Kopioi Mavenin asetukset ja projektin metadata
COPY .mvn/ .mvn
COPY mvnw pom.xml ./
RUN chmod +x ./mvnw
# Lataa riippuvuudet
RUN ./mvnw dependency:go-offline
# Kopioi lähdekoodi
COPY ./src ./src
# Buildaa projekti
RUN ./mvnw clean install -DskipTests
# Kopioi JAR-tiedosto
RUN cp target/*.jar /opt/app/app.jar
# RUNTIME-VAIHE
FROM eclipse-temurin:17-jre-alpine
WORKDIR /opt/app
# Kopioi buildattu JAR-tiedosto build-vaiheesta
COPY --from=builder /opt/app/app.jar /opt/app/app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/opt/app/app.jar"]
Sovelluksen luonti web-käyttöliittymässä
Voit nyt julkaista Spring Boot -sovelluksesi Rahti-palvelussa. Klikkaa oikeasta yläkulmasta pientä + -ikonia ja valitse Import from git.

Import from Git-lomakkeella määritellään, mistä repositoriosta sovellusprojekti haetaan, ja miten build ja julkaisu tehdään.

Seuraavassa käydään läpi lomakkeen kenttien selitykset ja suositellut valinnat. PAkolliset kentät on lihavoitu. 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. |
| Select project | Valitse projekti, johon sovellus luodaan. |
Tässä vaiheessa voit valita, haluatko luoda sovelluksesi Dockerfile:n vai Source-to-Image-työkalujen avulla.
Voit vaihtaa julkaisumenetelmää valitsemalla Edit Import Strategy. Valinta vaikuttaa siihen, mitä muita kenttiä lomakkeessa näytetään.
Source-to-Image -julkaisussa ei ole erityisiä asetuksia. Jos valitset julkaisumenetelmäksi Dockerfile tai Builder Image, on tehtävä lisävalintoja.
| Kenttä | Selitys |
|---|---|
| Dockerfile path | Jos valitsit metodiksi Dockerfile, voit määrittää Dockerfile:n sijainnin ja nimen. Oletusarvoisesti nimi on Dockerfile ja sijainti sovelluksen juuressa. |
| Kenttä | Selitys |
|---|---|
| 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. |
Kaikkien julkaisumenetelmien yhteisiä valintoja ovat:
| Kenttä | Selitys |
|---|---|
| Application | Sovelluksen nimi. |
| Name | Sovelluksen tunniste, joka liitetään kaikkiin sovellukseen luotaviin resursseihin etuliitteksi. |
| Build Option | Valitse oletus Build Config 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ä linkistä View logs tai klikkaamalla build status -symbolia graafisesta esityksestä.

Kun julkaisu on onnistunut, projektiin on ilmaantunut Deployment, jossa on toivottavasti käynnissä oleva kontti (Pod), palvelu (Service) sekä reitti (Route). josta sovelluksesi vastaa. Voit tarkastella sovelluksesi käynnistymistä ja toimintaa podin lokitiedoista (linkki View logs). Kun sovellus on käynnissä, voit klikata reitin URL-osoitetta (osiossa Routes) ja tarkistaa, että sovelluksesi vastaa odotetusti.
Jos jokin meni pielee, tilannetta voi selvitellä luvun Virheenjäljitys ohjeiden avulla.

Kun olet tehnyt muutoksia sovellukseesi, voit käynnistää uuden buildin manuaalisesti klikkaamalla Start Build -painiketta. Build voidaan myös automatisoida tapahtumaan aina, kun GitHub-repositorioon pusketaan uusi versio lähdekoodista, ks. Buildin automatisointi.
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.
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