python - 警告:以“root”用户身份运行 pip
问题描述
我正在 Docker 中制作我的 python Django 应用程序的简单图像。但是在构建容器结束时它会抛出下一个警告(我在 Ubuntu 20.04 上构建它):
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
如果我在图像中安装 Python 要求,为什么会引发此警告?我正在使用以下方法构建我的图像:
sudo docker build -t my_app:1 .
我是否应该担心 pip 抛出的警告,因为我知道它会破坏我的系统?
这是我的 Dockerfile:
FROM python:3.8-slim-buster
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
解决方案
构建容器的方式不会添加用户,因此一切都以 root 身份完成。
您可以通过执行以下操作创建用户并安装到该用户的主目录;
FROM python:3.8.3-alpine
RUN pip install --upgrade pip
RUN adduser -D myuser
USER myuser
WORKDIR /home/myuser
COPY --chown=myuser:myuser requirements.txt requirements.txt
RUN pip install --user -r requirements.txt
ENV PATH="/home/myuser/.local/bin:${PATH}"
COPY --chown=myuser:myuser . .
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
推荐阅读
- python - 在 OpenCV 中设置 ROI
- r - R转置日期框架并设置列标题
- python - 从 android 中最近的应用程序列表中关闭应用程序后,Kivy 没有调用 on_stop() 函数
- apache-flink - 配置flink checkpoint时,应该选择exactly-once还是at-least-once?
- apache-camel - Apache Camel 文件附加在 Windows 中不起作用
- c++ - 'A' 必须由构造函数初始化,而不是由 '{...}'
- azure - 获取即将过期的 Azure AD 应用程序
- typescript - 合并类型时如何查看完整的 Typescript 类型
- r - R均值按组排序用ggplot绘制折线图
- javascript - 路由中的动态组件在刷新后未在 Vue 中呈现