### chore: aktualisiere Docker-Build und CI für Web-Assets
Some checks failed
Desktop CI — Headless Tests & Build / Compose Desktop — Tests (headless) & Build (push) Failing after 55s
Build and Publish Docker Images / build-and-push (., backend/services/mail/Dockerfile, mail-service, mail-service) (push) Successful in 5m56s
Build and Publish Docker Images / build-and-push (., config/docker/caddy/web-app/Dockerfile, web-app, web-app) (push) Failing after 3m57s

- **Dockerfile:** Passe COPY-Pfad für Web-Assets auf neuen CI-Workflow an.
- **CI:** Füge Schritt zum Staging von Web-Assets vor dem Docker-Build hinzu.
This commit is contained in:
Stefan Mogeritsch 2026-04-23 00:02:30 +02:00
parent 1caefe6603
commit f296a076dc
2 changed files with 22 additions and 2 deletions

View File

@ -81,6 +81,22 @@ jobs:
--max-workers=4 \
-Dkotlin.daemon.jvm.options="-Xmx4g"
- name: Stage Web Assets for Docker build
if: matrix.service == 'web-app'
run: |
set -e
DIST_DIR="frontend/shells/meldestelle-web/build/dist/wasmJs/productionExecutable"
if [ ! -d "$DIST_DIR" ]; then
echo "❌ Erwarteter Build-Ordner nicht gefunden: $DIST_DIR" >&2
echo "Hinweis: Prüfe Gradle-Ausgabe und Modulpfad (:frontend:shells:meldestelle-web)" >&2
ls -la frontend/shells/meldestelle-web/build || true
exit 1
fi
mkdir -p config/docker/caddy/web-app/_site
rsync -a --delete "$DIST_DIR/" config/docker/caddy/web-app/_site/
echo "✓ Assets gestaged: config/docker/caddy/web-app/_site"
ls -la config/docker/caddy/web-app/_site | sed -n '1,200p'
# Pangolin-Bypass: Credentials direkt in config.json schreiben.
# Kein "docker login" → kein Daemon-Ping → kein HTTPS-Fehler.
# BuildKit liest ~/.docker/config.json und verwendet diese Credentials beim Push.

View File

@ -32,8 +32,12 @@ COPY config/docker/caddy/web-app/config.json /usr/share/caddy/config.json.tmpl
RUN chmod +x /entrypoint.sh
# Copy Pre-built Static Assets from Host (WasmJs)
# NOTE: You must run `./gradlew :frontend:shells:meldestelle-web:wasmJsBrowserDistribution -Pproduction=true` locally first!
COPY frontend/shells/meldestelle-web/build/dist/wasmJs/productionExecutable/ /usr/share/caddy/
# NOTE: CI (docker-publish.yaml) kopiert die gebauten Artefakte nach
# config/docker/caddy/web-app/_site/ bevor dieses Image gebaut wird.
# Lokal musst du vorher bauen:
# ./gradlew :frontend:shells:meldestelle-web:wasmJsBrowserDistribution -Pproduction=true
# und die Dateien ebenfalls nach _site/ kopieren.
COPY config/docker/caddy/web-app/_site/ /usr/share/caddy/
# index.html wird als Template abgelegt; der Entrypoint erzeugt daraus zur Laufzeit die finale index.html
RUN mv /usr/share/caddy/index.html /usr/share/caddy/index.html.tmpl