Framework Frankfurt, Duitsland

Deploy Spring Boot op Nodion

Koppel je repository en Nodion bouwt je Spring Boot-app met de Maven- of Gradle-wrapper van het project, slaat de tests over en start de uitvoerbare jar op een Temurin-JRE. server.port komt uit de PORT die Nodion instelt, dus de poort configureer je niet zelf. De app draait in Frankfurt, naast een managed PostgreSQL-database als je die nodig hebt.

Op Nodion deployen ›

vanaf 1 EUR / maand

Tot € 15 welkomsttegoed bij registratie

Herkend aan
pom.xml of build.gradle(.kts)
Start
java -Dserver.port=$PORT -jar met de Boot-jar
Java
11, 17, 21 (standaard), 25, 26, 27
Regio
EU Central (Frankfurt)

Spring Boot stap voor stap deployen

  1. Laat de wrapper staan en leg de Java-versie vast Projecten uit Spring Initializr hebben mvnw of gradlew al aan boord. Nodion draait ./mvnw -B -DskipTests clean package of ./gradlew build -x test --no-daemon en start de grootste jar in target/ of build/libs/, waarbij de -plain-jar van Gradle wordt overgeslagen. Gradle zonder wrapper mislukt; een Maven-project zonder wrapper bouwt Nodion met een eigen Maven. De Java-versie komt uit system.properties (standaard 21), niet uit de toolchain in je buildbestand. system.properties
    java.runtime.version=21
  2. Voeg Actuator toe voor de health check Het verkeer schakelt pas over zodra het pad van de health check antwoordt met 2xx of 3xx, en het standaardpad / geeft in veel Spring Boot-apps 404. Voeg Actuator toe (in Gradle: implementation 'org.springframework.boot:spring-boot-starter-actuator') en stel in de app-instellingen /actuator/health in als pad van de health check. pom.xml
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
  3. Gebruik je eigen variabelen voor de datasource Spring Boot verwacht een JDBC-URL en leest DATABASE_URL niet, want dat is een postgres://-URL. Verwijs in application.properties naar je eigen variabelen en voeg de PostgreSQL-driver org.postgresql:postgresql toe als runtime-dependency. Nodion vult de variabelen wanneer je in de volgende stap de database koppelt. application.properties
    spring.datasource.url=jdbc:postgresql://${DB_HOST}:${DB_PORT}/${DB_NAME}
    spring.datasource.username=${DB_USER}
    spring.datasource.password=${DB_PASSWORD}
  4. Maak de app aan en koppel PostgreSQL Maak een applicatie aan vanuit je repository in de regio EU Central met minstens 1 GB geheugen, en daarna een PostgreSQL-database in dezelfde regio. Injecteer bij het koppelen op het tabblad Environment host, port, database, user en password als DB_HOST, DB_PORT, DB_NAME, DB_USER en DB_PASSWORD. Ze komen binnen bij de volgende deployment.
  5. Push om te deployen Elke push naar de branch bouwt een nieuwe release. Flyway- of Liquibase-migraties draaien wanneer de nieuwe versie start, voordat die de health check doorstaat; tot dan blijft de draaiende versie verkeer bedienen, dus houd migraties compatibel met de oude code.

Goed om te weten

  • GeheugenReken op 1 GB of meer per instantie. De JVM krijgt standaard JAVA_TOOL_OPTIONS=-XX:MaxRAMPercentage=80.0, dus de heap mag het grootste deel van het geheugen van de instantie gebruiken. Stel JAVA_TOOL_OPTIONS in om dat te vervangen, of JAVA_OPTS om flags aan het startcommando toe te voegen.
  • Spring SecurityDefinieer je een eigen security filter chain, geef /actuator/health dan vrij zonder login. Met een 401 of 403 op het pad van de health check wordt de release nooit gereed, en na 10 minuten wordt die afgebroken terwijl de oude versie verkeer blijft bedienen.
  • Projecten met meerdere modulesNodion zoekt alleen direct in target/ en build/libs/ van de Base directory naar jars. Wordt de Boot-jar in een modulemap gebouwd, start hem dan met een Procfile-regel en geef de poort zelf door, bijvoorbeeld web: java -Dserver.port=$PORT -jar app/build/libs/app.jar.

Wat Nodion voor je regelt

  • Deploys zonder downtime Push naar je branch en Nodion bouwt een nieuwe release. Het verkeer schakelt over zodra de nieuwe instanties hun health check doorstaan; een mislukte release laat de draaiende versie staan. Apps met een lokaal volume herstarten in plaats daarvan, omdat de schijf bij één instantie hoort.
  • Databases naast de app Managed PostgreSQL, pgvector, MySQL, Valkey en ClickHouse in dezelfde regio. Gekoppelde databases komen binnen als DATABASE_URL, REDIS_URL of CLICKHOUSE_URL.
  • Previews per pull request Zet previews aan en pull requests uit je repository krijgen een eigen app met een eigen URL en nieuwe, lege databases, automatisch of handmatig aangemaakt. Forks en pull requests van bots worden overgeslagen.
  • Workers, cronjobs en schalen Draai workers als extra processen van dezelfde app, plan jobs op het tabblad Cron en schaal elk proces naar maximaal 16 instanties.
  • Releasestap Met buildpacks draait een release:-regel in het Procfile bij elke nieuwe build. Dockerfile-apps, en redeploys of rollbacks naar een eerdere image, gebruiken een releasecommando dat op de app zelf is ingesteld en dat ook voorrang heeft op de Procfile-regel. Bij statische sites draait een releasestap in een image die alleen de gebouwde bestanden bevat.
  • Logs en metrics Build-, release- en runtimelogs plus metrics voor CPU, geheugen, schijf en netwerk van elke instantie in het dashboard.
  • Domeinen en HTTPS Een standaardhostnaam met HTTPS vanaf de eerste deploy; je eigen domeinen krijgen automatisch certificaten.

Verder lezen

Spring Boot op Nodion: vragen en antwoorden

Waarom wordt mijn Spring Boot-deployment nooit klaar voor gebruik?

Meestal roept de health check / aan, dat geen mapping heeft en 404 teruggeeft, of antwoordt Spring Security met 401. Voeg Actuator toe, stel het pad van de health check in op /actuator/health en maak het bereikbaar zonder login. Een JVM die tijdens het opstarten zonder geheugen komt te zitten, wordt ook nooit gereed; geef hem 1 GB of meer.

Kan ik met Gradle bouwen zonder de wrapper?

Nee. Een Gradle-project heeft gradlew in de repository nodig, samen met de map gradle/wrapper; draai één keer gradle wrapper en commit het resultaat. Maven-projecten bouwen ook zonder wrapper, met de eigen Maven van Nodion.

Werkt Spring Boot met Kotlin?

Ja. Kotlin-projecten uit Spring Initializr bouwen met dezelfde Maven- of Gradle-wrapper, en build.gradle.kts wordt net zo herkend als build.gradle.

Waar draait mijn Spring Boot-app?

In de regio EU Central in Frankfurt, Duitsland. Build, registry, de app en de bijbehorende databases, volumes, buckets, logs en metrics blijven in die regio, en de API en het control plane van Nodion worden in Duitsland gehost. Nodion GmbH is gevestigd in Stuttgart.

Kan ik Spring Boot gebruiken volgens de AVG (GDPR)?

Nodion biedt hiervoor de basis: Nodion GmbH is gevestigd in Stuttgart (Duitsland). Kies je de regio Frankfurt, dan draaien de app, de databases en de volumes in Duitsland. De verwerkersovereenkomst (DPA, art. 28 AVG) sluit je elektronisch af in het dashboard. Of je configuratie aan de AVG voldoet, hangt ook af van hoe je de app instelt en gebruikt.

Wat kost het om Spring Boot op Nodion te draaien?

Een appinstantie kost vanaf 1 EUR per maand. De configuratie in het kostenoverzicht kost 5.50 EUR per maand: App 4 EUR, PostgreSQL 1.50 EUR. Prijzen zijn excl. btw en worden per seconde gefactureerd, en je kiest grotere formaten of meer instanties wanneer je ze nodig hebt.

Kan ik een eigen domein gebruiken voor mijn Spring Boot-app?

Ja. Elke app krijgt een standaardhostnaam met HTTPS. Voeg je eigen domein toe op het tabblad Domains van de app; het TLS-certificaat wordt automatisch uitgegeven en vernieuwd.

Geef je agent een cloud.

Ontvang tot € 15 welkomsttegoed bij je registratie.

Doorgaan met GitHub

of met e-mail

Blijf op de hoogte.

Productnieuws, geen spam. Je kunt je altijd weer afmelden.