Files
admin-web/Dockerfile
T

25 lines
691 B
Docker

# 构建 Vue 静态文件
FROM node:22-alpine AS build
WORKDIR /app
# Corepack 随 Node 一起提供,用它固定使用项目的 pnpm。
RUN corepack enable
COPY package.json pnpm-lock.yaml ./
COPY shared/package.json ./shared/package.json
# package.json 和 lock 文件未变化时,这一层会由 Docker 自动复用,
# 因此不会重复下载 pnpm 依赖。
RUN pnpm install --frozen-lockfile
COPY . .
RUN pnpm test && pnpm build
# 运行阶段:仅保留构建产物和 Nginx,不包含源码或 node_modules。
FROM nginx:1.27-alpine
COPY nginx/default.conf.template /etc/nginx/templates/default.conf.template
COPY --from=build /app/dist /usr/share/nginx/html
EXPOSE 80