fix: nginx startete nicht — gzip_static stand im falschen Block

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
This commit is contained in:
Daniel Michelberger 2026-09-11 16:35:40 +02:00
parent c39599bb61
commit 53a8bfe29b
2 changed files with 11 additions and 4 deletions

View file

@ -21,10 +21,6 @@ RUN bun run build
# --- Ausliefern ------------------------------------------------------------- # --- Ausliefern -------------------------------------------------------------
FROM nginx:1.27-alpine FROM nginx:1.27-alpine
# Vorkomprimierte Fassungen liegen dank `precompress` im Build daneben
# (.gz/.br). Ohne diese Zeile ignoriert nginx sie und packt jede Antwort neu.
RUN sed -i 's/^}/ gzip_static on;\n}/' /etc/nginx/nginx.conf || true
COPY nginx.conf /etc/nginx/conf.d/default.conf COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=build /app/build /usr/share/nginx/html COPY --from=build /app/build /usr/share/nginx/html

View file

@ -6,6 +6,17 @@ server {
root /usr/share/nginx/html; root /usr/share/nginx/html;
index index.html; index index.html;
# Vorkomprimierte Fassungen liegen dank `precompress` im Build daneben
# (.gz). Ohne diese Zeile ignoriert nginx sie und packt jede Antwort neu.
#
# Sie steht hier im Server-Block und nicht per `sed` in der
# `nginx.conf` des Bildes: Dort war die erste Zeile, die mit `}` beginnt,
# das Ende von `events { }`. `gzip_static` ist dort keine gültige
# Anweisung, nginx verweigerte den Start, und der Container ging sofort
# wieder aus „exited:unhealthy", ohne dass im Deploy-Log etwas
# danebenstand.
gzip_static on;
# Die Seiten sind beim Bauen entstanden und ändern sich nur mit dem # Die Seiten sind beim Bauen entstanden und ändern sich nur mit dem
# nächsten Deployment. Das HTML selbst bleibt trotzdem ungecacht: Sonst # nächsten Deployment. Das HTML selbst bleibt trotzdem ungecacht: Sonst
# zeigt ein Browser den Wegweiser von vorgestern, wenn sich der Text # zeigt ein Browser den Wegweiser von vorgestern, wenn sich der Text