小编典典

condas`source activate virtualenv`在Dockerfile中不起作用

docker

情境

我正在尝试基于公共continuumio /
anaconda3
容器设置一个简单的docker映像(
对于docker我是一个新手,所以请更正我可能的误解
)。

Dockerfile

FROM continuumio/anaconda3:latest

# update conda and setup environment
RUN conda update conda -y \
    && conda env list \
    && conda create -n testenv pip -y \
    && source activate testenv \
    && conda env list

以此docker build -t test .结束建筑物和图像,并显示以下错误:

/bin/sh: 1: source: not found

激活新的虚拟环境时。

建议1:

按照这个答案,我尝试了:

FROM continuumio/anaconda3:latest

# update conda and setup environment
RUN conda update conda -y \
    && conda env list \
    && conda create -y -n testenv pip \
    && /bin/bash -c "source activate testenv" \
    && conda env list

乍一看,这似乎很有效,因为它输出:prepending /opt/conda/envs/testenv/bin to PATH,但conda env list屁股echo $PATH清楚地表明它没有:

[...]
# conda environments:
#
testenv                  /opt/conda/envs/testenv
root                  *  /opt/conda

---> 80a77e55a11f
Removing intermediate container 33982c006f94
Step 3 : RUN echo $PATH
---> Running in a30bb3706731
/opt/conda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

docker文件作为MWE开箱即用。我感谢任何想法。谢谢!


阅读 524

收藏
2020-06-17

共1个答案

小编典典

使用docker ENV指令,可以将虚拟环境路径永久添加到PATH尽管这不能解决列出的选定环境conda env list

请参阅MWE:

FROM continuumio/anaconda3:latest

# update conda and setup environment
RUN conda update conda -y \
    && conda create -y -n testenv pip

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

RUN echo $PATH
RUN conda env list
2020-06-17