4 python django virtualenv docker
在docker django应用程序中virtualenv的目的是什么?Python和其他依赖项已经安装,但同时需要使用pip安装大量软件包,所以看起来冲突仍然不清楚.
你能解释一下这个概念吗?
编辑:还有,例如.我在docker django应用程序中创建了virtualenv并且最近安装pip freeze djangorestframework并将其添加到settings.py中安装但是docker-compose up引发错误. No module named rest_framework.Checked,一切正确.Docker/virtualenv冲突?希望如此?
Docker和容器化可能激发您不需要虚拟环境的错觉.distutilGlpyh 在这次pycon谈话中提出了一个非常有说服力的论据来反对这种误解.
virtualenv优势的相同基本方面适用于容器,就像它们用于非容器化应用程序一样,因为从根本上说,您仍在运行Linux发行版.
Debian和Red Hat是非常复杂的工程项目.集成数十亿行C代码.例如,你可以
apt install libavcodec.或者yum install ffmpeg.为这些事情之一编写一个有效的构建系统是博士论文.它们将数千个Python包同时集成到一个工作环境中.他们并不总是告诉你他们的工具是否使用Python.
所以,您可能希望docker在容器内部执行一些工具,它们可能是用Python编写的,如果您
sudo pip install的应用程序在那里,现在它已经全部坏了.因此,即使在容器中,也要将应用程序代码与系统隔离开来
无论您是否使用docker,都应始终在虚拟环境中运行应用程序.
现在在docker中,特别是使用virtualenv比它应该有点棘手.在docker内部,每个RUN命令都是独立运行的,除了文件系统更改之外,没有任何状态是逐行保存的.要安装到a,virutalenv您必须在每行上添加激活命令:
RUN apt-get install -y python-virtualenv
RUN virtualenv /appenv
RUN . /appenv/bin/activate; \
pip install -r requirements.txt
ENTRYPOINT . /appenv/bin/activate; \
run-the-app
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
552 次 |
| 最近记录: |