Der Container ging sofort wieder aus, „exited:unhealthy", und im Deploy-Log
stand nichts daneben: Gebaut, gestartet, fertig. Ausgegangen ist er, weil
nginx seine Konfiguration nicht las.
Schuld war ein `sed` im Dockerfile, das `gzip_static on;` vor die erste Zeile
schieben sollte, die mit `}` beginnt. Das ist in der nginx.conf des Bildes
aber nicht das Ende von `http { … }`, sondern das von `events { … }` — und
dort ist die Anweisung ungültig.
Sie steht jetzt im eigenen Server-Block, wo sie hingehört, und das `sed` ist
weg. Eine Zeile, die eine fremde Konfigurationsdatei mit einem Muster
umschreibt, ist ohnehin eine Wette darauf, wie die Datei innen aussieht.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LTw6xVYgjMy9AQtfs1Gdyu
27 lines
840 B
Docker
27 lines
840 B
Docker
# Der Wegweiser als Bild: mit Bun gebaut, von nginx ausgeliefert.
|
|
#
|
|
# Kein Node, kein Bun im Betrieb. Übrig sind drei vorgerenderte HTML-Seiten,
|
|
# ein Wappen und etwas CSS — dafür einen JavaScript-Prozess laufen zu lassen,
|
|
# der auf Anfragen wartet, um jedes Mal dieselbe Datei herauszugeben, wäre
|
|
# Beschäftigung ohne Arbeit. nginx tut genau das und sonst nichts.
|
|
|
|
ARG BUN_VERSION=1.3.11
|
|
|
|
# --- Bauen ------------------------------------------------------------------
|
|
FROM oven/bun:${BUN_VERSION}-alpine AS build
|
|
|
|
WORKDIR /app
|
|
|
|
COPY package.json bun.lock ./
|
|
RUN bun install --frozen-lockfile
|
|
|
|
COPY . .
|
|
RUN bun run build
|
|
|
|
# --- Ausliefern -------------------------------------------------------------
|
|
FROM nginx:1.27-alpine
|
|
|
|
COPY nginx.conf /etc/nginx/conf.d/default.conf
|
|
COPY --from=build /app/build /usr/share/nginx/html
|
|
|
|
EXPOSE 80
|