23 lines
751 B
Docker
23 lines
751 B
Docker
# builder 阶段:npm 依赖缓存跨构建持久化
|
||
FROM node:20-alpine AS builder
|
||
WORKDIR /app
|
||
COPY package*.json ./
|
||
RUN apk add --no-cache python3 make g++
|
||
RUN --mount=type=cache,target=/root/.npm,id=assets-npm \
|
||
npm ci
|
||
COPY . .
|
||
RUN npm run build
|
||
|
||
# runner 阶段:与 builder 保持一致(Alpine + musl),确保 better-sqlite3 等原生模块兼容
|
||
FROM node:20-alpine AS runner
|
||
RUN apk add --no-cache python3 make g++
|
||
WORKDIR /app
|
||
COPY --from=builder /app/package.json /app/package-lock.json ./
|
||
RUN npm install --omit=dev
|
||
COPY --from=builder /app/.next/standalone ./
|
||
COPY --from=builder /app/.next/static ./.next/static
|
||
COPY --from=builder /app/public ./public
|
||
RUN mkdir -p /app/data /app/uploads
|
||
EXPOSE 3000
|
||
CMD ["node", "server.js"]
|