Guia de publicacao da API em producao.
A API esta no ar:
- Base URL: https://cosmosx-api.onrender.com
- Health check: https://cosmosx-api.onrender.com/actuator/health
- Swagger UI: https://cosmosx-api.onrender.com/swagger-ui.html
Atencao: o banco H2 e efemero no tier gratuito do Render. O disco e recriado a cada deploy e os dados sao reiniciados (o
DataSeederrepopula quando o banco esta vazio). Para uso com dados persistentes, use uma VM com disco duravel (ex.: Oracle Cloud Always Free) ou um banco externo (PostgreSQL viaspring.datasource.*).
O Render constroi a imagem a partir do Dockerfile da raiz do repositorio (multi-stage):
- Stage
build: imagemmaven:3.9-eclipse-temurin-17compila o projeto e gera o jar - Stage runtime: imagem
eclipse-temurin:17-jrecopia apenas o jar e executa
O container roda com:
java -Xms256m -Xmx256m -XX:MaxMetaspaceSize=160m -jar /app/app.jar --server.port=$PORT
PORTe injetado pelo Render;--server.port=$PORTfaz o Spring Boot ouvir nessa porta- As flags de memoria estao ajustadas para o tier gratuito (512 MB)
- Empurre o codigo para
mainno GitHub (o Render faz auto-deploy a cada push) - Crie um Web Service (nao use Blueprint nem Static Site) apontando para o repositorio, branch
main - Configure o Environment como
Docker(naoNode) — o Render usa oDockerfileda raiz - Deixe Build Command e Start Command vazios (ignorados quando o Environment e Docker)
- Escolha a regiao mais proxima e o plano Free
- Confirme o deploy e valide o health check em
/actuator/health
Em Settings > Health Check Path, definir: /actuator/health
docker build -t cosmosx-api .
docker run -p 8080:8080 -e PORT=8080 cosmosx-api
# -> http://localhost:8080/actuator/health| Item | Comportamento |
|---|---|
| RAM | 512 MB (a imagem usa no maximo ~256 MB de heap) |
| Uptime | 750 horas/mes; a instancia "adormece" apos ~15 min sem trafego |
| Cold start | ~30-60 s na primeira requisicao apos dormir |
| Disco | Efemero (o H2 ./data/ reseta a cada deploy) |
| Custo | U$ 0 (sem cartao de credito) |
| Erro | Causa | Solucao |
|---|---|---|
./mvnw: Permission denied |
Bit de execucao do mvnw ausente no Git |
git update-index --chmod=+x mvnw + commit |
The JAVA_HOME ... not defined correctly |
Environment Node em vez de Docker (sem JDK) |
Trocar Environment para Docker no Render |
Comando de build estranho (ex.: ...yarn) |
Campo Build Command preenchido | Deixar vazio quando o Environment e Docker |
| 404/erro na primeira chamada | Instancia "adormecida" (cold start) | Aguardar ~1 min e tentar de novo |