first commit

This commit is contained in:
2026-06-25 17:41:06 +08:00
commit b2f23a933b
370 changed files with 30526 additions and 0 deletions
+63
View File
@@ -0,0 +1,63 @@
FROM node:18.12.0-alpine3.16 AS web
WORKDIR /opt/build
COPY /web ./web
RUN npm install pnpm -g --registry=https://registry.npmmirror.com && cd /opt/build/web && pnpm i --registry=https://registry.npmmirror.com && pnpm run build
# === Python 依赖构建阶段(带编译工具)===
FROM python:3.11-slim-bullseye AS builder
# 切换为中科大源
RUN sed -i "s@http://.*.debian.org@http://mirrors.ustc.edu.cn@g" /etc/apt/sources.list \
&& rm -f /etc/apt/apt.conf.d/docker-clean \
&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& apt-get update \
&& apt-get install -y --no-install-recommends gcc python3-dev \
&& rm -rf /var/lib/apt/lists/*
# 创建虚拟环境
RUN python -m venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH"
# 安装 Python 依赖(使用阿里云源,避免清华限流)
ADD app ./app
COPY requirements.txt ./app
RUN find app -name "requirement*.txt" | xargs -n 1 pip install --no-cache-dir -i https://mirrors.aliyun.com/pypi/simple/ -r
FROM python:3.11-slim-bullseye
WORKDIR /opt/backend-server
# 设置时区 & 安装最小运行依赖
RUN sed -i 's@http://.*.debian.org@http://mirrors.ustc.edu.cn@g' /etc/apt/sources.list \
&& apt-get update \
&& apt-get install -y --no-install-recommends nginx tzdata bash curl \
&& rm -rf /var/lib/apt/lists/* \
&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone
# 从 builder 阶段拷贝已安装的 Python 依赖
COPY --from=builder /opt/venv /opt/venv
# 激活虚拟环境(通过 PATH
ENV PATH="/opt/venv/bin:$PATH"
ENV LANG=zh_CN.UTF-8
# 拷贝应用代码(只拷贝必需目录和文件)
COPY app ./app
COPY static ./static
COPY templates ./templates
COPY run.py .
COPY deploy/entrypoint.sh .
# 拷贝前端产物
COPY --from=web /opt/build/web/dist ./web/dist
# Nginx 配置
COPY deploy/web.conf /etc/nginx/sites-available/web.conf
RUN rm -f /etc/nginx/sites-enabled/default \
&& ln -s /etc/nginx/sites-available/web.conf /etc/nginx/sites-enabled/web.conf; \
python -c "import sys; print(sys.path)"
EXPOSE 80
ENTRYPOINT ["sh", "entrypoint.sh"]