diff --git a/package.json b/package.json
index 3c231c714d57fa652ec147b4cacb016ae716a95e..0a109fab0ffd3f910dac2de8e4a277222edff1b8 100644
--- a/package.json
+++ b/package.json
@@ -364,6 +364,10 @@
       "mv",
       "safe-json-stringify"
     ],
+    "onlyBuiltDependencies": [
+      "better-sqlite3",
+      "re2"
+    ],
     "overrides": {
       "@semantic-release/github>@octokit/plugin-paginate-rest": "11.4.1"
     }
diff --git a/tools/docker/Dockerfile b/tools/docker/Dockerfile
index 90d5b694069d424b281278377daa4a5a85ed8aa1..26c9efbae5c06a0c6b7e5a9ab3236ac82f1bda54 100644
--- a/tools/docker/Dockerfile
+++ b/tools/docker/Dockerfile
@@ -51,30 +51,32 @@ RUN set -ex; \
   cp ${temp_dir}/bin/node ./node; \
   true
 
-# fetch npm packages
+# prepare pnpm env
 ENV CI=1 npm_config_modules_cache_max_age=0 \
   npm_config_loglevel=info
 
-
 # replace `amd64` with `x64` for `node`
 ENV ARCH=${TARGETARCH/amd64/x64}
-
-COPY --link pnpm-lock.yaml ./
-
 # set `npm_config_arch` for `prebuild-install`
 # set `npm_config_platform_arch` for `install-artifact-from-github`
 ENV npm_config_arch=${ARCH} npm_config_platform_arch=${ARCH}
 
+COPY --link pnpm-lock.yaml ./
+
 # only fetch deps from lockfile https://pnpm.io/cli/fetch
 RUN set -ex; \
-  pnpm fetch --prod; \
+  pnpm fetch --prod --ignore-scripts; \
   true
 
 COPY --link . ./
 
+# disable prepare script
+RUN sed -i -e "s/run-s 'prepare:\*'/true/" package.json
+
 # install npm packages
 RUN set -ex; \
-  pnpm install --prod --offline --ignore-scripts; \
+  pnpm install --prod --offline; \
+  pnpm rebuild; \
   true
 
 # --------------------------------------