fix: nginx setup

This commit is contained in:
teier committed 2026-10-28 15:58:01 +01:00
1 parent 400e0408f3
commit 40b6afd85c
5 files changed
+30 -10

No files matched your search

+4 -1
View File
@@ -20,10 +20,13 @@ npm install
npm run dev
```
Docker (nginx, http://localhost:8090):
Docker (nginx, http://localhost:8090/ue1):
```sh
docker compose up -d --build
BASE_PATH=/ docker compose up -d --build # anderer Pfad, hier direkt unter http://localhost:8090/
```
Der Pfad wird beim Build festgelegt (Build-Argument `BASE_PATH`, Standard `/ue1`). Der Reverse Proxy muss den Pfad
unverändert an den Container weiterreichen, also ohne das Präfix zu entfernen.
Die Web-Version verwendet einen anderen Zufallsgenerator als Python: Läufe mit demselben Seed sind reproduzierbar,
stimmen aber nicht mit den Python-Läufen überein.
+4 -1
View File
@@ -1,6 +1,9 @@
services:
web:
build: ./web
build:
context: ./web
args:
BASE_PATH: ${BASE_PATH:-/ue1}
image: waldbrand-simulation
ports:
- "8090:80"
+9 -2
View File
@@ -1,10 +1,17 @@
# Pfad, unter dem die App ausgeliefert wird, z.B. /ue1
ARG BASE_PATH=/
FROM node:26-trixie-slim AS build
ARG BASE_PATH
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci
COPY . .
RUN npm run build
RUN BASE_PATH="$BASE_PATH" npm run build
FROM nginx:mainline-trixie
ARG BASE_PATH
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=build /app/dist /usr/share/nginx/html
# Willkommensseite des Images entfernen
RUN rm -rf /usr/share/nginx/html/*
COPY --from=build /app/dist /usr/share/nginx/html/${BASE_PATH}
+5 -2
View File
@@ -4,6 +4,9 @@ server {
server_name _;
root /usr/share/nginx/html;
# Weiterleitung von /ue1 auf /ue1/ relativ, damit sie hinter einem Reverse Proxy stimmt
absolute_redirect off;
gzip on;
gzip_types text/css application/javascript image/svg+xml;
@@ -12,8 +15,8 @@ server {
add_header Cache-Control "no-cache";
}
# Dateinamen in /assets enthalten einen Hash und ändern sich mit jedem Build
location /assets/ {
# Dateinamen in assets/ enthalten einen Hash und ändern sich mit jedem Build
location ~ /assets/ {
add_header Cache-Control "public, max-age=31536000, immutable";
}
}
+8 -4
View File
@@ -1,8 +1,12 @@
import { defineConfig } from "vite";
import { defineConfig, loadEnv } from "vite";
import react from "@vitejs/plugin-react";
export default defineConfig({
// Relative Pfade, damit die App auch unter einem Unterpfad wie /ue1 läuft
base: "./",
export default defineConfig(({ mode }) => {
// Pfad, unter dem die App ausgeliefert wird, z.B. BASE_PATH=/ue1 → https://sim.teier.net/ue1
// Absolut statt relativ, damit die Assets auch ohne abschließenden Schrägstrich gefunden werden
const pfad = (loadEnv(mode, ".", "").BASE_PATH ?? "").replace(/^\/+|\/+$/g, "");
return {
base: pfad ? `/${pfad}/` : "/",
plugins: [react()],
};
});