迷你安装的conda与dockerfile,如何使用conda环境

4

目标: 使用miniconda创建一个docker镜像,该镜像将安装所有依赖项,然后运行一些关于Django和其他包的命令。每当有人bin/bash进入容器时,它都应该从可用的包开始,而无需我添加entrypoint并在那里进行env hacks。

Dockerfile:
FROM continuumio/miniconda3
ADD environment.yml /code/
WORKDIR /code/
RUN conda env create -f environment.yml  # successful
RUN python test/manage.py 8000  # fails, no dependencies like pandas installed

但是现在我卡住了,假设我想在创建的环境中运行一些命令:

RUN python manage.py runserver 

我的环境无法运行它。

这里有一些不太好看的hack: https://github.com/ContinuumIO/docker-images/issues/89,但它们实际上不起作用,因为当您进入容器或执行另一个RUN命令时,您使用的是新的shell会话,因此您必须使用 && 将命令串联在一起(很丑陋)。

理想情况下,我想从environment.yml全局安装所有conda包,但显然我做不到。


嗨,Claudiu,你确定你的Dockerfile有效吗?你最后的命令应该将环境文件引用为/code/environment.yml。你能发一下你运行的docker命令吗? - Mihai
相关问题仍然未解决。 - amanb
@Mihai 是的,抱歉,我有一个 WORKDIR /code/,为了简洁起见,我没有包含它。 - Claudiu Creanga
@Mihai 已更新,是的,运行成功。 - Claudiu Creanga
从Docker的角度来看,这应该可以工作。我不熟悉conda或Python,但是运行测试并在互联网上查找后,我发现在使用环境之前也应该激活它(conda activate <env name>)。我相信你比我更了解,但你能否尝试添加这一步骤,或者你已经知道它不需要吗?否则,你能否把我需要运行和测试的文件传给我? - Mihai
显示剩余3条评论
1个回答

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接