# 构建阶段 FROM node:18-alpine AS builder ARG HTTP_PROXY ARG HTTPS_PROXY ARG NO_PROXY ENV http_proxy ${HTTP_PROXY} \ https_proxy ${HTTPS_PROXY} \ no_proxy ${NO_PROXY} WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . RUN npm run build # 运行阶段 FROM node:18-alpine AS runtime WORKDIR /app # 复制预构建的文件 COPY --from=builder /app/dist ./dist COPY --from=builder /app/node_modules ./node_modules COPY --from=builder /app/package.json ./ COPY health-check.js ./ # 创建用户并设置权限 RUN addgroup -g 1001 -S nodejs && \ adduser -S backend -u 1001 -G nodejs && \ chown -R backend:nodejs /app USER backend EXPOSE 3001 # 使用Node.js脚本做健康检查(替代curl) HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ CMD node health-check.js CMD ["node", "dist/server.js"]