在 docker 容器中安装适用于 C++ 的 Azure SDK
Installing Azure SDK for C++ in a docker container
我想知道如何在 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
...
我已经阅读了安装指南here and here但是在我的开发环境(Centos 8)中完成了整个安装过程后,cmake 找不到
azure-storage-blobs-cpp
即使在正确添加 -DCMAKE_TOOLCHAIN_FILE=[path to vcpkg repo]/scripts/buildsystems/vcpkg.cmake
标志之后。
是否有像上面代码片段那样的替代方法或直接方法来在我的开发环境中安装 SDK,然后在基于 Linux 的容器中进行部署?
在研究过程中,我发现 issue. Here, 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。我不知道为什么它是隐藏的gem。如果你知道什么,请告诉我们。
我想知道如何在 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
...
我已经阅读了安装指南here and here但是在我的开发环境(Centos 8)中完成了整个安装过程后,cmake 找不到
azure-storage-blobs-cpp
即使在正确添加 -DCMAKE_TOOLCHAIN_FILE=[path to vcpkg repo]/scripts/buildsystems/vcpkg.cmake
标志之后。
是否有像上面代码片段那样的替代方法或直接方法来在我的开发环境中安装 SDK,然后在基于 Linux 的容器中进行部署?
在研究过程中,我发现 issue. Here, 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。我不知道为什么它是隐藏的gem。如果你知道什么,请告诉我们。