【问题标题】:Installing Azure SDK for C++ in a docker container在 docker 容器中安装 Azure SDK for C++
【发布时间】:2021-10-28 15:17:16
【问题描述】:

我想知道如何在 docker 容器中安装 azure c++ sdk。我需要它来下载和处理 Azure blob 存储中的文件的 C++ 服务。个人感觉容器会变得太大,而且安装也比流行的复杂一些:

...
// Docker file
        
RUN git clone https://github.com/blah/bla.git \
    && cd blah && mkdir -p build \
    && cd build \
    && cmake .. \
    && cmake --build . --target install 
...

我已经阅读了安装指南herehere,但是在我的开发环境(Centos 8)中执行了整个安装过程后,cmake 找不到 azure-storage-blobs-cpp 即使正确添加了-DCMAKE_TOOLCHAIN_FILE=[path to vcpkg repo]/scripts/buildsystems/vcpkg.cmake 标志。

在我的开发环境中安装 SDK,然后在基于 Linux 的容器中进行部署,是否有类似上述 sn-p 的替代或直接方式?

【问题讨论】:

标签: c++ azure docker azure-sdk


【解决方案1】:

在研究时,我遇到了这个issue。在这里,janbernloehr 引用了我搜索并尝试过的名为azure-storage-cpplite 的库。是的,它解决了我的问题!

首先,它很容易在本地或 docker 容器中安装。依赖项:OpenSSL、libuuid 和 libcurl。

RUN git clone https://github.com/azure/azure-storage-cpplite.git \
    && cd azure-storage-cpplite && mkdir -p build && cd build \ 
    && cmake .. -DCMAKE_BUILD_TYPE=Release \
    && cmake --build . \ 
    && cmake --build . --target install

其次,将库包含在 CMake 项目中很简单。

set(Headers
  include/your-file.h
)

set(Sources
  src/your-file.cpp
  )

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -lm -Wl,-R/usr/local/lib")

set(CURL_LIBRARY "-lcurl") 
find_package(CURL REQUIRED) 

add_library(appname STATIC ${Sources} ${Headers})

target_compile_features(appname PUBLIC cxx_std_17)

target_include_directories(appname PUBLIC ${CURL_INCLUDE_DIR})
target_link_libraries(appname ${CURL_LIBRARIES} azure-storage-lite -lcrypto -luuid)

第三,它是轻量级的,下载大小接近 30MB,对于 docker 容器来说还可以。

如果不是这个issue,我就不会找到 cpplite SDK。我不知道为什么它是一个隐藏的宝石。如果您知道任何事情,请告诉我们。

【讨论】:

    猜你喜欢
    • 2020-11-28
    • 2021-04-15
    • 2021-10-21
    • 2017-11-11
    • 2017-05-02
    • 2014-07-06
    • 2020-12-20
    • 2021-05-11
    • 2021-07-09
    相关资源
    最近更新 更多