fix: use BUILDPLATFORM for native cross-compilation, remove broken cache mounts
Build and frontend stages now use --platform=$BUILDPLATFORM so Maven and Node run natively on the ARM64 CI runner instead of under QEMU emulation. Only the final JRE runtime stage targets amd64. Removed --mount=type=cache which doesn't persist across CI runs with buildx --push; the registry layer cache (--cache-from/--cache-to in CI) handles caching the dependency layer. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
13
Dockerfile
13
Dockerfile
@@ -1,5 +1,7 @@
|
|||||||
# syntax=docker/dockerfile:1
|
# 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
|
ARG REGISTRY_TOKEN
|
||||||
WORKDIR /ui
|
WORKDIR /ui
|
||||||
COPY ui/package.json ui/package-lock.json ui/.npmrc ./
|
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/ .
|
COPY ui/ .
|
||||||
RUN npm run build
|
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
|
WORKDIR /build
|
||||||
COPY .mvn/ .mvn/
|
COPY .mvn/ .mvn/
|
||||||
COPY mvnw pom.xml ./
|
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 src/ src/
|
||||||
COPY --from=frontend /src/main/resources/static/ src/main/resources/static/
|
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
|
FROM eclipse-temurin:21-jre-alpine
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
RUN addgroup -S cameleer && adduser -S cameleer -G cameleer
|
RUN addgroup -S cameleer && adduser -S cameleer -G cameleer
|
||||||
|
|||||||
Reference in New Issue
Block a user