我见过很多带有conda命令的dockerfiles的例子。还有预制的anaconda和miniconda容器。我肯定错过了什么。
码头工人不能更换virtualenv和conda吗?我不应该在dockerfile中拥有所有依赖项吗?我不明白我在这里添加anaconda会得到什么。事实上,如果我不使用所有miniconda包含的模块,如果我必须拉一个miniconda容器,它似乎会使我的容器变得更大。
答案 0 :(得分:4)
Docker不会替换任何东西。这只是一种做事的方式。
不,您不应该在Dockerfile中拥有所有依赖项。举个例子,我将从virtualenv运行pip install
而不用触及Docker / * conda,除非我有充分的理由。你缺乏requirements.txt不是一个很好的理由:)
康达于2012年问世 - 远在Docker之前。由于Python在非程序员社区中有如此强大的追随者,我很少期望可理解的代码,更不用说某种类型的DevOps能力。 Conda是这个群体的完美解决方案。
使用Docker,您可以拥有一个功能强大的Docker环境FROM python:xx
,COPY . /workdir
和RUN pip install -r requirements.txt
(假设您正在使用该文件* ahem),但您的开发人员将会可能需要一个卷以便他们可以工作(所以他们需要知道--volume
。另外,如果您正在运行Django,您需要配置端口(现在他们需要--port
并且您需要EXPOSE
)。哦,Django也可能需要一个数据库。现在你需要另一个容器并且你正在编写一个docker-compose文件。
但请考虑以下内容,几乎所有我的专业(DevOps)经验如果您只包含requirements.txt -