Enhance Dockerfile for better-sqlite3 handling and build verification

- Added steps to remove prebuilds of better-sqlite3 to ensure compatibility with the image's glibc.
- Included verification checks for the existence of the compiled better_sqlite3.node file after rebuild and prune operations.
- Improved overall dependency management in the Docker build process.
This commit is contained in:
2026-08-03 13:42:10 +07:00
parent 26c45e5177
commit 2cc7650ebc
+8 -2
View File
@@ -12,13 +12,19 @@ RUN apt-get update \
WORKDIR /app
COPY package.json package-lock.json ./
# Compile against this image's glibc, then remove prebuilds — better-sqlite3
# always prefers prebuilds/ over build/Release, and published linux-arm64
# prebuilds can require a newer GLIBC than bookworm provides.
RUN npm ci \
&& npm rebuild better-sqlite3 --build-from-source
&& npm rebuild better-sqlite3 --build-from-source \
&& rm -rf node_modules/better-sqlite3/prebuilds \
&& test -f node_modules/better-sqlite3/build/Release/better_sqlite3.node
COPY web ./web
COPY src ./src
RUN npm run build:web \
&& npm prune --omit=dev
&& npm prune --omit=dev \
&& test -f node_modules/better-sqlite3/build/Release/better_sqlite3.node
FROM node:22-bookworm-slim AS runner