无法使用 conda-forge 部署 docker 解决方案
Unable to deploy docker solution with conda-forge
我正在为我的应用程序部署 docker 解决方案。在我的 docker 文件中,我使用了多个 conda-forge 来构建一些容器。它对某些容器运行良好,对另一个容器出错,我确信这与包无关,因为对于同一个包,有时它可以工作,而其他容器则不行。
我曾尝试使用 pip 而不是 conda,但这会导致其他错误,因为我最初使用 conda 进行所有配置。另外,我读到 RUN conda update --all
会解决它,对于 pip 设置 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
尝试将两个 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
.
实际上错误表明 conda 的路径错误 /bin/sh
因此,将正确的路径添加到 Dockerfile 将解决以下问题:
ENV PATH /opt/conda/envs/env/bin:$PATH
这里是相关主题的一个很好的参考,它建议在 dockerfile 中创建一个新的虚拟环境:
https://medium.com/@chadlagore/conda-environments-with-docker-82cdc9d25754
我正在为我的应用程序部署 docker 解决方案。在我的 docker 文件中,我使用了多个 conda-forge 来构建一些容器。它对某些容器运行良好,对另一个容器出错,我确信这与包无关,因为对于同一个包,有时它可以工作,而其他容器则不行。
我曾尝试使用 pip 而不是 conda,但这会导致其他错误,因为我最初使用 conda 进行所有配置。另外,我读到 RUN conda update --all
会解决它,对于 pip 设置 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
尝试将两个 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
.
实际上错误表明 conda 的路径错误 /bin/sh
因此,将正确的路径添加到 Dockerfile 将解决以下问题:
ENV PATH /opt/conda/envs/env/bin:$PATH
这里是相关主题的一个很好的参考,它建议在 dockerfile 中创建一个新的虚拟环境:
https://medium.com/@chadlagore/conda-environments-with-docker-82cdc9d25754