22333Misaka commited on
Commit
1d8bbe3
·
verified ·
1 Parent(s): 27bf50c

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +30 -37
Dockerfile CHANGED
@@ -1,54 +1,47 @@
1
- # 1. 基于原版镜像
2
  FROM ghcr.io/krau/saveany-bot:latest
3
 
4
- # 2. 关键步骤:清空原镜像的 ENTRYPOINT
5
- # 只有这样,我们下面写的 CMD (运行 Python) 才会生效,否则会被忽略
6
  ENTRYPOINT []
7
 
8
- # 3. 切换 root 用户安装 Python
9
  USER root
 
 
10
  RUN (apk add --no-cache python3 || (apt-get update && apt-get install -y python3))
11
 
12
- # 4. 设置工作目录
13
  WORKDIR /app
14
 
15
- # 5. 确保下载目录有权限 (Bot 需要写权限)
16
  RUN mkdir -p /app/downloads && chmod 777 /app/downloads
17
 
18
- # 6. 编写启动脚本 main.py
19
- # 这个脚本只做两件事:开启 7860 端口,然后启动 bot
20
- RUN echo 'import threading' > /app/main.py && \
21
- echo 'import http.server' >> /app/main.py && \
22
- echo 'import socketserver' >> /app/main.py && \
23
- echo 'import subprocess' >> /app/main.py && \
24
- echo 'import time' >> /app/main.py && \
25
  echo '' >> /app/main.py && \
26
- echo '# --- 1. 启动保活 Web Server (7860) ---' >> /app/main.py && \
27
- echo 'def start_web():' >> /app/main.py && \
28
- echo ' try:' >> /app/main.py && \
29
- echo ' # 创建一个简单的首页' >> /app/main.py && \
30
- echo ' with open("index.html", "w") as f: f.write("SaveAny Bot is Alive")' >> /app/main.py && \
31
- echo ' Handler = http.server.SimpleHTTPRequestHandler' >> /app/main.py && \
32
- echo ' # 监听 0.0.0.0:7860' >> /app/main.py && \
33
- echo ' with socketserver.TCPServer(("0.0.0.0", 7860), Handler) as httpd:' >> /app/main.py && \
34
- echo ' print("✅ Web server started on port 7860")' >> /app/main.py && \
35
- echo ' httpd.serve_forever()' >> /app/main.py && \
36
- echo ' except Exception as e:' >> /app/main.py && \
37
- echo ' print(f"⚠️ Web server error: {e}")' >> /app/main.py && \
38
  echo '' >> /app/main.py && \
39
- echo '# 在后台线程启动 Web 服务' >> /app/main.py && \
40
- echo 't = threading.Thread(target=start_web)' >> /app/main.py && \
41
- echo 't.daemon = True' >> /app/main.py && \
42
- echo 't.start()' >> /app/main.py && \
 
 
 
43
  echo '' >> /app/main.py && \
44
- echo '# --- 2. 启动原版 Bot ---' >> /app/main.py && \
45
- echo 'print("🚀 Starting SaveAny Bot...")' >> /app/main.py && \
46
- echo 'time.sleep(1)' >> /app/main.py && \
47
- echo '# 直接运行 bot 二进制文件,它会自动读取你的环境变量下载配置' >> /app/main.py && \
48
- echo 'subprocess.run(["./saveany-bot"])' >> /app/main.py
49
 
50
- # 7. 暴露端口
51
  EXPOSE 7860
52
 
53
- # 8. 启动命令
54
- CMD ["python3", "/app/main.py"]
 
 
1
  FROM ghcr.io/krau/saveany-bot:latest
2
 
3
+ # 1. 清空入口点,防止原镜像干扰
 
4
  ENTRYPOINT []
5
 
6
+ # 2. 切换 root 用户
7
  USER root
8
+
9
+ # 3. 安装 Python3 (仅用于开 Web 服务,不用于启动 Bot)
10
  RUN (apk add --no-cache python3 || (apt-get update && apt-get install -y python3))
11
 
 
12
  WORKDIR /app
13
 
14
+ # 4. 确保权限
15
  RUN mkdir -p /app/downloads && chmod 777 /app/downloads
16
 
17
+ # 5. 创建 Shell 启动脚本 (比 Python 启动更稳定,完美继承环境变量)
18
+ # 逻辑:
19
+ # A. 后台启动 Python Web 服务器监听 7860
20
+ # B. 打印一下环境变量是否存在 (方便调试,只打印变量名不打印值)
21
+ # C. 前台启动 saveany-bot
22
+ RUN echo '#!/bin/sh' > /app/start.sh && \
23
+ echo 'echo "--- Starting Wrapper Script ---"' >> /app/start.sh && \
24
  echo '' >> /app/main.py && \
25
+ # --- 启动 Web 服务 (后台) ---
26
+ echo 'echo "1. Starting Fake Web Server on 7860..."' >> /app/start.sh && \
27
+ echo 'nohup python3 -m http.server 7860 > /dev/null 2>&1 &' >> /app/start.sh && \
28
+ echo 'sleep 2' >> /app/start.sh && \
 
 
 
 
 
 
 
 
29
  echo '' >> /app/main.py && \
30
+ # --- 调试:检查环境变量是否真的存在 (只检查 CONFIG_URL CONFIG_TOML) ---
31
+ echo 'echo "2. Checking Env Vars..."' >> /app/start.sh && \
32
+ echo 'if [ -z "$CONFIG_URL" ]; then' >> /app/start.sh && \
33
+ echo ' echo "⚠️ WARNING: CONFIG_URL is empty or not set!"' >> /app/start.sh && \
34
+ echo 'else' >> /app/start.sh && \
35
+ echo ' echo "✅ CONFIG_URL is found (Length: ${#CONFIG_URL})"' >> /app/start.sh && \
36
+ echo 'fi' >> /app/start.sh && \
37
  echo '' >> /app/main.py && \
38
+ # --- 启动 Bot (前台) ---
39
+ echo 'echo "3. Starting Bot..."' >> /app/start.sh && \
40
+ echo './saveany-bot' >> /app/start.sh && \
41
+ chmod +x /app/start.sh
 
42
 
43
+ # 6. 暴露端口
44
  EXPOSE 7860
45
 
46
+ # 7. 使用 sh 执行脚本
47
+ CMD ["/bin/sh", "/app/start.sh"]