# syntax=docker/dockerfile:1 FROM node:20-alpine AS builder WORKDIR /app # 先复制依赖清单,利用 Docker layer cache COPY package.json yarn.lock ./ RUN yarn install --frozen-lockfile # 再复制源码并构建 COPY . . RUN yarn build FROM nginx:1.27-alpine AS runner WORKDIR /usr/share/nginx/html # 覆盖默认站点配置,启用 SPA 回退与缓存策略 COPY nginx.conf /etc/nginx/conf.d/default.conf # 仅拷贝构建产物,减小镜像体积 COPY --from=builder /app/dist ./ EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]