[deploy · Spring Boot · Quarkus · Micronaut]

Deploy Java / Spring Boot to AWS in 5 minutes.

Push a Spring Boot, Quarkus, or Micronaut repo to Lander. JVM-aware Dockerfile, per-customer Fargate task, ARM64 by default for ~30% better cost-per-request than x86.
$ deploy now →see pricingfree plan · no credit card · commercial use OK
[walkthrough · 5 minutes]
01

Add a Dockerfile

Use Eclipse Temurin (the openjdk fork). For Spring Boot, JAR-based deploys work fine; for Quarkus/Micronaut native-image, use a separate builder stage with GraalVM.
# Dockerfile — Spring Boot JAR
FROM eclipse-temurin:21-jdk AS builder
WORKDIR /app
COPY mvnw pom.xml ./
COPY .mvn .mvn
RUN ./mvnw dependency:go-offline -B
COPY src src
RUN ./mvnw package -DskipTests

FROM eclipse-temurin:21-jre
WORKDIR /app
COPY --from=builder /app/target/*.jar app.jar
ENV PORT=80
EXPOSE 80
CMD ["java", "-jar", "/app/app.jar", "--server.port=80"]
02

JVM tuning for 0.25 vCPU + 512 MB

Default Lander Fargate task is small. Add JVM flags so the JVM respects the container's memory limit.
CMD ["java", \
  "-XX:MaxRAMPercentage=75", \
  "-XX:+UseSerialGC", \
  "-jar", "/app/app.jar", \
  "--server.port=80"]
03

Push to deploy

Hobby plan ($25/mo) for 1 dynamic. First deploy ~5-7 min (Maven dependency download). Subsequent ~2 min.
[why · lander vs vercel · railway · render]
  • ARM64 Graviton2 = ~30% cheaper at the same JVM perf for most workloads.
  • Per-customer Fargate isolates the JVM from noisy neighbor GC pauses.
  • JVM-friendly cold-start on always-on Pro/Team tiers — no penalty for paid plans.
[gotchas]
  • ·JVM cold-start on Fargate is 2-4 seconds. For latency-sensitive endpoints, GraalVM native-image cuts this to <100ms.
  • ·Default heap is 25% of container RAM — explicitly set MaxRAMPercentage=75 for the small Fargate task.
  • ·Maven dependency download takes 1-2 min on first build. CodeBuild caches the .m2 dir between runs.

5 minutes from clone to live URL.

no credit card · push from GitHub · real AWS underneath$ deploy now → lander.host