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.[walkthrough · 5 minutes]
01
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.Add a Dockerfile
# 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
Default Lander Fargate task is small. Add JVM flags so the JVM respects the container's memory limit.JVM tuning for 0.25 vCPU + 512 MB
CMD ["java", \ "-XX:MaxRAMPercentage=75", \ "-XX:+UseSerialGC", \ "-jar", "/app/app.jar", \ "--server.port=80"]
03
Hobby plan ($25/mo) for 1 dynamic. First deploy ~5-7 min (Maven dependency download). Subsequent ~2 min.Push to deploy
[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.
[other stacks · same flow]