无法使用 conda-forge 部署 docker 解决方案

Posted

技术标签:

【中文标题】无法使用 conda-forge 部署 docker 解决方案【英文标题】:Unable to deploy docker solution with conda-forge 【发布时间】:2019-07-08 20:45:55 【问题描述】:

我正在为我的应用程序部署一个 docker 解决方案。在我的 docker 文件中,我使用了多个 conda-forge 来构建一些容器。它对某些容器工作得很好,而对另一个容器则给出错误,我确信这与包无关,因为对于同一个包,有时它可以工作,而其他人则不行。

我曾尝试使用 pip 而不是 conda,但这会导致其他错误,因为我最初将 conda 用于我的所有配置。另外,我读到RUN conda update --all 会解决它,对于 pip setup RUN pip install --upgrade setuptools

这是我的 docker 文件的一部分:

FROM dockerreg.cyanoptics.com/cyan/openjdk-java8:1.0.0
RUN conda update --all
RUN conda install -c conda-forge  happybase=1.1.0 --yes
RUN conda install -c  conda-forge  requests-kerberos
RUN pip install --upgrade setuptools
RUN pip install --upgrade pip
RUN pip install  kafka-python
RUN pip install requests-negotiate 

预期结果是成功构建所有容器,但我得到以下结果:

     ---> Using cache
     ---> 82f4cd49037d
     Step 14 : RUN conda install -c conda-forge  happybase=1.1.0 --yes
     ---> Using cache
     ---> c035b960aa3b
     Step 15 : RUN conda install -c  conda-forge  requests-kerberos
     ---> Running in 54d869afcd00
     Traceback (most recent call last):
     File "/opt/conda/bin/conda", line 7, in <module>
     from conda.cli import main
     ModuleNotFoundError: No module named 'conda'
     The command '/bin/sh -c conda install -c  conda-forge  requests- 
     kerberos' returned a non-zero code: 1
     make: *** [dockerimage] Error 1 

【问题讨论】:

【参考方案1】:

尝试将两个conda install 命令组合成一个命令:RUN conda install -c conda-forge happybase=1.1.0 requests-kerberos --yes

我在安装命令拆分时遇到了类似的问题;原来问题是第一个导致python版本升级,而这又与conda install命令不兼容——导致你看到的错误。

我发现的另一个解决方法是将python 3.6.8 添加为另一个安装参数。我正在安装的其中一个软件包必须具有 python 3.7 依赖项,强制它升级 python,并破坏conda install

【讨论】:

【参考方案2】:

其实这个错误说明conda/bin/sh的路径不对

因此,将正确的路径添加到 Dockerfile 将解决以下问题:

   ENV PATH /opt/conda/envs/env/bin:$PATH

相关主题的一个很好的参考是here,它建议在dockerfile中创建一个新的虚拟环境:

https://medium.com/@chadlagore/conda-environments-with-docker-82cdc9d25754

【讨论】:

以上是关于无法使用 conda-forge 部署 docker 解决方案的主要内容,如果未能解决你的问题,请参考以下文章

无法在 conda-forge 上安装 xgboost

conda-forge / cran 包装的 X 射线扫描

conda install -c conda-forge opencv 后 Spyder 无法启动

Conda-Forge 与 conda-forge 存储库和安全性

Docke容器分离部署LNMP

Docke部署springboot jar包项目