Download Dockerfile from huanbao/code: direct link, hf CLI and curl.
- Browser
- Download file 4.73 kB
-
https://huggingface.co/spaces/huanbao/code/resolve/main/Dockerfile
- Command line
-
hf download hf://spaces/huanbao/code/Dockerfile
-
curl -L -o Dockerfile https://huggingface.co/spaces/huanbao/code/resolve/main/Dockerfile
4.73 kB
| FROM node:22-bookworm-slim | |
| ENV PIP_BREAK_SYSTEM_PACKAGES=1 | |
| # 1. 安装基础依赖 | |
| RUN apt-get update && apt-get install -y --no-install-recommends \ | |
| python3 \ | |
| python3-pip \ | |
| git \ | |
| curl \ | |
| ca-certificates \ | |
| ripgrep \ | |
| procps \ | |
| tree \ | |
| jq \ | |
| unzip \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # 2. 安装核心 CLI 工具并清理 npm 缓存 | |
| RUN npm install -g @anthropic-ai/claude-code @cloudcli-ai/cloudcli task-master-ai pnpm \ | |
| && npm cache clean --force | |
| # 3. 创建 codex wrapper(readme 实测方案第 3 条): | |
| # 真实二进制为 task-master-ai 内置依赖;当未显式提供 OPENAI_API_KEY 时 | |
| # 自动从 /data/.codex/gw_token 加载网关凭证注入环境,集成端无环境变量也能正常鉴权 | |
| RUN cat << 'EOF' > /usr/local/bin/codex | |
| #!/bin/bash | |
| if [ -z "$OPENAI_API_KEY" ] && [ -r /data/.codex/gw_token ]; then | |
| export OPENAI_API_KEY="$(cat /data/.codex/gw_token)" | |
| fi | |
| exec /usr/local/lib/node_modules/task-master-ai/node_modules/.bin/codex "$@" | |
| EOF | |
| RUN chmod +x /usr/local/bin/codex | |
| # 4. 创建挂载点与配置目录 | |
| RUN mkdir -p /data /home/node/app /home/node/.claude /home/node/.codex /home/node/.cloudcli /home/node/.taskmaster && \ | |
| chown -R 1000:1000 /data /home/node | |
| # 5. 复制入口脚本并设置权限 | |
| COPY entrypoint.sh /entrypoint.sh | |
| RUN chmod +x /entrypoint.sh | |
| ENV HOME=/home/node | |
| ENV HOST=0.0.0.0 | |
| ENV PORT=7860 | |
| ENV SERVER_PORT=7860 | |
| WORKDIR /home/node/app | |
| EXPOSE 7860 | |
| ENTRYPOINT ["/entrypoint.sh"] | |
| CMD ["cloudcli"] | |
| # claudecode、cursor可用版本 | |
| # FROM node:22-bookworm-slim | |
| # ENV PIP_BREAK_SYSTEM_PACKAGES=1 | |
| # # 1. 安装基础依赖 | |
| # RUN apt-get update && apt-get install -y --no-install-recommends \ | |
| # python3 \ | |
| # python3-pip \ | |
| # git \ | |
| # curl \ | |
| # ca-certificates \ | |
| # ripgrep \ | |
| # procps \ | |
| # tree \ | |
| # jq \ | |
| # unzip \ | |
| # && rm -rf /var/lib/apt/lists/* | |
| # # 2. 安装核心 CLI 工具 | |
| # RUN npm install -g @anthropic-ai/claude-code @cloudcli-ai/cloudcli task-master-ai pnpm \ | |
| # && npm cache clean --force | |
| # # 2. 包装 claude 可执行文件,启动时无条件注入沙箱变量 | |
| # RUN CLAUDE_BIN=$(which claude) && \ | |
| # mv "$CLAUDE_BIN" "${CLAUDE_BIN}.real" && \ | |
| # printf '#!/bin/sh\nexport IS_SANDBOX=1\nexport CLAUDE_CODE_BUBBLEWRAP=1\nexec "%s.real" "$@"\n' "$CLAUDE_BIN" > "$CLAUDE_BIN" && \ | |
| # chmod +x "$CLAUDE_BIN" | |
| # # 确保给 node 用户写入正确的 bypass 权限 | |
| # RUN mkdir -p /home/node/.claude && \ | |
| # echo '{"permissions":{"defaultMode":"bypassPermissions"},"skipDangerousModePermissionPrompt":true}' > /home/node/.claude/settings.json && \ | |
| # echo '{"hasCompletedOnboarding":true,"skipDangerousModePermissionPrompt":true}' > /home/node/.claude.json && \ | |
| # chown -R node:node /home/node/.claude /home/node/.claude.json | |
| # # 同时确保全局变量 | |
| # ENV IS_SANDBOX=1 | |
| # ENV CLAUDE_CODE_BUBBLEWRAP=1 | |
| # ENV CLAUDE_CODE_DISABLE_TELEMETRY=1 | |
| # ENV DO_NOT_TRACK=1 | |
| # # 3. 安装官方 Cursor CLI,并使用【软链接】暴露到全局 PATH(保持 index.js 相对路径不破坏) | |
| # RUN curl -fsSL https://cursor.com/install | bash && \ | |
| # chmod -R 755 /root/.local && \ | |
| # if [ -f /root/.local/bin/agent ]; then \ | |
| # ln -sf /root/.local/bin/agent /usr/local/bin/agent && \ | |
| # ln -sf /root/.local/bin/agent /usr/local/bin/cursor-agent && \ | |
| # ln -sf /root/.local/bin/agent /usr/local/bin/cursor; \ | |
| # fi | |
| # # 4. 设置环境变量 | |
| # ENV PATH="/root/.local/bin:/home/node/.local/bin:${PATH}" | |
| # ENV HOME=/home/node | |
| # ENV HOST=0.0.0.0 | |
| # ENV PORT=7860 | |
| # ENV SERVER_PORT=7860 | |
| # # ==================== 【新增:Claude Code 超时放宽】 ==================== | |
| # # API 请求总超时(设为 20 分钟 = 1200000ms) | |
| # ENV API_TIMEOUT_MS=1200000 | |
| # # 禁用/放宽 5分钟(300s) 首字与空闲看门狗(这是导致 5 分钟自动重试的核心原因) | |
| # ENV CLAUDE_STREAM_IDLE_TIMEOUT_MS=1200000 | |
| # ENV CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS=1200000 | |
| # ENV CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS=1200000 | |
| # # Bash 命令执行默认超时(避免执行长任务被 2 分钟打断) | |
| # ENV BASH_DEFAULT_TIMEOUT_MS=1800000 | |
| # ENV BASH_MAX_TIMEOUT_MS=7200000 | |
| # # ===================================================================== | |
| # # 5. 创建挂载点与配置目录,并将所有权赋予 UID 1000 (node 用户) | |
| # RUN mkdir -p /data /home/node/app /home/node/.claude /home/node/.codex /home/node/.cloudcli /home/node/.taskmaster /home/node/.cursor && \ | |
| # chown -R 1000:1000 /data /home/node | |
| # # 6. 复制入口脚本并设置权限 | |
| # COPY entrypoint.sh /entrypoint.sh | |
| # RUN chmod +x /entrypoint.sh | |
| # WORKDIR /data/app | |
| # EXPOSE 7860 | |
| # ENTRYPOINT ["/entrypoint.sh"] | |
| # CMD ["cloudcli"] |