From 6ad53ff5c772355b343465f650b271c495d9b95a Mon Sep 17 00:00:00 2001 From: evolution Date: Wed, 22 Apr 2026 04:31:58 +0800 Subject: [PATCH] fix(ci): Change docker base image from alpine to debian (#1014) * fix(docker): switch Dockerfile.cli from Alpine to Debian slim Alpine uses musl libc which is incompatible with @ladybugdb/core's glibc-compiled native binary, causing ERR_DLOPEN_FAILED on startup. Closes #1008 * fix(docker): resolve build and runtime failures in Dockerfile.cli - Add **/*.tsbuildinfo to .dockerignore and rm -f tsbuildinfo in builder to prevent stale incremental cache from skipping gitnexus-shared compilation - Install libstdc++6 from Debian Trixie for @ladybugdb/core native module compatibility (requires GLIBCXX_3.4.31) * fix(docker): use node:22-trixie-slim for GLIBCXX_3.4.31 support Replaces the manual Trixie libstdc++6 backport with the official node:22-trixie-slim base image, which ships GCC 14 runtime natively. --- .dockerignore | 2 ++ Dockerfile.cli | 9 +++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.dockerignore b/.dockerignore index e09631a0a..4a2866b8e 100644 --- a/.dockerignore +++ b/.dockerignore @@ -14,6 +14,8 @@ coverage .env.local .env.*.local +**/*.tsbuildinfo + .gitnexus gitnexus-web/playwright-report gitnexus-web/test-results diff --git a/Dockerfile.cli b/Dockerfile.cli index d1d4f45a4..c45292e06 100644 --- a/Dockerfile.cli +++ b/Dockerfile.cli @@ -4,17 +4,18 @@ ARG TARGETPLATFORM # ── Builder ──────────────────────────────────────────────────────────── # Native modules (tree-sitter-*, onnxruntime-node, node-gyp builds for # tree-sitter-proto / tree-sitter-swift) require python3 + a C/C++ toolchain. -FROM node:22-alpine AS builder +FROM node:22-trixie-slim AS builder WORKDIR /app # Toolchain for node-gyp / native builds. -RUN apk add --no-cache python3 make g++ git +RUN apt-get update && apt-get install -y --no-install-recommends python3 make g++ git && rm -rf /var/lib/apt/lists/* # Build gitnexus-shared first — gitnexus depends on it as a workspace. COPY gitnexus-shared/package.json gitnexus-shared/package-lock.json ./gitnexus-shared/ RUN npm ci --prefix gitnexus-shared COPY gitnexus-shared ./gitnexus-shared +RUN rm -f gitnexus-shared/tsconfig.tsbuildinfo RUN npm run build --prefix gitnexus-shared # Copy the full gitnexus package before installing — `npm ci` triggers @@ -28,10 +29,10 @@ RUN npm ci --prefix gitnexus RUN npm prune --omit=dev --prefix gitnexus # ── Runtime ──────────────────────────────────────────────────────────── -FROM node:22-alpine AS runtime +FROM node:22-trixie-slim AS runtime # curl for the healthcheck; git so `gitnexus` can clone repos at runtime. -RUN apk add --no-cache curl git +RUN apt-get update && apt-get install -y --no-install-recommends curl git && rm -rf /var/lib/apt/lists/* WORKDIR /app