Server in Falkenstein · Support auf Deutsch · Rechnung mit Umsatzsteuer
Rechenhalle

Go-Anwendungen hosten

Go-Anwendungen sind der sparsamste Fall: ein einzelnes Programm, wenige Megabyte Image, Start in Millisekunden. Größe S reicht fast immer.

Mehrstufiges Dockerfile

FROM golang:1.23 AS build
WORKDIR /src
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 go build -o /app/server ./cmd/server

FROM gcr.io/distroless/static-debian12
COPY --from=build /app/server /server
CMD ["/server"]

Ergebnis: ein Image von wenigen Megabyte, das in Sekunden gebaut und gestartet ist.

Port und Beenden

port := os.Getenv("PORT")
if port == "" { port = "8080" }

srv := &http.Server{Addr: "0.0.0.0:" + port}

// Sauber beenden, wenn die Plattform die Instanz stoppt
go func() {
    c := make(chan os.Signal, 1)
    signal.Notify(c, syscall.SIGTERM)
    <-c
    srv.Shutdown(context.Background())
}()

srv.ListenAndServe()

Weiterlesen