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"]