This repository has been archived on 2026-10-02. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
NeteaseUrl/Dockerfile
T
snowy-yang 52ed8b54fb feat(server): 生产服务器切换 uvicorn(FastAPI + Flask 兜底)
- web/main.py:uvicorn 入口,默认开启 Flask 兜底(未迁移路由回落遗留应用);
  HOST/PORT/LOG_LEVEL 环境变量可配;proxy_headers 按 XFF 取真实 IP(仅信回环);
  server_header=False 抹服务器指纹
- entrypoint.sh:默认 exec web/main.py;WEB_STACK=flask 可应急回退旧入口
- Dockerfile:安装 requirements-fastapi.txt(目标栈)+ requirements.txt(Flask 兜底)

验证(单进程双框架实跑):/health、/(Flask 兜底)与 /api/v1/site/stats(FastAPI)
均 200;Server 头为 NeteaseUrl;ruff/pyright 干净。
2026-09-26 00:35:02 +08:00

27 lines
1.4 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.
# T7:基础镜像升级到 Python 3.12(3.9 已于 2025-10 EOL);alpine + ffmpeg 组合保持不变
FROM python:3.12-alpine3.21
WORKDIR /app
# 使用阿里云 apk 镜像源加速安装 ffmpeg
# 第 97 条(P3):补 tzdata——alpine 无 zoneinfo,ENV TZ=Asia/Shanghai 不装它不生效
# (容器内日志/展示本地时间差 8 小时;计费/会话全部 epoch 秒不受影响)
RUN sed -i 's|dl-cdn.alpinelinux.org|mirrors.aliyun.com|g' /etc/apk/repositories && \
apk add --no-cache tzdata ffmpeg
# 目标栈:FastAPI + uvicorn(Flask 作为迁移期兜底仍随包)
COPY requirements-fastapi.txt requirements-fastapi.txt
COPY requirements.txt requirements.txt
RUN pip3 config set global.index-url https://mirrors.aliyun.com/pypi/simple/ && \
pip3 install --no-cache-dir -r requirements-fastapi.txt && \
pip3 install --no-cache-dir -r requirements.txt
COPY . .
RUN chmod +x /app/entrypoint.sh
# 非 root 运行(容器安全基线)。注:挂载卷 ./downloads ./data 的宿主机目录
# 需对 UID 10001 可写(见 docker-compose.yml 注释),否则下载与数据库写入会失败
RUN adduser -D -u 10001 appuser && chown -R appuser:appuser /app
USER appuser
ENV TZ=Asia/Shanghai
EXPOSE 5000
# 容器健康检查(/health 为轻量本地端点,不触发上游请求)
HEALTHCHECK --interval=60s --timeout=5s --start-period=20s --retries=3 \
CMD wget -qO- http://127.0.0.1:5000/health || exit 1
CMD ["/app/entrypoint.sh"]