diff --git a/Dockerfile b/Dockerfile index 941dddb..c9b8f29 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,7 @@ # syntax=docker/dockerfile:1 -FROM node:22-alpine AS frontend + +# Frontend: runs natively on build host +FROM --platform=$BUILDPLATFORM node:22-alpine AS frontend ARG REGISTRY_TOKEN WORKDIR /ui COPY ui/package.json ui/package-lock.json ui/.npmrc ./ @@ -7,15 +9,18 @@ RUN echo "//gitea.siegeln.net/api/packages/cameleer/npm/:_authToken=${REGISTRY_T COPY ui/ . RUN npm run build -FROM eclipse-temurin:21-jdk-alpine AS build +# Maven build: runs natively on build host (no QEMU emulation) +FROM --platform=$BUILDPLATFORM eclipse-temurin:21-jdk-alpine AS build WORKDIR /build COPY .mvn/ .mvn/ COPY mvnw pom.xml ./ -RUN --mount=type=cache,target=/root/.m2/repository ./mvnw dependency:go-offline -B +# Cache deps — only re-downloaded when POM changes +RUN ./mvnw dependency:go-offline -B || true COPY src/ src/ COPY --from=frontend /src/main/resources/static/ src/main/resources/static/ -RUN --mount=type=cache,target=/root/.m2/repository ./mvnw package -DskipTests -B +RUN ./mvnw package -DskipTests -B +# Runtime: target platform (amd64) FROM eclipse-temurin:21-jre-alpine WORKDIR /app RUN addgroup -S cameleer && adduser -S cameleer -G cameleer