Rust Docker构建报错openssl-sys v0.9.67自定义构建命令运行失败
问题根因
你在本地macOS环境执行的所有排查操作均不生效,原因是Docker构建使用完全隔离的独立容器环境,不会读取本地系统的依赖包、环境变量配置。
从报错日志可以直接定位核心问题:你使用的rust:slim镜像为了减小体积裁剪了大量系统组件,编译openssl的vendored版本时,依赖的perl核心模块FindBin.pm缺失,同时缺少基础C编译工具链。
解决方案
修改你的Dockerfile,在执行Cargo构建前安装必要的系统依赖即可:
FROM rust:slim # 安装编译所需的依赖包 RUN apt-get update && apt-get install -y --no-install-recommends \ pkg-config \ libssl-dev \ perl \ gcc \ libc6-dev \ && rm -rf /var/lib/apt/lists/* COPY . /build-xxx/ RUN cd /build-xxx/ && rustup default nightly && rustup update && cargo build --release LABEL Name=XXX Version=0.0.1 EXPOSE 8000 ENV ROCKET_ENV=stage CMD ["/build-xxx/target/release/xxx"]
可选优化
如果需要减小最终镜像体积,可以使用多阶段构建:第一阶段完成代码编译,第二阶段仅将编译好的二进制文件复制到空白的slim镜像中,无需保留编译依赖。
内容的提问来源于stack exchange,提问作者maridob
相关产品推荐
相关产品推荐

