From 0c2afb62d3cb7861a020b9c17ac36b04e3a218ab Mon Sep 17 00:00:00 2001 From: Anduin Date: Sun, 22 Feb 2026 06:27:05 +0000 Subject: [PATCH] Support ARM multi-arch build in Dockerfile --- Dockerfile | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 9398402..daafeca 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,7 +5,7 @@ ARG FRONT_END_PATH="${CSPROJ_PATH}/wwwroot" # ============================ # Prepare node modules # ============================ -FROM hub.aiursoft.com/node:24-alpine AS npm-env +FROM --platform=$BUILDPLATFORM hub.aiursoft.com/node:24-alpine AS npm-env ARG FRONT_END_PATH WORKDIR /src @@ -20,14 +20,23 @@ RUN npm install --loglevel verbose --force # ============================ # Prepare .NET binaries # ============================ -FROM hub.aiursoft.com/aiursoft/internalimages/dotnet AS build-env +FROM --platform=$BUILDPLATFORM hub.aiursoft.com/aiursoft/internalimages/dotnet AS build-env ARG CSPROJ_PATH ARG PROJ_NAME +ARG TARGETARCH WORKDIR /src # Build COPY . . -RUN dotnet publish ${CSPROJ_PATH}/${PROJ_NAME}.csproj --configuration Release --no-self-contained --runtime linux-x64 --output /app +RUN if [ "$TARGETARCH" = "arm64" ]; then \ + RID="linux-arm64"; \ + elif [ "$TARGETARCH" = "amd64" ]; then \ + RID="linux-x64"; \ + else \ + RID="linux-$TARGETARCH"; \ + fi && \ + echo "Building for arch: $TARGETARCH, using .NET RID: $RID" && \ + dotnet publish ${CSPROJ_PATH}/${PROJ_NAME}.csproj --configuration Release --no-self-contained --runtime $RID --output /app # ============================ # Prepare runtime image