NapCatQQ / Dockerfile
kyle-ai's picture
Update Dockerfile
979d15f verified
Raw
History Blame Contribute Delete
1.92 kB
# 使用官方 NapCat 镜像,因为它已经配置好了复杂的 Wine 和 QQ 环境
FROM mlikiowa/napcat-docker:latest
USER root
# 1. 环境变量
ENV TZ=Asia/Shanghai \
PORT=7860
# 2. 注入启动逻辑 (核心:修改官方 entrypoint.sh)
# 我们直接在脚本第二行插入 Python 转发器、配置锁定和权限修复逻辑
RUN sed -i '2i \
# --- 启动纯 Python 转发器 (7860 -> 6099) --- \n\
python3 -c "import socket,threading; \
def p(s,d): \
try: \
while 1: \
data=s.recv(4096); \
if not data:break; \
d.sendall(data) \
except:pass \
finally: \
try:s.close() \
except:pass; \
try:d.close() \
except:pass; \
def f(): \
s=socket.socket(); \
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1); \
s.bind((\"0.0.0.0\",7860)); \
s.listen(20); \
while 1: \
c,_=s.accept(); \
t=socket.socket(); \
try: \
t.connect((\"127.0.0.1\",6099)); \
threading.Thread(target=p,args=(c,t),daemon=True).start(); \
threading.Thread(target=p,args=(t,c),daemon=True).start(); \
except: \
c.sendall(b\"HTTP/1.1 200 OK\\r\\n\\r\\nNapCat Initializing...\"); \
c.close() \
threading.Thread(target=f,daemon=True).start()" & \n\
# --- 强制覆盖 WebUI 端口配置 --- \n\
mkdir -p /app/napcat/config /app/.config/QQ; \n\
echo "{\\"host\\":\\"0.0.0.0\\",\\"port\\":6099,\\"token\\":\\"\\",\\"loginRate\\":2}" > /app/napcat/config/webui.json; \n\
chmod -R 777 /app/napcat/config /app/.config/QQ; \n\
echo "--- [System] HF Space Injector Ready ---"' /app/entrypoint.sh
# 3. 权限大赦:确保 Wine 运行时的用户能读写目录
RUN chmod -R 777 /app/napcat /app/.config
# 4. 工作目录与暴露端口
WORKDIR /app
EXPOSE 7860
# 5. 关键:直接运行官方入口
# 这样能保证 Wine、Xvfb 的 PID 1 信号管理完全由官方逻辑处理,不会报 Runtime Error
ENTRYPOINT ["bash", "/app/entrypoint.sh"]