# 多阶段构建 - 完整聊天应用Dockerfile # 这个Dockerfile将前端和后端打包到一个容器中(可选方案) # 阶段1: 构建前端 FROM node:18-alpine as frontend-build WORKDIR /app/client # 复制前端package.json COPY client/package*.json ./ # 安装前端依赖 RUN npm ci # 复制前端源代码 COPY client/ ./ # 构建前端 RUN npm run build # 阶段2: 构建后端 FROM node:18-alpine as backend-build WORKDIR /app/server # 复制后端package.json COPY server/package*.json ./ # 安装后端依赖 RUN npm ci --only=production # 复制后端源代码 COPY server/ ./ # 阶段3: 生产环境 FROM node:18-alpine # 安装必要的系统依赖 RUN apk add --no-cache \ nginx \ wget \ curl \ supervisor \ && rm -rf /var/cache/apk/* # 创建应用用户 RUN addgroup -g 1001 -S appuser && \ adduser -S appuser -u 1001 # 设置工作目录 WORKDIR /app # 复制后端文件 COPY --from=backend-build --chown=appuser:appuser /app/server ./server # 复制前端构建文件 COPY --from=frontend-build --chown=appuser:appuser /app/client/dist ./client/dist # 创建nginx配置 RUN mkdir -p /etc/nginx/conf.d COPY --chown=appuser:appuser client/nginx.conf /etc/nginx/conf.d/default.conf # 创建supervisor配置 RUN mkdir -p /etc/supervisor/conf.d COPY --chown=appuser:appuser <