deep-risk/Dockerfile
2025-12-14 20:08:27 +08:00

77 lines
1.8 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ===========================================
# 第一阶段:构建前端
# ===========================================
FROM node:20-alpine AS frontend-builder
WORKDIR /app/frontend
# 安装pnpm
RUN npm install -g pnpm
# 复制前端依赖文件
COPY frontend/package.json frontend/pnpm-lock.yaml ./
# 安装依赖
RUN pnpm install --frozen-lockfile
# 复制源代码并构建
COPY frontend/ .
RUN pnpm build
# ===========================================
# 第二阶段:构建后端
# ===========================================
FROM python:3.11-slim AS backend-builder
WORKDIR /app
# 安装系统依赖
RUN apt-get update && apt-get install -y \
gcc \
&& rm -rf /var/lib/apt/lists/*
# 复制并安装Python依赖
COPY backend/requirements.txt .
RUN pip install --no-cache-dir --upgrade pip \
&& pip install --no-cache-dir -r requirements.txt
# ===========================================
# 第三阶段:最终镜像
# ===========================================
FROM python:3.11-slim
# 安装nginx和必要的系统工具
RUN apt-get update && apt-get install -y \
nginx \
bash \
curl \
&& rm -rf /var/lib/apt/lists/*
# 创建应用目录
WORKDIR /app
# 从backend-builder复制Python依赖只复制site-packages不要复制二进制文件
COPY --from=backend-builder /usr/local/lib/python3.11/site-packages /usr/local/lib/python3.11/site-packages
# 复制后端代码
COPY backend/ /app/
# 复制前端构建产物到nginx目录
COPY --from=frontend-builder /app/frontend/dist /usr/share/nginx/html
# 复制nginx配置
COPY nginx.conf /etc/nginx/nginx.conf
# 复制启动脚本
COPY entrypoint.sh /app/entrypoint.sh
RUN chmod +x /app/entrypoint.sh
# 创建必要的目录
RUN mkdir -p /var/cache/nginx /var/log/nginx /etc/nginx/conf.d /app/logs
# 暴露端口
EXPOSE 80
# 设置入口点
ENTRYPOINT ["/app/entrypoint.sh"]