Docker镜像构建时root用户运行pip的警告抑制方法咨询
解决Docker构建中pip的root用户警告(保留root用户)
要在继续使用root用户的前提下消除这个警告,有两种简单可行的方法,都是利用pip官方提供的配置来抑制root警告:
方法一:全局设置环境变量(一次性解决所有pip调用)
在Dockerfile的ENV块中添加PIP_ROOT_USER_ACTION=ignore,所有后续的pip调用(包括poetry底层调用的pip)都会自动忽略该警告:
FROM python:3.8.11-slim-buster ENV PYTHONUNBUFFERED=1 \ PYTHONDONTWRITEBYTECODE=1 \ POETRY_VERSION=1.1.13 \ PIP_ROOT_USER_ACTION=ignore RUN python3 -m pip install poetry==$POETRY_VERSION COPY poetry.lock pyproject.toml ./ RUN poetry config virtualenvs.create false \ && poetry install --no-interaction --no-dev --no-ansi
方法二:针对单个命令添加参数(更灵活)
如果不想全局生效,可以给直接调用pip的命令加上--root-user-action=ignore参数;对于poetry,因为它底层会调用pip,所以可以在执行poetry命令前临时设置环境变量:
FROM python:3.8.11-slim-buster ENV PYTHONUNBUFFERED=1 \ PYTHONDONTWRITEBYTECODE=1 \ POETRY_VERSION=1.1.13 # 给pip install命令添加参数抑制警告 RUN python3 -m pip install --root-user-action=ignore poetry==$POETRY_VERSION COPY poetry.lock pyproject.toml ./ # 临时设置环境变量,让poetry调用的pip忽略警告 RUN PIP_ROOT_USER_ACTION=ignore poetry config virtualenvs.create false \ && poetry install --no-interaction --no-dev --no-ansi
说明
PIP_ROOT_USER_ACTION=ignore是pip官方提供的配置项,专门用于关闭root用户运行时的权限警告。在Docker镜像场景中,直接以root身份安装依赖到系统Python环境是常规做法,只要镜像内没有其他用户的权限冲突,这种方式是安全可行的。
内容的提问来源于stack exchange,提问作者Antulii
相关产品推荐
相关产品推荐

