# 构建阶段：安装依赖并打包 H5
FROM node:18-alpine AS build

WORKDIR /app

COPY package*.json ./
RUN npm install

COPY . .
# 跳过 vue-tsc 类型检查直接打包（与本机已知 vue-tsc + Node 版本兼容问题无关，保证可构建）
RUN npx vite build

# 运行阶段：nginx 托管静态资源并反向代理 /api 到后端
# 锁定 1.28-alpine：测试服务器 Docker 的 seccomp 拦截 pwrite 系统调用，
# 新版 nginx(>=1.31) 用 pwrite 写 pid 文件会被拦导致致命退出；1.28 用 write() 可正常启动。
FROM nginx:1.28-alpine

COPY --from=build /app/dist /usr/share/nginx/html
# 覆盖 nginx 默认主配置（含唯一可写的 pid /tmp/nginx.pid，规避受限容器内 /run 不可写导致反复重启）
COPY nginx.conf /etc/nginx/nginx.conf

EXPOSE 80
