Frontend deployen
Das Dreylo-Frontend ist ein SolidJS-Monorepo das mit Vite gebaut und als Docker-Image deployed wird.
Standard-Deployment
# 1. Code ändern in /home/dreylo-web/...
2. Build + Deploy:
cd /home/dreylo-web && docker build --no-cache -t dreylo-web . && cd /home/revolt && docker compose up -d --no-deps web
--no-deps verhindert, dass abhängige Container neugestartet werden.
--no-cache erzwingt vollständigen Rebuild (wichtig bei Code-Änderungen).
Build-Details
Der Build läuft in mehreren Stufen (Multi-Stage Dockerfile):
# Stage 1: Dependencies + Build
FROM node:22 as builder
WORKDIR /build
COPY . .
RUN npm install -g pnpm
RUN pnpm install
RUN pnpm --filter client exec vite build
Stage 2: Nginx serve
FROM nginx:alpine
COPY --from=builder /build/packages/client/dist ./dist
Build-Zeit: ca. 2-4 Minuten.
Häufige Build-Fehler
"Could not resolve import"
# Prüfen ob der Pfad stimmt
grep -rn "from \"../pfad\"" DATEI.tsx
Typischer Fehler: falscher relativer Pfad
Von src/interface/ zu components/ sind es ../../../../components/
TypeScript Fehler
# Detaillierte Fehler anzeigen
cd /home/dreylo-web && docker build --no-cache -t dreylo-web . 2>&1 | grep -E "error|TS[0-9]" | head -20
Build läuft nicht durch
# Vollständige Build-Logs
cd /home/dreylo-web && docker build --no-cache -t dreylo-web . 2>&1 | tail -30
Neue Datei hinzufügen
Wenn du eine neue .ts/.tsx Datei hinzufügst:
- Datei erstellen
- In der importierenden Datei den richtigen Pfad verwenden
- Prüfen ob Export/Import korrekt ist
- Build-Test:
cd /home/dreylo-web && docker build -t dreylo-web . 2>&1 | grep -E "error|✓"
Frontend-Pakete
Das Monorepo hat folgende Pakete:
packages/
├── client/ # Haupt-App (SolidJS)
├── stoat.js/ # Stoat API Client Library
├── ui/ # (via @revolt/ui alias)
└── ...
Paket-Aliases:
@revolt/ui→packages/client/components/ui/@revolt/client→ Client-State@revolt/app→ App-Components@revolt/modal→ Modal-System
Rollback
Falls ein Build schief läuft und der alte Container noch läuft:
# Letztes funktionierendes Image finden
docker images | grep dreylo-web
Altes Image direkt deployen
docker tag OLD_IMAGE_HASH dreylo-web:latest
docker compose up -d --no-deps web