我看到很多Dockerfile里都有conda命令的示例。而且也有预构建的Anaconda和Miniconda容器。我一定是忽略了什么。
Docker难道不是替代virtualenv和conda吗?我应该把所有依赖都放在dockerfile中,对吗?我不理解为什么要在这里添加Anaconda。实际上,如果我不使用所有Miniconda包含的模块,似乎会使我的容器变得更大。
我看到很多Dockerfile里都有conda命令的示例。而且也有预构建的Anaconda和Miniconda容器。我一定是忽略了什么。
Docker难道不是替代virtualenv和conda吗?我应该把所有依赖都放在dockerfile中,对吗?我不理解为什么要在这里添加Anaconda。实际上,如果我不使用所有Miniconda包含的模块,似乎会使我的容器变得更大。
Docker并不能替代任何东西。它只是一种做事情的方式。
不,你不应该把所有依赖都写在Dockerfile里。我自己会从虚拟环境中运行pip install
,除非有充分的理由需要用到Docker或者Conda。你没有提供requirements.txt文件并不是一个好的理由 :)
Conda早在2012年就已经出现了——比Docker还早。由于Python在非程序员社区中有很强的支持者,我很少能看到可读的代码,更别说某些类型的DevOps能力了。Conda就是这个群体的完美解决方案。
使用Docker,你可以通过FROM python:xx
, COPY . /workdir
, 和 RUN pip install -r requirements.txt
(假设你正在使用这个文件 *啊咳咳)获得一个功能性的Docker环境,但是你的开发人员可能需要一个卷才能进行开发工作(所以他们需要知道--volume
)。此外,如果你正在运行Django,则需要配置端口(现在他们需要--port
并且你需要EXPOSE
)。哦,还有Django可能需要一个数据库。现在你需要另一个容器并编写一个docker-compose文件。
但是请考虑以下几点,几乎所有我的专业(DevOps)经验都表明——如果你只包含requirements.txt:
希望对您有所帮助——不要被某种技术束缚住了!