feat: add BASE_PATH env var for serving UI from a subpath
All checks were successful
CI / cleanup-branch (push) Has been skipped
CI / build (push) Successful in 1m9s
CI / docker (push) Successful in 1m4s
CI / deploy-feature (push) Has been skipped
CI / deploy (push) Successful in 37s

When BASE_PATH is set (e.g., /server/), the entrypoint script injects
a <base> tag and rewrites asset paths in index.html. React Router reads
the basename from the <base> tag. Vite builds with relative paths.
Default / for standalone mode (no changes).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
hsiegeln
2026-04-05 21:04:28 +02:00
parent 3c70313d78
commit 51abe45fba
4 changed files with 32 additions and 1 deletions

21
ui/docker-entrypoint.sh Normal file
View File

@@ -0,0 +1,21 @@
#!/bin/sh
# Inject <base> tag into index.html when BASE_PATH is set.
# This allows the SPA to be served from a subpath (e.g., /server/).
# Default: / (standalone mode, no <base> tag needed).
BASE_PATH="${BASE_PATH:-/}"
if [ "$BASE_PATH" != "/" ]; then
# Ensure BASE_PATH starts and ends with /
BASE_PATH=$(echo "$BASE_PATH" | sed 's#/*$#/#; s#^/*#/#')
INDEX="/usr/share/nginx/html/index.html"
# Inject <base> tag after <head> and rewrite absolute asset paths
sed -i "s|<head>|<head><base href=\"${BASE_PATH}\">|" "$INDEX"
sed -i "s|href=\"/|href=\"${BASE_PATH}|g; s|src=\"/|src=\"${BASE_PATH}|g" "$INDEX"
echo "BASE_PATH set to ${BASE_PATH} — rewrote index.html"
fi
# Delegate to the default nginx entrypoint (handles envsubst for nginx templates)
exec /docker-entrypoint.sh "$@"