Files
verdaccio-cache-manager/Dockerfile
T

33 lines
973 B
Docker
Raw Normal View History

# ============ 阶段一:构建前端(Vue3 + Vite) ============
FROM node:18-slim AS frontend-build
WORKDIR /build
RUN corepack enable
COPY frontend/package.json frontend/pnpm-lock.yaml ./
RUN pnpm install --frozen-lockfile
COPY frontend/ ./
RUN pnpm build
# ============ 阶段二:运行时(Express + better-sqlite3) ============
FROM node:18-slim
ENV NODE_ENV=production \
PORT=3000 \
DATA_DIR=/app/data
WORKDIR /app
RUN corepack enable
# 后端依赖(better-sqlite3 在 node:18 有预编译二进制,无需编译工具链)
COPY backend/package.json backend/pnpm-lock.yaml ./
RUN pnpm install --prod --frozen-lockfile
COPY backend/ ./
# 前端产物托管在 /frontend/dist(server.js 中 distDir 指向 ../frontend/dist)
COPY --from=frontend-build /build/dist /frontend/dist
# 非 root 运行(§3.7 安全:UID 10000)
RUN mkdir -p /app/data && chown -R 10000:10000 /app/data
USER 10000:10000
EXPOSE 3000
CMD ["node", "server.js"]