0
Docker에서 캐싱이 어떻게 작동하는지 정확히 알지 못하기 때문에 Docker 파일에서이 섹션을 매번 다시 작성하지 않는 방법으로 어떻게 수정할 수 있습니까?Docker 파일의 특정 부분을 다시 작성하지 못하도록 방지합니다.
# INSTALL OPENCV 3.1
WORKDIR /root
RUN wget https://github.com/Itseez/opencv_contrib/archive/3.1.0.zip -O opencv_contrib-3.1.0.zip -nv && \
unzip opencv_contrib-3.1.0.zip && \
rm -f /root/opencv_contrib-3.1.0.zip && \
wget https://github.com/Itseez/opencv/archive/3.1.0.zip -O opencv-3.1.0.zip -nv && \
unzip opencv-3.1.0.zip && \
rm -f /root/opencv-3.1.0.zip
RUN export LD_LIBRARY_PATH=/usr/local/cuda-7.0/lib64:/usr/local/cuda-7.0/lib:$LD_LIBRARY_PATH
WORKDIR /root/opencv-3.1.0
RUN mkdir build && cd build && \
cmake -D CUDA_ARCH_BIN=3.2 \
-D CUDA_ARCH_PTX=3.2 \
-D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_TBB=ON \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D WITH_V4L=ON \
-D BUILD_TIFF=ON \
-D WITH_QT=ON \
# -D USE_GStreamer=ON \
-D WITH_OPENGL=ON \
-D WITH_IPP=ON \
-D OPENCV_EXTRA_MODULES_PATH=/root/opencv_contrib-3.1.0/modules \
-D BUILD_opencv_legacy=OFF .. && \
make -j8 && \
make install && \
echo "/usr/local/lib" | sudo tee -a /etc/ld.so.conf.d/opencv.conf && \
ldconfig && \
cp /root/opencv-3.1.0/build/lib/cv2.so /usr/lib/python2.7/dist-packages/cv2.so
RUN rm -rf /root/opencv-3.1.0 /root/opencv_contrib-3.1.0 # cleanup
도커 컨테이너를 만들 때 이미 빌드 이미지와 새 이미지 사이의 차이를 확인하십시오. 즉, 변경되지 않는 파일이 먼저 캐시되는 방식으로 도커 파일을 작성해야합니다. 예를 들어 모든 종속성을 얻고 결국 코드를 사용하여 파일을 추가하십시오. 꽤 자주 바뀔 것이라고 – Tomas
Dockerfile의이 섹션은 변경된 적이 없으며 다운로드 할 OpenCV 버전을 수정했습니다. –