Deploy .NET 8 / ASP.NET Core to AWS in 5 minutes.
Push an ASP.NET Core (Razor / MVC / Blazor / Minimal API) repo to Lander. Microsoft-blessed Dockerfile, per-customer Fargate, ARM64 native.[walkthrough · 5 minutes]
01
Microsoft publishes official multi-stage Dockerfiles. The arm64v8 SDK + runtime images target Lander's Graviton2 default.Add a Dockerfile
# Dockerfile FROM mcr.microsoft.com/dotnet/sdk:8.0 AS builder WORKDIR /src COPY *.csproj ./ RUN dotnet restore COPY . . RUN dotnet publish -c Release -o /app /p:UseAppHost=false FROM mcr.microsoft.com/dotnet/aspnet:8.0 WORKDIR /app COPY --from=builder /app . ENV ASPNETCORE_URLS=http://+:80 ENV PORT=80 EXPOSE 80 ENTRYPOINT ["dotnet", "YourApp.dll"]
02
ASP.NET reads ASPNETCORE_URLS to know what to listen on. Set it to http://+:80 in the Dockerfile (above) — don't hardcode in code.Bind to ASPNETCORE_URLS
03
Hobby plan ($25/mo). First deploy ~4 min (NuGet restore on CodeBuild is fast — packages are small).Push to deploy
[why · lander vs vercel · railway · render]
- →ASP.NET 8 on ARM64 Graviton2 is ~25% cheaper than x86 at the same perf.
- →Per-customer Fargate isolates JIT warmup from neighbors.
- →WAF blocks IIS-style attack patterns even though .NET on Linux doesn't run IIS — defense in depth.
[gotchas]
- ·Replace YourApp.dll with your actual project DLL name in the ENTRYPOINT.
- ·Connection strings: use IConfiguration via env vars (e.g. ConnectionStrings__Default) — don't put them in appsettings.Production.json.
- ·Blazor Server WebSocket connections need sticky sessions; Lander auto-detects ASP.NET Core and enables them.
[other stacks · same flow]