Lenguaje Fráncfort, Alemania

Despliega Java en Nodion

Nodion reconoce un proyecto Java por pom.xml, build.gradle o un wrapper de Maven o Gradle. El buildpack de Java lo compila con un JDK Temurin, omite los tests y arranca el jar más grande con java -jar sobre una JRE Temurin, así que el JDK no entra en la imagen de runtime. La app se ejecuta en Fráncfort, junto a una base de datos PostgreSQL gestionada si la necesitas.

Desplegar en Nodion ›

desde 1 EUR / mes

Hasta 15 € de crédito de bienvenida al registrarte

Detectado por
pom.xml, build.gradle(.kts), mvnw o gradlew
Arranque
java -Dserver.port=$PORT -jar con el jar más grande
Java
Temurin 11, 17, 21 (por defecto), 25, 26, 27
Región
EU Central (Fráncfort)

Despliega Java paso a paso

  1. Haz commit del wrapper de Maven o Gradle Con gradlew, Nodion ejecuta ./gradlew build -x test --no-daemon; con mvnw, ejecuta ./mvnw -B -DskipTests clean package. Un pom.xml sin wrapper se compila con el Maven propio de Nodion. Un proyecto Gradle sin gradlew falla, así que crea el wrapper con gradle wrapper y haz commit de él junto con la carpeta gradle/wrapper. Los tests no se ejecutan durante el despliegue; ejecútalos en tu CI.
  2. Fija la versión de Java Si no fijas ninguna versión, Nodion compila y ejecuta con Java 21. Indica otra versión en system.properties. Nodion no lee la configuración de toolchain de pom.xml ni de tu build de Gradle, así que mantenla alineada con este archivo. system.properties
    java.runtime.version=25
  3. Escucha en PORT Nodion define PORT para el proceso web y la pasa a la JVM como -Dserver.port, lo que basta para Spring Boot. Otros frameworks, o tu propio servidor, leen PORT por su cuenta y escuchan en 0.0.0.0.
    int port = Integer.parseInt(System.getenv().getOrDefault("PORT", "8080"));
  4. Crea la app En el dashboard, crea una aplicación desde tu repositorio de GitHub, GitLab, Bitbucket o Gitea y elige la rama, la región EU Central y un tamaño con al menos 1 GB de memoria. Deja la estrategia de build en Buildpacks; si el repositorio tiene un Dockerfile, el formulario selecciona Dockerfile en su lugar.
  5. Conecta una base de datos y ejecuta las migraciones En la pestaña Environment, vincula una base de datos PostgreSQL de la misma región. DATABASE_URL es una URL postgres://, no una URL JDBC, así que inyecta también host, port, database, user y password con nombres propios y construye con ellos la URL JDBC, como muestra la guía de Spring Boot. Las migraciones que se ejecutan al arrancar (Flyway, Liquibase) no necesitan nada más; cualquier otro comando puede ejecutarse desde una línea release: en un Procfile, una vez por build, antes de que arranque la nueva versión.

A tener en cuenta

  • MemoriaPor defecto, la JVM recibe JAVA_TOOL_OPTIONS=-XX:MaxRAMPercentage=80.0, así que el heap puede usar la mayor parte de la memoria de la instancia. Define tú JAVA_TOOL_OPTIONS para sustituirlo, o JAVA_OPTS para añadir flags al comando de arranque. La mayoría de las apps web en la JVM necesitan 1 GB o más.
  • Qué jar se arrancaNodion arranca el jar más grande que esté directamente en target/ o build/libs/ y omite los jars -plain, -sources y -javadoc. En una build multimódulo, el jar ejecutable está en la carpeta de un módulo; arráncalo con una línea web: en un Procfile y pasa tú el puerto.
  • Quarkus y otros frameworks-Dserver.port solo configura Spring Boot. Quarkus, Micronaut y los demás necesitan su propia configuración de puerto a partir de PORT. El fast-jar por defecto de Quarkus en target/quarkus-app/ no se detecta: arráncalo con una línea del Procfile como web: java -Dquarkus.http.port=$PORT -jar target/quarkus-app/quarkus-run.jar, o genera un uber-jar.

Lo que Nodion gestiona por ti

  • Despliegues sin downtime Haz push a tu rama y Nodion construye una nueva release. El tráfico pasa a las nuevas instancias cuando superan el health check; si una release falla, la que está en marcha sigue activa. En cambio, las apps con un volumen local se reinician porque el disco pertenece a una sola instancia.
  • Bases de datos junto a la app PostgreSQL, pgvector, MySQL, Valkey y ClickHouse gestionados en la misma región. Al vincular una base de datos, sus datos de conexión llegan como DATABASE_URL, REDIS_URL o CLICKHOUSE_URL.
  • Previews por pull request Activa las previews: cada pull request de tu repositorio tendrá su propia app, con URL y bases de datos nuevas y vacías. Puedes crearla automáticamente o a mano. Se omiten las pull requests de forks y bots.
  • Workers, cron jobs y escalado Ejecuta workers como procesos adicionales de la misma app, programa tareas en la pestaña Cron y escala cada proceso hasta 16 instancias.
  • Paso de release Con buildpacks, una línea release: del Procfile se ejecuta con cada nueva build. Las apps con Dockerfile, así como los redeploys o rollbacks a una imagen anterior, usan un comando de release definido en la propia app, que además tiene prioridad sobre la línea del Procfile. En los sitios estáticos, el paso de release se ejecuta en una imagen que solo contiene los archivos generados por la build.
  • Logs y métricas Logs de build, release y runtime, además de métricas de CPU, memoria, disco y red de cada instancia, en el dashboard.
  • Dominios y HTTPS Un nombre de host predeterminado con HTTPS desde el primer despliegue; tus propios dominios reciben certificados automáticamente.

Para seguir leyendo

Java en Nodion: preguntas y respuestas

¿Qué versiones de Java puedo usar?

Temurin 11, 17, 21, 25, 26 y 27. Si no fijas ninguna, obtienes la 21. Define java.runtime.version en system.properties; la configuración de toolchain de Maven y Gradle no se lee.

¿Se ejecutan mis tests durante el despliegue?

No. Gradle compila con -x test y Maven con -DskipTests, así los despliegues siguen siendo rápidos. Ejecuta tus tests en la CI antes de hacer merge.

¿Funcionan los proyectos Kotlin y Scala?

Sí, siempre que se compilen con Maven o Gradle y generen un jar ejecutable. Los proyectos sbt no se detectan; para ellos usa un Dockerfile.

¿Dónde se ejecuta mi app de Java?

En la región EU Central, en Fráncfort (Alemania). La build, el registry, la app y sus bases de datos, volúmenes, buckets, logs y métricas permanecen en esa región. La API y el plano de control de Nodion están alojados en Alemania. Nodion GmbH tiene su sede en Stuttgart.

¿Puedo usar Java conforme al RGPD?

Nodion te ofrece las bases para ello: Nodion GmbH tiene su sede en Stuttgart (Alemania); en la región de Fráncfort, la app, sus bases de datos y sus volúmenes se ejecutan en Alemania. Puedes formalizar electrónicamente el DPA (contrato de encargo del tratamiento, art. 28 del RGPD) en el dashboard. Que tu uso cumpla el RGPD también depende de cómo configures y uses la app.

¿Cuánto cuesta ejecutar Java en Nodion?

Una instancia de app cuesta desde 1 EUR al mes. La configuración del recuadro de costes cuesta 5.50 EUR al mes: App 4 EUR, PostgreSQL 1.50 EUR. Los precios no incluyen IVA y la facturación es por segundo. Puedes elegir tamaños mayores o más instancias cuando lo necesites.

¿Puedo usar mi propio dominio para mi app de Java?

Sí. Cada app recibe un nombre de host predeterminado con HTTPS. Añade tu propio dominio en la pestaña Domains de la app; el certificado TLS se emite y se renueva automáticamente.

Dale a tu agente un cloud.

Hasta 15 € de crédito al registrarte.

Continuar con GitHub

o con tu email

Mantente al día.

Novedades del producto, sin spam. Puedes darte de baja cuando quieras.