【问题标题】:Docker with venv or without? [duplicate]Docker 有没有 venv? [复制]
【发布时间】:2021-12-29 16:38:35
【问题描述】:

我是 Docker 的新手并且正在学习它,我的问题是我必须在 Docker 中使用 venv 还是不重要?因为我无法在docker中配置venv,它给了我一个错误,比如cannot import Django activate venv ...,我看了一些答案但没有得到答案,有些人说需要使用venv其他不重要。

我的 DOcker 文件

FROM python:3.8

#set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

RUN python3 -m venv venv

#Set work directory
WORKDIR /code/

#Install dependencies
COPY requirements.txt .
RUN . /venv/bin/activate && pip install -r requirements.txt

COPY . /code/

如果我不使用 venv Docker 运行良好,但在安装包时它会给我类似WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead:... 的警告 有人能解释清楚吗?

提前致谢

【问题讨论】:

  • 在 Docker 中使用 venv 是完全没有必要的 IMO。我从来没有使用过,也从来没有遇到过任何问题,不使用也稍微简单一点
  • 如果您对此消息感到恼火,您可以在 Dockerfile 中添加新用户并在用户的主目录中安装东西,在您的 pip 命令中指定--user 标志,但正如@IainShelvington 所说,这已经完全不必要。问题是重复的:stackoverflow.com/questions/68673221/…
  • 这能回答你的问题吗? WARNING: Running pip as the 'root' user
  • 我想要完整的解释为什么以及为什么不在 Docker 中使用 venv

标签: python django docker docker-compose


【解决方案1】:

What's the difference between Docker and Python virtualenv?

virtualenv 仅封装 Python 依赖项。一个 Docker 容器封装了整个操作系统。

换句话说,docker容器类似于虚拟环境,只是它封装了自己的操作系统而不是自己的项目环境。这意味着虚拟环境在 docker 容器中是没有用的,因为环境已经被封装了。

【讨论】:

  • 这成功了!
猜你喜欢
  • 1970-01-01
  • 2014-09-21
  • 2021-06-04
  • 2019-07-14
  • 1970-01-01
  • 2020-07-18
  • 2016-10-15
  • 2013-08-28
  • 2022-12-09
相关资源
最近更新 更多