gpt4 book ai didi

docker - 每次部署到 bitbucket 时,如何防止 docker 编译库?是否有任何 bitbucket 管道缓存?

转载 作者:行者123 更新时间:2023-12-02 16:07:18 26 4
gpt4 key购买 nike

我们在 docker 镜像中有我们的 Flask API,我们将这个 docker 推送到 bitbucket 存储库,然后开始部署 bitbucket 管道。

一切都按预期工作,但 OpenCV 的编译平均需要 15 分钟。

我想知道每次我们推送到 bitbucket 时是否有任何方法可以避免这种编译。像缓存这样的东西。

我已阅读有关 bitbucket 管道上的缓存的信息,但它没有按预期工作。

这是我想要改进的 Dockerfile 的一部分:

RUN mkdir /opt && cd /opt && \
wget -q https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip && \
unzip ${OPENCV_VERSION}.zip && \
rm -rf ${OPENCV_VERSION}.zip && \
mkdir -p /opt/opencv-${OPENCV_VERSION}/build && \
cd /opt/opencv-${OPENCV_VERSION}/build && \
CXX=/usr/bin/clang++ CC=/usr/bin/clang cmake \
-D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_FFMPEG=NO \
-D WITH_IPP=NO \
-D WITH_OPENEXR=NO \
-D WITH_TBB=YES \
-D BUILD_EXAMPLES=NO \
-D BUILD_ANDROID_EXAMPLES=NO \
-D INSTALL_PYTHON_EXAMPLES=NO \
-D BUILD_DOCS=NO \
-D BUILD_opencv_python2=NO \
-D BUILD_opencv_python3=ON \
-D ENABLE_PYTHON3=ON \
-D PYTHON3_EXECUTABLE=/usr/bin/python3 \
.. && \
make VERBOSE=1 -j8 && \
make && \
make install && \
rm -rf /opt/opencv-${OPENCV_VERSION}

我期待一些解决方案,比如指向 OpenCV Api 的预编译版本。

最佳答案

我最近遇到了这个问题,并同意缓存似乎没有按预期工作。然而,没有看你的整个 Dockerfile ,很难说。 ADD的和 COPY 's 将使缓存无效,因此我建议您在添加任何文件之前将此部分移至顶部。

更好的解决方案(如果没有预编译版本)是使用基本镜像的概念,这是我所做的将构建时间减少一半的方法。基本上你构建一个基础镜像 flask-api-base这将安装您的所有软件包并编译 OpenCV,然后您的实际最终图像将拉出 FROM flask-api-base:latest并构建您的应用程序特定代码。请记住,如果基础镜像发生更改,您可能需要删除 Bitbucket 缓存。

关于docker - 每次部署到 bitbucket 时,如何防止 docker 编译库?是否有任何 bitbucket 管道缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58770910/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com