File size: 2,916 Bytes
2acd88d 92b87a2 40c0e3b 58ba8e5 92b87a2 455b956 07a11d7 58ba8e5 92b87a2 2acd88d 92b87a2 fbf0a69 92b87a2 455b956 fbf0a69 58ba8e5 2acd88d fbf0a69 2acd88d 40c0e3b 2acd88d fbf0a69 2acd88d fbf0a69 2acd88d fbf0a69 92b87a2 455b956 fbf0a69 58ba8e5 455b956 fbf0a69 92b87a2 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | # 选用精简版 Python 3.10 镜像
FROM python:3.10-slim
# ==========================================
# 新增操作:一键替换 Debian 原生镜像源为阿里云,解决 apt-get 卡死问题
# 注意:新版 Debian 使用 debian.sources,老版使用 sources.list,这里做了兼容处理
# ==========================================
RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list /etc/apt/sources.list.d/debian.sources 2>/dev/null || true && \
sed -i 's/security.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list /etc/apt/sources.list.d/debian.sources 2>/dev/null || true
# 设置环境变量,防止弹窗
ENV DEBIAN_FRONTEND=noninteractive \
TZ=Asia/Shanghai \
PYTHONUNBUFFERED=1
WORKDIR /app
# 生成一个固定的 32 位伪随机字符串作为机器码,你可以随便改,但确定后就不要变了
ARG FIXED_MACHINE_ID="b69c62e25df547a18a23fb854f4cdd48"
USER root
# 写入固定的 machine-id
RUN echo "${FIXED_MACHINE_ID}" > /etc/machine-id && \
mkdir -p /var/lib/dbus && \
cp /etc/machine-id /var/lib/dbus/machine-id
# ==========================================
# 关键修复:在系统内正式创建 UID 1000 的账户
# 这样 screen 的 getpwuid() 就能成功识别身份了
# ==========================================
RUN useradd -m -u 1000 hfuser
# 安装基础环境和 sudo (供 install.sh 内部调用)
RUN apt-get update -y && \
apt-get install -y --no-install-recommends sudo wget curl ca-certificates && \
rm -rf /var/lib/apt/lists/*
# 将仓库所有文件拷入(包括你刚刚上传的 QQ_3.2.31_260710_amd64_01.deb)
COPY . /app/
# ==========================================
# 关键操作:把你上传的安装包重命名为 QQ.deb
# 官方 install.sh 检测到该文件后,会直接跳过网络下载!
# ==========================================
RUN mv /app/QQ_3.2.31_260710_amd64_01.deb /app/QQ.deb || echo "未找到对应deb包,将走默认下载逻辑"
# 赋予官方脚本执行权限并以 root 身份运行它 (此时在 docker 构建期间,默认是 root)
RUN chmod +x /app/install.sh && \
cd /app && ./install.sh
# ==========================================
# 修改操作:为 pip install 加上了阿里云源加速 (-i https://mirrors.aliyun.com/pypi/simple/)
# ==========================================
RUN pip install --no-cache-dir -i https://mirrors.aliyun.com/pypi/simple/ flask requests gradio_client fastapi uvicorn python-multipart websockets
# 将 /app 目录的所有权移交给 UID 1000,防止运行权限报错
RUN chown -R 1000:1000 /app
# 切换到刚刚注册的 1000 号用户身份 (HuggingFace 强制安全要求)
USER 1000
# 赋予我们的业务启动脚本执行权限
RUN chmod +x /app/start.sh
# 暴露接口:7860 是 Web Shell,7667 和 7668 是机器人的 API/Webhook
EXPOSE 7860 7667 7668
# 启动容器
CMD ["/app/start.sh"] |