# Photography Portfolio Frontend Dockerfile # 多阶段构建,优化镜像大小和性能 # Stage 1: 构建阶段 FROM node:20-alpine AS builder # 设置工作目录 WORKDIR /app # 安装构建依赖 RUN apk add --no-cache git # 复制package files COPY package*.json ./ COPY bun.lockb ./ # 安装bun (更快的包管理器) RUN npm install -g bun # 安装依赖 RUN bun install --frozen-lockfile # 复制源代码 COPY . . # 构建应用 RUN bun run build # Stage 2: Nginx静态服务器 FROM nginx:1.25-alpine AS production # 安装依赖 RUN apk add --no-cache ca-certificates tzdata curl # 复制静态文件 COPY --from=builder /app/out /usr/share/nginx/html # 复制Nginx配置 COPY nginx.conf /etc/nginx/nginx.conf COPY default.conf /etc/nginx/conf.d/default.conf # 创建日志目录 RUN mkdir -p /var/log/nginx # 设置权限 RUN chown -R nginx:nginx /usr/share/nginx/html && \ chown -R nginx:nginx /var/log/nginx && \ chmod -R 755 /usr/share/nginx/html # 设置时区 ENV TZ=Asia/Shanghai # 暴露端口 EXPOSE 80 # 健康检查 HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ CMD curl -f http://localhost/ || exit 1 # 启动Nginx CMD ["nginx", "-g", "daemon off;"]