diff --git a/.claude/settings.local.json b/.claude/settings.local.json index e8d2cee..9ffacb6 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -15,7 +15,12 @@ "Bash(pip show:*)", "Bash(pip3 show:*)", "WebFetch(domain:ai.njcqtechaicoding.com)", - "Bash(CLAUDE_SKILL_DIR=/Users/kid/.claude/skills/web-access node:*)" + "Bash(CLAUDE_SKILL_DIR=/Users/kid/.claude/skills/web-access node:*)", + "Bash(docker build:*)", + "Bash(docker run:*)", + "Bash(docker stop:*)", + "Bash(docker compose:*)", + "Bash(ssh-keyscan 118.195.187.179)" ] } } diff --git a/Dockerfile b/Dockerfile index f947905..60533f9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ FROM node:22-slim AS frontend RUN corepack enable pnpm WORKDIR /app/web COPY web/package.json ./ -RUN pnpm install +RUN pnpm config set registry https://registry.npmmirror.com && pnpm install COPY web/ ./ RUN pnpm run build @@ -10,14 +10,27 @@ FROM node:22-slim AS production RUN corepack enable pnpm WORKDIR /app +# Switch to Aliyun mirror for faster apt downloads in China +RUN sed -i \ + -e 's|http://deb.debian.org|http://mirrors.aliyun.com|g' \ + -e 's|http://security.debian.org|http://mirrors.aliyun.com|g' \ + /etc/apt/sources.list.d/debian.sources + # Build tools needed to compile better-sqlite3 native addon RUN apt-get update && apt-get install -y python3 make g++ && rm -rf /var/lib/apt/lists/* COPY server/package.json ./server/ WORKDIR /app/server -RUN pnpm install --prod +# hoisted mode: flat node_modules so native addons (better-sqlite3) can locate their .node files +# pnpm v10 blocks build scripts by default; onlyBuiltDependencies allows better-sqlite3 to compile, +# and explicit rebuild ensures the native addon is built even if install skipped it. +RUN echo "node-linker=hoisted" > .npmrc && \ + pnpm config set registry https://registry.npmmirror.com && \ + pnpm install --prod && \ + pnpm rebuild better-sqlite3 COPY server/ ./ +RUN mkdir -p data COPY --from=frontend /app/web/dist /app/web/dist EXPOSE 3456 diff --git a/server/package.json b/server/package.json index 2123109..5d5c229 100644 --- a/server/package.json +++ b/server/package.json @@ -16,5 +16,8 @@ "@types/express": "^5.0.0", "@types/node": "^22.10.0", "typescript": "^5.7.0" + }, + "pnpm": { + "onlyBuiltDependencies": ["better-sqlite3"] } }