【发布时间】:2022-05-02 17:40:43
【问题描述】:
我正在尝试通过将柯南安装在 Docker 中并使用该 docker 来使用它。同样,我确实喜欢 将这些行包含在 Dockerfile 中
RUN apt-get install -y python3-pip
RUN sudo python3 -m pip install conan
在启动 docker 容器后,我的 CMakeFile.txt 中有这些行
conan_cmake_run(
REQUIRES
${CONAN_PACKAGES})
${CONAN_PACKAGES} 是构建我的项目所必需的。运行 cmakefile 时出现此错误
-- Conan: Automatic detection of conan settings from cmake
-- Conan: Settings= -s;build_type=Debug;-s;compiler=gcc;-s;compiler.version=8;-s;compiler.libcxx=libstdc++11
-- Conan: checking conan executable
-- Conan: Found program /usr/bin/conan
-- Conan: Version found
-- Conan executing: /usr/bin/conan install . -s build_type=Debug -s compiler=gcc -s compiler.version=8 -s compiler.libcxx=libstdc++11 -g=cmake
CMake Error at cmake/conan.cmake:402 (message):
Conan install failed='No such file or directory'
Call Stack (most recent call first):
cmake/conan.cmake:497 (conan_cmake_install)
CMakeLists.txt:17 (conan_cmake_run)
-- Configuring incomplete, errors occurred!
添加 conan_remote 工作正常。 但是在创建 docker 容器后,在 docker 中执行这些行后,问题就解决了
pip install conan
sudo ln -s ~/.local/bin/conan /usr/bin/conan
随着我对柯南的初步了解,我意识到它正在寻找用户级别的安装。但在 docker 中,一切都以 root 身份安装。 有人可以帮忙解决这个问题吗? 我正在使用这个版本的柯南:https://github.com/conan-io/cmake-conan/tree/release/0.15
【问题讨论】:
-
我建议你使用官方的柯南 docker 镜像:hub.docker.com/u/conanio。它们按编译器版本提供,例如,
conanio/gcc10。存储库就是这个,如果你想看一下食谱:github.com/conan-io/conan-docker-tools BTW,不要默认使用 root 用户,而是创建一个非 root 用户。为什么?安全漏洞,所有应用程序都将以 root 身份运行,包括可能的恶意软件。 -
@uilianries 感谢您的建议。但是,如果需要,使用现有的 Dockerfile 并添加包是有限制的。我们也在 docker 中创建一个用户。
-
所以我建议你阅读 Github 中的 Dockerfile 作为示例。使用 pyenv 进行 python 安装,因此您可以保持安装特定版本,而不取决于您的发行版中可用的内容。还有一点,首先你使用了python3 -m pip install,但是在你刚刚执行了pip install之后。我不确定它们是否是同一个 pip,第二个命令可能是 python 2.7。我建议你使用 pip3 以防万一,并检查 pip --version 以防万一。