- Users-Tabelle mit bcrypt-Passwort-Hash
- JWT-Auth (Access + Refresh Token) ersetzt API-Key
- POST /api/auth/login + /api/auth/refresh
- Admin-Endpoints: GET/POST/DELETE/PUT /api/admin/users
- Seed-Admin beim Start (KRISENVORRAT_ADMIN_PASSWORD)
- Inventar-Endpoints user-spezifisch (userId aus JWT)
- PATCH /api/inventory/items/{id} fuer Einzel-Updates
- WebSocket /ws/sync mit Push-Events (inventoryUpdated, fullSyncRequired)
- Minimale Admin-Web-UI unter /admin/ (XSS-sicher)
- Categories/Locations: Surrogate-PK fuer User-Isolation
- Alle Server-Tests gruen (43 Tests)
19 lines
534 B
Docker
19 lines
534 B
Docker
# Stage 1: Build the fat JAR
|
|
FROM gradle:8.11.1-jdk21 AS builder
|
|
WORKDIR /app
|
|
COPY gradle/ gradle/
|
|
COPY gradlew gradlew.bat build.gradle.kts settings.gradle.kts gradle.properties ./
|
|
COPY shared/ shared/
|
|
COPY server/ server/
|
|
RUN gradle :server:buildFatJar --no-daemon
|
|
|
|
# Stage 2: Run
|
|
FROM eclipse-temurin:21-jre-alpine
|
|
WORKDIR /app
|
|
COPY --from=builder /app/server/build/libs/server.jar server.jar
|
|
|
|
ENV KRISENVORRAT_JWT_SECRET="change-me-to-a-secure-jwt-secret-at-least-32-chars"
|
|
|
|
EXPOSE 8080
|
|
|
|
ENTRYPOINT ["java", "-jar", "server.jar"]
|