Files
Scoring-System/Dockerfile.allinone
爽哒哒 290be5d5be
All checks were successful
Deploy to Server / deploy (push) Successful in 19s
first commit
2026-03-20 23:30:57 +08:00

68 lines
1.7 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
# 安装前端构建依赖
RUN apk add --no-cache autoconf automake libtool make g++ zlib-dev nasm python3 libpng-dev
WORKDIR /frontend-app
COPY frontend/package.json frontend/package-lock.json* ./
RUN npm install --registry=https://registry.npmmirror.com --prefer-offline
COPY frontend/ ./
ARG VITE_API_URL=/api
ENV VITE_API_URL=${VITE_API_URL}
RUN npm run build
# 阶段二:构建后端及最终镜像
FROM python:3.12-slim
# 设置环境变量
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
ENV PYTHONIOENCODING=utf-8
# 安装系统依赖和 Nginx使用本地缓存
RUN apt-get update && apt-get install -y \
gcc \
libpq-dev \
libffi-dev \
libjpeg-dev \
zlib1g-dev \
nginx \
&& rm -rf /var/lib/apt/lists/* || true
# 配置后端工作目录
WORKDIR /app/backend
# 复制后端 requirements 文件并安装依赖
COPY backend/requirements.txt .
RUN pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir -r requirements.txt
# 复制后端代码
COPY backend/ .
# 创建媒体和静态文件目录
RUN mkdir -p /app/backend/media /app/backend/static
# 从前端构建阶段复制静态文件到 Nginx 目录
COPY --from=frontend-builder /frontend-app/dist /usr/share/nginx/html
# 复制 Nginx 配置文件
COPY nginx-all-in-one.conf /etc/nginx/conf.d/default.conf
# 复制并配置启动脚本
COPY entrypoint.sh /app/entrypoint.sh
RUN chmod +x /app/entrypoint.sh
# 暴露 Nginx 端口
EXPOSE 8890
# 健康检查
HEALTHCHECK --interval=30s --timeout=10s --start-period=10s --retries=3 \
CMD curl -f http://localhost:8890/health || exit 1
# 启动脚本
CMD ["/app/entrypoint.sh"]