提交qiming-mcp-proxy
This commit is contained in:
79
qiming-mcp-proxy/docker/Dockerfile.document-parser
Normal file
79
qiming-mcp-proxy/docker/Dockerfile.document-parser
Normal 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
|
||||
Reference in New Issue
Block a user