提交qiming-mcp-proxy

This commit is contained in:
Codex
2026-06-01 13:03:20 +08:00
parent 9e9486b7c2
commit afb3d9f4e6
394 changed files with 124494 additions and 0 deletions

View File

@@ -0,0 +1,79 @@
# 多阶段构建 Dockerfile用于跨平台编译 document-parser 和 voice-cli
FROM rust:1.90 AS builder
# 安装必要的构建依赖
RUN apt-get update && apt-get install -y \
pkg-config \
libssl-dev \
openssl \
ca-certificates \
# C/C++ 开发环境
build-essential \
libc6-dev \
gcc \
g++ \
# LLVM/Clang (bindgen 需要)
libclang-dev \
clang \
# CMake (whisper-rs-sys 需要)
cmake \
make \
&& rm -rf /var/lib/apt/lists/*
# 验证基础环境
RUN echo "=== Verifying build environment ===" && \
gcc --version && \
cmake --version && \
echo "=== Build environment verified ==="
# 设置工作目录
WORKDIR /app
# 添加 glibc 目标和 rustfmt 组件
RUN rustup target add x86_64-unknown-linux-gnu
RUN rustup target add aarch64-unknown-linux-gnu
RUN rustup component add rustfmt
# 复制整个项目
COPY . .
# 设置 libclang 路径 (bindgen 需要)
ENV LIBCLANG_PATH=/usr/lib/llvm-14/lib
# 根据目标架构编译所有包
ARG TARGETARCH
RUN echo "=== Starting build process ==="
RUN echo "Target architecture: $TARGETARCH"
RUN if [ "$TARGETARCH" = "arm64" ]; then \
echo "Building for ARM64 architecture..." && \
apt-get update && apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu && \
else \
echo "Building for x86_64 architecture..." && \
fi
RUN cargo build --release
# 复制编译好的二进制文件到指定位置
RUN mkdir -p /output && \
if [ "$TARGETARCH" = "arm64" ]; then \
cp target/aarch64-unknown-linux-gnu/release/document-parser /output/ && \
cp target/aarch64-unknown-linux-gnu/release/voice-cli /output/; \
else \
cp target/x86_64-unknown-linux-gnu/release/document-parser /output/ && \
cp target/x86_64-unknown-linux-gnu/release/voice-cli /output/; \
fi
# 最终阶段 - 创建最小运行时镜像document-parser
FROM scratch AS runtime
COPY --from=builder /output/document-parser /document-parser
ENTRYPOINT ["/document-parser"]
# 最终阶段 - 创建最小运行时镜像voice-cli
FROM scratch AS runtime-voice-cli
COPY --from=builder /output/voice-cli /voice-cli
ENTRYPOINT ["/voice-cli"]
# 导出阶段 - 用于提取所有二进制文件
FROM scratch AS export
COPY --from=builder /output/document-parser /document-parser
COPY --from=builder /output/voice-cli /voice-cli