我们有一个ROS-based application的整体构建过程,并且希望使用Docker对其进行打包,以便我们可以更轻松地测试和部署。
我目前的想法是,我构建一个包含所有依赖项的映像,然后使用ENTRYPOINT
和合适的--mount
命令执行最后的cmake
并将本地源构建到容器中
但是,有一个主要的设计问题我还没有找到解决方案或最佳实践。首先,我获得了OpenCV+CUDA图像和合适的ROS image,因此我需要将两者合并到一个新容器中,但是FROM
命令似乎不够用。例如,OpenCV已经安装了make install
,而CUDA已经经过了必要的apt-get
处理,因此切换到文件COPY
之后,我不能只是--from
第二。实际上,当我当前尝试构建cmake
时,抱怨CUDA_TOOLKIT_ROOT_DIR
丢失了,并且如果我认为毫无疑问会出现另一个类似的错误,则会在makefile
中再插入几行。>
人们如何避开“多重图像继承”(由于缺少更好的词)?我是否应该只是在最后的apt get cuda8
中做Dockerfile
而不是依靠FROM docker-opencv-cuda
间接提供环境?但这有一个问题,就是要确保我的CUDA版本在图像之间保持同步。