Spaces:
Paused
Paused
Update Dockerfile
Browse files- Dockerfile +30 -37
Dockerfile
CHANGED
|
@@ -1,54 +1,47 @@
|
|
| 1 |
-
# 1. 基于原版镜像
|
| 2 |
FROM ghcr.io/krau/saveany-bot:latest
|
| 3 |
|
| 4 |
-
#
|
| 5 |
-
# 只有这样,我们下面写的 CMD (运行 Python) 才会生效,否则会被忽略
|
| 6 |
ENTRYPOINT []
|
| 7 |
|
| 8 |
-
#
|
| 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 |
-
#
|
| 16 |
RUN mkdir -p /app/downloads && chmod 777 /app/downloads
|
| 17 |
|
| 18 |
-
#
|
| 19 |
-
#
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
echo '
|
| 25 |
echo '' >> /app/main.py && \
|
| 26 |
-
|
| 27 |
-
echo '
|
| 28 |
-
echo '
|
| 29 |
-
echo '
|
| 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 |
-
|
| 40 |
-
echo '
|
| 41 |
-
echo '
|
| 42 |
-
echo '
|
|
|
|
|
|
|
|
|
|
| 43 |
echo '' >> /app/main.py && \
|
| 44 |
-
|
| 45 |
-
echo '
|
| 46 |
-
echo '
|
| 47 |
-
|
| 48 |
-
echo 'subprocess.run(["./saveany-bot"])' >> /app/main.py
|
| 49 |
|
| 50 |
-
#
|
| 51 |
EXPOSE 7860
|
| 52 |
|
| 53 |
-
#
|
| 54 |
-
CMD ["
|
|
|
|
|
|
|
| 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"]
|