blob: e2ca05ac1593002609429e5f4d8fcfb82aa8ab0d [file] [log] [blame] [edit]
# 使用官方 Node 镜像作为构建阶段的基础镜像
FROM node:18-alpine AS builder
# 设置工作目录
WORKDIR /app
# 复制依赖相关的文件
COPY package.json package-lock.json* ./
# 安装依赖 (使用 ci 而不是 install 以获得确定性构建)
RUN npm ci
# 复制项目文件
COPY . .
# 构建项目 (假设你使用 vite 或类似工具)
RUN npm run build
# 使用 Node 基础镜像作为运行时
FROM node:18-alpine
# 安装轻量级 HTTP 服务器
RUN npm install -g serve
# 设置工作目录
WORKDIR /app
# 从构建阶段复制构建好的前端文件
COPY --from=builder /app/dist ./dist
# 健康检查 (使用 wget 检查服务可用性)
HEALTHCHECK --interval=30s --timeout=3s \
CMD wget --no-verbose --tries=1 --spider http://localhost:8080 || exit 1
# 暴露 8080 端口
EXPOSE 8080
# 启动 HTTP 服务器 (托管 dist 目录)
CMD ["serve", "-s", "dist", "-l", "tcp://0.0.0.0:8080"]