Linguagem Frankfurt, Alemanha

Faça deploy de Java na Nodion

A Nodion reconhece um projeto Java pelo pom.xml, pelo build.gradle ou por um wrapper Maven ou Gradle. O buildpack Java faz o build com um JDK Temurin, ignora os testes e inicia o maior jar com java -jar num JRE Temurin, para que o JDK fique fora da imagem de execução (run image). A aplicação é executada em Frankfurt, ao lado de uma base de dados PostgreSQL gerida, se precisar de uma.

Fazer deploy na Nodion ›

a partir de 1 EUR / mês

Até 15 € de crédito de boas-vindas no registo

Detetado por
pom.xml, build.gradle(.kts), mvnw ou gradlew
Arranque
java -Dserver.port=$PORT -jar com o maior jar
Java
Temurin 11, 17, 21 (por omissão), 25, 26, 27
Região
EU Central (Frankfurt)

Faça deploy de Java passo a passo

  1. Faça commit do wrapper Maven ou Gradle Com gradlew, a Nodion executa ./gradlew build -x test --no-daemon; com mvnw, executa ./mvnw -B -DskipTests clean package. Um pom.xml sem wrapper é compilado com o Maven da própria Nodion. Um projeto Gradle sem gradlew falha, por isso crie o wrapper com gradle wrapper e faça commit do wrapper juntamente com a pasta gradle/wrapper. Os testes são ignorados durante o deploy; execute-os na sua CI.
  2. Fixe a versão do Java Sem uma versão fixada, a Nodion faz o build e executa com o Java 21. Indique outra versão em system.properties. As definições de toolchain em pom.xml ou no seu build Gradle não são lidas, por isso mantenha-as alinhadas com este ficheiro. system.properties
    java.runtime.version=25
  3. Escute em PORT A Nodion define a variável PORT para o processo web e passa-a à JVM como -Dserver.port, o que basta para o Spring Boot. Outros frameworks, ou o seu próprio servidor, leem PORT por si e escutam em 0.0.0.0.
    int port = Integer.parseInt(System.getenv().getOrDefault("PORT", "8080"));
  4. Crie a aplicação No dashboard, crie uma aplicação a partir do seu repositório GitHub, GitLab, Bitbucket ou Gitea e escolha o branch, a região EU Central e um tamanho com pelo menos 1 GB de memória. Mantenha a estratégia de build em Buildpacks; se o repositório tiver um Dockerfile, o formulário escolhe Dockerfile em vez disso.
  5. Associe uma base de dados e execute as migrações No separador Environment, associe uma base de dados PostgreSQL da mesma região. DATABASE_URL é um URL postgres://, não um URL JDBC, por isso injete também host, port, database, user e password com nomes à sua escolha e construa a partir deles o URL JDBC, como mostra o guia do Spring Boot. As migrações que correm no arranque (Flyway, Liquibase) não precisam de mais nada; qualquer outro comando pode ser executado a partir de uma linha release: num Procfile, uma vez por build, antes de a nova versão arrancar.

A ter em conta

  • MemóriaPor omissão, a JVM recebe JAVA_TOOL_OPTIONS=-XX:MaxRAMPercentage=80.0, por isso a heap pode usar a maior parte da memória da instância. Defina JAVA_TOOL_OPTIONS manualmente para substituir este valor, ou JAVA_OPTS para acrescentar flags ao comando de arranque. A maioria das aplicações web na JVM precisa de 1 GB ou mais.
  • Que jar é iniciado?A Nodion inicia o maior jar que esteja diretamente em target/ ou build/libs/ e ignora os jars -plain, -sources e -javadoc. Num build multimódulo, o jar executável fica na pasta de um módulo; inicie-o com uma linha web: num Procfile e passe a porta manualmente.
  • Quarkus e outros frameworks-Dserver.port só configura o Spring Boot. O Quarkus, o Micronaut e outros precisam da sua própria definição de porta a partir de PORT. O fast-jar predefinido do Quarkus em target/quarkus-app/ não é detetado: inicie-o com uma linha do Procfile como web: java -Dquarkus.http.port=$PORT -jar target/quarkus-app/quarkus-run.jar, ou faça o build de um uber-jar.

O que a Nodion gere por si

  • Deploys sem downtime Faça push para o seu branch e a Nodion cria uma nova release. O tráfego só muda quando as novas instâncias passam no health check; se uma release falhar, a que está em execução mantém-se. Em vez disso, as aplicações com um volume local são reiniciadas, porque o disco pertence a uma única instância.
  • Bases de dados junto à aplicação PostgreSQL, pgvector, MySQL, Valkey e ClickHouse geridos, na mesma região. As bases de dados associadas chegam como DATABASE_URL, REDIS_URL ou CLICKHOUSE_URL.
  • Pré-visualizações por pull request Ative as pré-visualizações e cada pull request do seu repositório passa a ter uma aplicação própria, com URL próprio e bases de dados novas e vazias, criada automática ou manualmente. Os forks e os pull requests de bots são ignorados.
  • Workers, cron jobs e escalabilidade Execute workers como processos adicionais da mesma aplicação, agende tarefas no separador Cron e escale cada processo até 16 instâncias.
  • Etapa de release Com buildpacks, uma linha release: do Procfile é executada a cada novo build. As aplicações com Dockerfile, bem como os redeploys ou rollbacks para uma imagem anterior, usam um comando de release definido na própria aplicação, que também tem prioridade sobre a linha do Procfile. Nos sites estáticos, a etapa de release é executada numa imagem que contém apenas os ficheiros gerados pelo build.
  • Logs e métricas Logs de build, release e runtime, além de métricas de CPU, memória, disco e rede de cada instância, no dashboard.
  • Domínios e HTTPS Um hostname atribuído por omissão com HTTPS desde o primeiro deploy; os seus próprios domínios recebem certificados automaticamente.

Para saber mais

Java na Nodion: perguntas e respostas

Que versões do Java posso usar?

Temurin 11, 17, 21, 25, 26 e 27. Sem uma versão fixada, recebe a 21. Defina java.runtime.version em system.properties; as definições de toolchain do Maven e do Gradle não são lidas.

Os meus testes são executados durante o deploy?

Não. O Gradle faz o build com -x test e o Maven com -DskipTests, para que os deploys continuem rápidos. Execute os seus testes na CI antes de fazer merge.

Os projetos Kotlin e Scala funcionam?

Sim, desde que façam o build com Maven ou Gradle e produzam um jar executável. Os projetos sbt não são detetados; para esses, use um Dockerfile.

Onde corre a minha aplicação Java?

Na região EU Central, em Frankfurt (Alemanha). O build, o registry, a aplicação e as respetivas bases de dados, volumes, buckets, logs e métricas ficam nessa região, e a API e o plano de controlo da Nodion estão alojados na Alemanha. A Nodion GmbH tem sede em Stuttgart.

Posso usar Java em conformidade com o RGPD?

A Nodion cria as condições para isso: a Nodion GmbH tem sede em Stuttgart (Alemanha); na região de Frankfurt, a aplicação, as bases de dados e os volumes são executados na Alemanha. O acordo de tratamento de dados (DPA, art. 28.º do RGPD) é celebrado eletronicamente no dashboard. A conformidade da sua utilização depende também da forma como configura e utiliza a aplicação.

Quanto custa executar Java na Nodion?

Uma instância da aplicação custa a partir de 1 EUR por mês. A configuração apresentada no quadro de custos custa 5.50 EUR por mês: Aplicação 4 EUR, PostgreSQL 1.50 EUR. Os preços não incluem IVA e a faturação é ao segundo. Pode escolher tamanhos maiores ou mais instâncias sempre que precisar.

Posso usar o meu próprio domínio na minha aplicação Java?

Sim. Cada aplicação recebe um hostname atribuído por omissão com HTTPS. Adicione o seu próprio domínio no separador Domains da aplicação; o certificado TLS é emitido e renovado automaticamente.

Dê uma cloud ao seu agente.

Ganhe até 15 € de crédito ao registar-se.

Continuar com o GitHub

ou com e-mail

Fique a par das novidades.

Novidades do produto, sem spam. Pode cancelar a subscrição a qualquer momento.