You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Docker容器中安装Azure C++ SDK并解决CMake找不到包问题

解决Azure C++ Blob SDK简易安装&容器适配方案

前置依赖安装(CentOS8环境/容器通用)

首先安装编译所需的系统基础依赖:

RUN dnf install -y gcc-c++ cmake libcurl-devel libuuid-devel openssl-devel && \
    dnf clean all

极简源码编译安装流程(无需vcpkg,和常用编译流程完全一致)

以下Dockerfile片段完全匹配你习惯的git克隆+cmake编译安装逻辑,额外做了体积优化处理:

# 1. 安装基础依赖库azure-core-cpp
RUN git clone https://github.com/Azure/azure-sdk-for-cpp.git --depth 1 --branch Azure.Core_1.10.3 /tmp/azure-core && \
    cd /tmp/azure-core && mkdir -p build && cd build && \
    cmake .. -DBUILD_TRANSPORT_CURL=ON -DBUILD_TESTING=OFF && \
    cmake --build . --target install -j$(nproc) && \
    rm -rf /tmp/azure-core

# 2. 安装存储服务公共依赖库azure-storage-common-cpp
RUN git clone https://github.com/Azure/azure-sdk-for-cpp.git --depth 1 --branch Azure.Storage.Common_12.5.0 /tmp/azure-storage-common && \
    cd /tmp/azure-storage-common/sdk/storage/azure-storage-common && mkdir -p build && cd build && \
    cmake .. -DBUILD_TESTING=OFF && \
    cmake --build . --target install -j$(nproc) && \
    rm -rf /tmp/azure-storage-common

# 3. 安装目标Blob SDK库azure-storage-blobs-cpp
RUN git clone https://github.com/Azure/azure-sdk-for-cpp.git --depth 1 --branch Azure.Storage.Blobs_12.10.0 /tmp/azure-storage-blobs && \
    cd /tmp/azure-storage-blobs/sdk/storage/azure-storage-blobs && mkdir -p build && cd build && \
    cmake .. -DBUILD_TESTING=OFF && \
    cmake --build . --target install -j$(nproc) && \
    rm -rf /tmp/azure-storage-blobs

# 刷新动态库缓存
RUN ldconfig

核心优化点:

  • 拉取代码时加--depth 1参数做浅克隆,减少代码拉取体积
  • 编译时关闭BUILD_TESTING参数,跳过测试用例编译,大幅降低编译耗时和临时文件体积
  • 每个库编译安装完成后直接删除源码目录,避免残留文件占用存储空间

容器体积进一步优化方案

如果需要更小的容器体积,采用多阶段构建即可:

  • 第一阶段使用带编译环境的基础镜像完成所有SDK的编译安装
  • 第二阶段使用最小运行时镜像(比如centos:8-minimal),仅拷贝第一阶段编译好的头文件、动态库到运行镜像中,最终镜像体积可以控制在300M以内,比单阶段构建减少至少1G的编译环境占用。

业务CMake项目适配

你的业务代码CMakeLists.txt不需要添加vcpkg的toolchain参数,直接添加以下配置即可正常调用SDK:

find_package(azure-storage-blobs-cpp REQUIRED)
target_link_libraries(你的业务二进制名 PRIVATE Azure::azure-storage-blobs)

正常编译即可找到对应库,不会再出现找不到包的错误。

内容的提问来源于stack exchange,提问作者Minathe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 02:45:04