我想在docker映像中永久设置一个conda环境,以便conda包的功能可以被作为入口点参数的脚本使用。 这是我创建的dockerfile。
FROM continuumio/anaconda3
RUN conda create -n myenv
RUN echo "source activate myenv" > ~/.bashrc
ENV PATH:="/opt/conda/envs/myenv/bin:$PATH"
SHELL ["/bin/bash", "-c"]
ENTRYPOINT ["python3"]
当我运行docker容器时,似乎~/.bashrc
文件不是源文件。我在做错什么吗?
谢谢
答案 0 :(得分:0)
要解决这两种情况,请使用'SHELL [“ / bin / bash”,“-i”,“-login”,“-c”]'
-或-
通过更改“ *)return;”,以非交互方式编辑图像中的.bashrc文件,以不退出。阅读“ *);;”
使用第一个选项bash会抱怨作业控制和ttys,但该错误可以忽略。
问题的原因:
.bashrc文件包含以下命令:
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
,如果不处于交互模式,这将导致bash停止获取文件。 (-i标志)
不幸的是,我还没有找到将conda节自动插入.bash_profile或.profile而不是(或附加到).bashrc的方法,因为似乎没有选择覆盖或添加到conda init检查哪些文件进行修改的列表。