[deploy · net/http · chi · gin · echo · fiber]

Deploy a Go app to real AWS in 5 minutes.

Push a Go repo to Lander. We compile a static binary, ship it in a distroless container behind HTTPS on per-customer Fargate. Cold start: <100ms.
$ deploy now →see pricingfree plan · no credit card · commercial use OK
[walkthrough · 5 minutes]
01

Multi-stage Dockerfile

Compile in a builder image, copy the static binary into a distroless final image. Result is ~10 MB and starts in under 100ms.
# Dockerfile
FROM golang:1.23-alpine AS builder
WORKDIR /app
COPY go.* ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -o server .

FROM gcr.io/distroless/static-debian12
COPY --from=builder /app/server /server
EXPOSE 80
ENV PORT=80
CMD ["/server"]
02

Listen on $PORT

Lander's ALB health check hits / on $PORT. Read PORT from env, default 80.
port := os.Getenv("PORT")
if port == "" { port = "80" }
http.ListenAndServe(":"+port, nil)
03

Sign up + push

lander.host/onboard → Google → Hobby plan. Install GitHub App, pick repo, push to default branch. CodeBuild handles `docker build`.
04

Verify it's running

Within ~3 minutes you have a live URL at <slug>.app.lander.host. Tail logs from Lander's dashboard or `aws logs tail` your CloudWatch group directly.
[why · lander vs vercel · railway · render]
  • Each Go app gets a Fargate task at 0.25 vCPU + 0.5 GB RAM — plenty for a small Go service. Easy to scale up.
  • Distroless containers + ALB target group health checks = sub-100ms cold start.
  • VPC isolation means a misbehaving Go service in another customer can never affect yours.
[gotchas]
  • ·CGO_ENABLED=0 is required for the distroless final image — distroless has no libc.
  • ·If your binary needs TLS root certs (e.g. outbound HTTPS), use `gcr.io/distroless/static:nonroot` and copy /etc/ssl/certs in.
  • ·Goroutine leaks on graceful shutdown: trap SIGTERM and call your http server's Shutdown(ctx) before exit.

5 minutes from clone to live URL.

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