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

时间:2019-07-08 20:45:55

标签: docker vagrant conda conda-forge

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

我尝试使用pip代替conda,但这会导致其他错误,因为我最初将conda用于所有配置。另外,我读到RUN conda update --all将解决该问题,并进行点设置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 

2 个答案:

答案 0 :(得分:0)

尝试将两个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

答案 1 :(得分:0)

实际上,该错误表明conda /bin/sh的路径错误

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

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

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

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