[deploy · .NET 8 · ASP.NET Core · Blazor]

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.
$ deploy now →see pricingfree plan · no credit card · commercial use OK
[walkthrough · 5 minutes]
01

Add a Dockerfile

Microsoft publishes official multi-stage Dockerfiles. The arm64v8 SDK + runtime images target Lander's Graviton2 default.
# 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

Bind to ASPNETCORE_URLS

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.
03

Push to deploy

Hobby plan ($25/mo). First deploy ~4 min (NuGet restore on CodeBuild is fast — packages are small).
[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.

5 minutes from clone to live URL.

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