Skip to main content
Percher is still being built, but you can try it out with a free account right now!
← All deploy guides
Deploy guide · runtime = "docker"

Ship .NET 8 (ASP.NET Core) in ~2 minutes.

Minimal ASP.NET Core Web API on .NET 8. The Dockerfile uses the Alpine SDK image for the build stage and the ASP.NET runtime image for the final container — small image, fast cold start.

Why Percher fits

  • ASP.NET Core's Kestrel server handles high concurrency well within Percher's per-container resource budget.
  • Built-in DI and structured logging integrate with `bunx percher logs` as JSON lines out of the box.

Quick start

bunx percher create my-app --template dotnet
cd my-app
bunx percher publish

The first command scaffolds a working .NET 8 (ASP.NET Core) project plus a percher.toml. Publish builds and deploys it, then prints the live URL.

percher.toml

The canonical config for a .NET 8 (ASP.NET Core) app on Percher. bunx percher init generates this automatically when it detects .NET 8 (ASP.NET Core) in your project.

[app]
name = "my-api"
runtime = "docker"
framework = "dotnet"

[web]
port = 8080
health = "/health"

Common gotchas

  • Set `ASPNETCORE_URLS=http://+:8080` in the Dockerfile so Kestrel listens on the right port; the default `5000` won't match the toml.
  • Configure `AddHealthChecks()` and map `/health` in `Program.cs` — a missing endpoint will fail the deploy health probe.

Related docs

Ready to deploy .NET 8 (ASP.NET Core)?

Start on the Free plan. No credit card, live in ~2 minutes.

Sign up free →