ccc / Dockerfile
Selinore's picture
Update Dockerfile
0b447d4 verified
Raw History Blame Contribute Delete
1.51 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"]