Routing.kt: GET /api/version (öffentlich, kein Auth) liefert JSON mit versionCode, versionName und apkUrl (aus Request-Host abgeleitet). GET / zeigt HTML-Homepage mit App-Name, Version und QR-Code (clientseitiges JS via qrcode.js CDN) für direkten APK-Download. staticFiles /static bedient APK aus server/data/ (Dateisystem). Neue Dateien: - VersionInfo.kt: Serializable DTO (versionCode, versionName, apkUrl) - VersionRoutes.kt: Route-Definitionen für /api/version und / - VersionEndpointTest.kt: 11 Tests (Endpoint, Homepage, Admin, 404) Geänderte Dateien: - application.conf: appVersionCode + appVersionName (mit Env-Override) - Routing.kt: versionRoutes + staticFiles eingebunden - TestHelpers.kt: testMapConfig um Version-Felder erweitert - Dockerfile: data-Verzeichnis für APK-Hosting angelegt Closes #83
22 lines
598 B
Docker
22 lines
598 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
|
|
|
|
# Create data directory for APK hosting
|
|
RUN mkdir -p /app/data
|
|
|
|
ENV KRISENVORRAT_JWT_SECRET="change-me-to-a-secure-jwt-secret-at-least-32-chars"
|
|
|
|
EXPOSE 8080
|
|
|
|
ENTRYPOINT ["java", "-jar", "server.jar"]
|