Spaces:
Paused
Paused
Update Dockerfile
Browse files- Dockerfile +5 -42
Dockerfile
CHANGED
|
@@ -1,51 +1,14 @@
|
|
| 1 |
FROM node:20-alpine
|
| 2 |
-
|
| 3 |
-
# 1. 安装 Git (用于拉取代码)
|
| 4 |
RUN apk add --no-cache git
|
| 5 |
-
|
| 6 |
-
# 2. 设置工作目录
|
| 7 |
WORKDIR /app
|
| 8 |
-
|
| 9 |
-
# 3. 拉取你的 GitHub 代码
|
| 10 |
RUN git clone https://github.com/hmtxj/AIClient-2-API.git .
|
| 11 |
-
|
| 12 |
-
# 4. 安装依赖
|
| 13 |
RUN npm install
|
| 14 |
-
|
| 15 |
-
# 5. 创建启动脚本 (这是核心魔法)
|
| 16 |
-
# 这个脚本会自动处理 /configs 目录的持久化
|
| 17 |
-
RUN echo '#!/bin/sh' > /app/start.sh && \
|
| 18 |
-
echo 'set -e' >> /app/start.sh && \
|
| 19 |
-
echo 'echo "Starting deployment script..."' >> /app/start.sh && \
|
| 20 |
-
echo '# 检查是否有持久化存储挂载在 /data' >> /app/start.sh && \
|
| 21 |
-
echo 'if [ -d "/data" ]; then' >> /app/start.sh && \
|
| 22 |
-
echo ' echo "Persistent storage /data detected."' >> /app/start.sh && \
|
| 23 |
-
echo ' mkdir -p /data/configs' >> /app/start.sh && \
|
| 24 |
-
echo ' mkdir -p /data/logs' >> /app/start.sh && \
|
| 25 |
-
echo ' # 如果持久化目录是空的,把默认配置复制进去' >> /app/start.sh && \
|
| 26 |
-
echo ' if [ -z "$(ls -A /data/configs)" ]; then' >> /app/start.sh && \
|
| 27 |
-
echo ' echo "Initializing persistent configs..."' >> /app/start.sh && \
|
| 28 |
-
echo ' cp -r /app/configs/* /data/configs/' >> /app/start.sh && \
|
| 29 |
-
echo ' fi' >> /app/start.sh && \
|
| 30 |
-
echo ' # 删除原始 configs 目录,建立软链接指向持久化目录' >> /app/start.sh && \
|
| 31 |
-
echo ' rm -rf /app/configs' >> /app/start.sh && \
|
| 32 |
-
echo ' ln -s /data/configs /app/configs' >> /app/start.sh && \
|
| 33 |
-
echo ' rm -rf /app/logs' >> /app/start.sh && \
|
| 34 |
-
echo ' ln -s /data/logs /app/logs' >> /app/start.sh && \
|
| 35 |
-
echo 'else' >> /app/start.sh && \
|
| 36 |
-
echo ' echo "WARNING: No persistent storage found. Configs will be lost on restart."' >> /app/start.sh && \
|
| 37 |
-
echo 'fi' >> /app/start.sh && \
|
| 38 |
-
echo '# 启动应用,并注入环境变量' >> /app/start.sh && \
|
| 39 |
-
echo 'exec node src/core/master.js --port 7860 --host 0.0.0.0 --api-key ${API_KEY:-123456}' >> /app/start.sh && \
|
| 40 |
-
chmod +x /app/start.sh
|
| 41 |
-
|
| 42 |
-
# 6. 设置权限 (Hugging Face 强制要求非 Root 用户)
|
| 43 |
RUN adduser -D -u 1000 user && \
|
|
|
|
| 44 |
chown -R user:user /app
|
| 45 |
-
|
| 46 |
-
# 7. 切换用户并暴露端口
|
| 47 |
USER user
|
| 48 |
EXPOSE 7860
|
| 49 |
-
|
| 50 |
-
# 8. 启动
|
| 51 |
-
CMD ["/app/start.sh"]
|
|
|
|
| 1 |
FROM node:20-alpine
|
| 2 |
+
# 安装 git
|
|
|
|
| 3 |
RUN apk add --no-cache git
|
|
|
|
|
|
|
| 4 |
WORKDIR /app
|
| 5 |
+
# 强制拉取最新代码
|
|
|
|
| 6 |
RUN git clone https://github.com/hmtxj/AIClient-2-API.git .
|
|
|
|
|
|
|
| 7 |
RUN npm install
|
| 8 |
+
# 创建用户 & 权限 (重要)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9 |
RUN adduser -D -u 1000 user && \
|
| 10 |
+
mkdir -p logs configs && \
|
| 11 |
chown -R user:user /app
|
|
|
|
|
|
|
| 12 |
USER user
|
| 13 |
EXPOSE 7860
|
| 14 |
+
CMD ["node", "src/core/master.js", "--port", "7860", "--host", "0.0.0.0"]
|
|
|
|
|
|