2026-09-21 10:04:27 +08:00
|
|
|
|
# 本地已构建好 frontend/dist,镜像内无需构建工具链
|
|
|
|
|
|
FROM --platform=linux/amd64 node:20-slim
|
2026-09-19 15:00:04 +08:00
|
|
|
|
ENV NODE_ENV=production \
|
|
|
|
|
|
PORT=3000 \
|
2026-09-19 17:00:12 +08:00
|
|
|
|
DATA_DIR=/app/data \
|
|
|
|
|
|
npm_config_registry=https://registry.npmmirror.com
|
2026-09-19 15:00:04 +08:00
|
|
|
|
|
|
|
|
|
|
WORKDIR /app
|
|
|
|
|
|
|
2026-09-21 10:04:27 +08:00
|
|
|
|
# 后端依赖:仅 express + better-sqlite3(node:20 有预编译二进制)
|
2026-09-19 17:00:12 +08:00
|
|
|
|
COPY backend/package.json ./
|
|
|
|
|
|
RUN npm install --production
|
2026-09-19 15:00:04 +08:00
|
|
|
|
|
|
|
|
|
|
COPY backend/ ./
|
2026-09-19 17:00:12 +08:00
|
|
|
|
# 前端产物(本地构建好的 dist)
|
|
|
|
|
|
COPY frontend/dist /frontend/dist
|
2026-09-19 15:00:04 +08:00
|
|
|
|
|
2026-09-19 17:00:12 +08:00
|
|
|
|
# 非 root 运行
|
2026-09-19 15:00:04 +08:00
|
|
|
|
RUN mkdir -p /app/data && chown -R 10000:10000 /app/data
|
|
|
|
|
|
USER 10000:10000
|
|
|
|
|
|
|
|
|
|
|
|
EXPOSE 3000
|
|
|
|
|
|
CMD ["node", "server.js"]
|