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

Eigenes Dockerfile verwenden

Liegt ein Dockerfile im Repository, hat es Vorrang vor der automatischen Erkennung. Damit läuft jede Sprache, die sich in einen Container packen lässt.

Was das Dockerfile mitbringen muss

  • Die App muss auf dem Port aus $PORT lauschen und an 0.0.0.0 gebunden sein.
  • Der Startbefehl steht in CMD oder ENTRYPOINT.
  • Der Container läuft ohne root-Rechte. Schreibzugriff gibt es in /tmp und im dauerhaften Speicher unter /daten.

Beispiel: Go

FROM golang:1.23 AS build
WORKDIR /src
COPY . .
RUN go build -o /app/server ./cmd/server

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

Im Programm dann den Port aus der Umgebung lesen:

port := os.Getenv("PORT")
http.ListenAndServe("0.0.0.0:"+port, nil)

Beispiel: PHP mit Laravel

FROM php:8.3-cli
RUN docker-php-ext-install pdo pdo_mysql
WORKDIR /app
COPY . .
CMD php artisan serve --host=0.0.0.0 --port=$PORT

Häufige Fragen

Werden Build-Argumente unterstützt?

Die Umgebungsvariablen der App stehen beim Build zur Verfügung. Geheimnisse gehören trotzdem in die Laufzeitumgebung, nicht ins Image.

Kann ich ein fertiges Image aus einer Registry nutzen?

Derzeit wird aus dem Repository gebaut. Ein Dockerfile mit einer einzigen FROM-Zeile erreicht praktisch dasselbe.

Weiterlesen