添加qiming-rcoder模块
This commit is contained in:
128
qiming-rcoder/docker/rcoder-master/Dockerfile
Normal file
128
qiming-rcoder/docker/rcoder-master/Dockerfile
Normal file
@@ -0,0 +1,128 @@
|
||||
# ============================================================================
|
||||
# 最终镜像 Dockerfile - master-rcoder
|
||||
# ============================================================================
|
||||
# 此 Dockerfile 使用多阶段构建:
|
||||
# 1. 第一阶段:在 node:22 中构建 Rust 项目
|
||||
# 2. 第二阶段:基于 master-rcoder-base 基础镜像运行
|
||||
# ============================================================================
|
||||
|
||||
# 全局 ARG 声明(必须在第一个 FROM 之前,才能在后续 FROM 中使用)
|
||||
ARG BASE_IMAGE=master-rcoder-base:latest
|
||||
|
||||
# ============================================================================
|
||||
# 第一阶段:构建 Rust 项目
|
||||
# ============================================================================
|
||||
FROM node:22 AS rust-builder
|
||||
|
||||
# 设置环境变量避免交互式提示
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV TZ=Asia/Shanghai
|
||||
|
||||
# 设置 ARG TARGETARCH
|
||||
ARG TARGETARCH
|
||||
|
||||
# 设置工作目录
|
||||
WORKDIR /build
|
||||
|
||||
# 使用 LinuxMirrors 一键配置阿里云镜像源
|
||||
# 参考: https://github.com/SuperManito/LinuxMirrors
|
||||
RUN curl -sSL https://linuxmirrors.cn/main.sh | bash -s -- \
|
||||
--source mirrors.aliyun.com \
|
||||
--protocol https \
|
||||
--use-intranet-source false \
|
||||
--install-epel false \
|
||||
--backup false \
|
||||
--upgrade-software false \
|
||||
--clean-cache true \
|
||||
--ignore-backup-tips
|
||||
|
||||
# 安装构建依赖(包括cmake和protoc)
|
||||
RUN apt-get update && apt-get install -y \
|
||||
build-essential \
|
||||
cmake \
|
||||
pkg-config \
|
||||
protobuf-compiler \
|
||||
libprotobuf-dev \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# 安装 Rust
|
||||
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y && \
|
||||
. /root/.cargo/env && cargo --version
|
||||
ENV PATH="/root/.cargo/bin:${PATH}"
|
||||
|
||||
# 复制整个项目源代码(通过 .dockerignore 排除不需要的文件)
|
||||
COPY . .
|
||||
|
||||
# 🔧 支持 CARGO_FLAGS 参数,允许外部传递 feature flags
|
||||
ARG CARGO_FLAGS=""
|
||||
RUN echo "🔧 Cargo flags: ${CARGO_FLAGS}" && \
|
||||
cargo build --release --bin rcoder --bin agent_runner ${CARGO_FLAGS}
|
||||
|
||||
# ============================================================================
|
||||
# 第二阶段:运行阶段(基于基础镜像)
|
||||
# ============================================================================
|
||||
# 重新声明 ARG(FROM 之后需要重新声明才能使用)
|
||||
ARG BASE_IMAGE
|
||||
FROM ${BASE_IMAGE}
|
||||
|
||||
# 设置工作目录
|
||||
WORKDIR /app
|
||||
|
||||
# 安装 git(用于 nuwaxcode 源码安装)
|
||||
RUN apt-get update && apt-get install -y \
|
||||
git \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# 复制 .npmrc 文件
|
||||
COPY docker/rcoder-master/.npmrc /root/.npmrc
|
||||
|
||||
# 创建 bin 目录并复制构建产物
|
||||
RUN mkdir -p /app/bin
|
||||
COPY --from=rust-builder /build/target/release/rcoder /app/bin/rcoder
|
||||
COPY --from=rust-builder /build/target/release/agent_runner /app/bin/agent_runner
|
||||
|
||||
# 只有在二进制文件存在时才复制(避免feature构建时的错误)
|
||||
RUN if [ -f /build/target/release/codex-acp-agent ]; then \
|
||||
cp /build/target/release/codex-acp-agent /app/bin/codex-acp-agent; \
|
||||
fi
|
||||
|
||||
# 设置执行权限
|
||||
RUN chmod +x /app/bin/rcoder /app/bin/agent_runner
|
||||
|
||||
|
||||
|
||||
# 使用构建参数破坏缓存(每次构建都获取最新版本的工具)
|
||||
ARG CACHEBUST=1
|
||||
|
||||
# agent install
|
||||
RUN echo "Cache bust: ${CACHEBUST}" && npm install -g claude-code-acp-ts@latest
|
||||
|
||||
# # 安装 claude-code-acp-ts(从源码构建,用于测试)
|
||||
# # 使用 npm pack + npm install -g <tarball> 确保复制文件而非 symlink
|
||||
# RUN echo "Cache bust: ${CACHEBUST}" && \
|
||||
# rm -rf /tmp/claude-code-acp-ts && \
|
||||
# git clone -b feat/claude-code-acp-ts https://github.com/nuwax-ai/claude-code-acp-ts.git /tmp/claude-code-acp-ts && \
|
||||
# cd /tmp/claude-code-acp-ts && npm install && npm run build && \
|
||||
# npm pack . && \
|
||||
# npm install -g ./claude-code-acp-ts-*.tgz && \
|
||||
# echo "验证 claude-code-acp-ts 安装..." && \
|
||||
# (which claude-code-acp-ts > /dev/null 2>&1 && echo "✅ claude-code-acp-ts 安装验证通过") || (echo "❌ claude-code-acp-ts 未正确安装" && exit 1)
|
||||
|
||||
|
||||
# 安装 nuwaxcode(频繁更新的工具,放在最终镜像以加快构建)
|
||||
# 使用 CACHEBUST 变量触发缓存失效
|
||||
RUN echo "Cache bust: ${CACHEBUST}" && npm i -g nuwaxcode@latest
|
||||
|
||||
# 安装 nuwax-file-server(文件服务器)
|
||||
RUN echo "Cache bust: ${CACHEBUST}" && npm i -g nuwax-file-server@latest
|
||||
|
||||
# 配置 nuwaxcode - 禁用 websearch, webfetch 和 question 权限
|
||||
RUN mkdir -p /root/.config/opencode && \
|
||||
echo '{\n "permission": {\n "websearch": "deny",\n "webfetch": "deny",\n "question": "deny"\n }\n}' > /root/.config/opencode/opencode.json
|
||||
|
||||
|
||||
|
||||
# 暴露端口
|
||||
EXPOSE 8086
|
||||
EXPOSE 60000
|
||||
EXPOSE 80
|
||||
Reference in New Issue
Block a user