【发布时间】:2019-07-31 13:37:52
【问题描述】:
我正在尝试创建一个带有一些 conda 环境的 docker 容器。当我以交互模式运行容器时运行
conda update --all
conda env create -f env.yml
运行没有问题。但是,每当我尝试使用 Docker 文件执行这些命令时,我都会收到
/bin/sh: 1: conda: command not foud
Docker 文件如下图所示:
FROM ubuntu:latest
RUN apt-get update && \
apt-get install unzip && \
mkdir /install && \
apt-get install nano
COPY Anaconda3-2018.12-Linux-x86_64.sh env.yml /install/
WORKDIR /install
RUN bash Anaconda3-2018.12-Linux-x86_64.sh -b && \
echo "export PATH="/root/anaconda3/bin:$PATH"" >> ~/.bashrc && \
/bin/bash -c "source ~/.bashrc"
RUN conda update --all
RUN conda env create -f env.yml
所以似乎使用的是 sh 而不是 bash,所以我将 Dockerfile 编辑为以下内容:
FROM ubuntu:latest
RUN apt-get update && \
apt-get install unzip && \
mkdir /install && \
apt-get install nano
COPY Anaconda3-2018.12-Linux-x86_64.sh env.yml /install/
WORKDIR /install
RUN bash Anaconda3-2018.12-Linux-x86_64.sh -b && \
echo "export PATH="/root/anaconda3/bin:$PATH"" >> ~/.bashrc && \
/bin/bash -c "source ~/.bashrc"
RUN /bin/bash -c "conda update --all"
出现以下错误
/bin/bash: conda: command not found
【问题讨论】:
-
尝试在 docker 构建过程中设置路径:
ENV PATH /root/anaconda3/bin:$PATH在运行 conda 命令之前 -
完美!做到了。你能解释一下为什么需要重新设置路径吗?
-
我认为这是因为
RUN语句是相互隔离的。cd或source不会影响下一个RUN语句。 -
@cel 你想发表一个我认为正确的答案吗?
标签: docker anaconda dockerfile conda