From 1e88ff01e7c7e9e441d893c105d59aff1587a9ef Mon Sep 17 00:00:00 2001 From: advplyr Date: Thu, 17 Sep 2026 17:23:34 -0500 Subject: [PATCH] Update Dockerfile fix tsc not work on arm64 --- Dockerfile | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 14005f25c..cbb2ed53c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,7 +9,15 @@ COPY /client /client RUN npm ci && npm cache clean --force RUN npm run generate -### STAGE 1: Build server ### +### STAGE 1: Compile server on the builder CPU (avoid QEMU SIGILL from tsc on arm64) ### +FROM --platform=$BUILDPLATFORM node:20-alpine AS compile-server + +WORKDIR /server +COPY index.js package* tsconfig.server.json /server +COPY /server /server/server +RUN npm ci --include=dev --ignore-scripts && npm run build:server + +### STAGE 2: Install native server deps for the target arch ### FROM node:20-alpine AS build-server ARG NUSQLITE3_DIR @@ -25,8 +33,9 @@ RUN apk add --no-cache --update \ unzip WORKDIR /server -COPY index.js package* tsconfig.server.json /server +COPY index.js package* /server COPY /server /server/server +COPY --from=compile-server /server/dist-server /server/dist-server RUN case "$TARGETPLATFORM" in \ "linux/amd64") \ @@ -38,9 +47,9 @@ RUN case "$TARGETPLATFORM" in \ unzip /tmp/library.zip -d $NUSQLITE3_DIR && \ rm /tmp/library.zip -RUN npm ci --include=dev && npm run build:server && npm prune --omit=dev +RUN npm ci --omit=dev -### STAGE 2: Create minimal runtime image ### +### STAGE 3: Create minimal runtime image ### FROM node:20-alpine ARG NUSQLITE3_DIR