在 Docker 容器 Django 中使用 pip 安装包时权限被拒绝



我无法在我的 docker 容器中安装软件包,请告诉我如何解决这个问题。

警告:

警告:目录"/home/app/.cache/pip"或其父目录不属于当前用户,也不属于当前用户。缓存已被禁用。检查该目录的权限和所有者。如果使用 sudo 执行 pip,则应使用 sudo 的 -H 标志。

错误:

ERROR: Could not install packages due to an OSError: [Errno 13] Permission denied: '/home/app'
Check the permissions.

Dockerfile:

FROM python:3
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
WORKDIR /app
EXPOSE 8000
COPY ./core/ /app/
COPY ./scripts /scripts
RUN pip install --upgrade pip
COPY requirements.txt /app/
RUN pip install -r requirements.txt && 
adduser --disabled-password --no-create-home app && 
mkdir -p /vol/web/static && 
mkdir -p /vol/web/media && 
chown -R app:app /vol && 
chmod -R 755 /vol && 
chmod -R +x /scripts
USER app
CMD ["/scripts/run.sh"]

容器内的命令:

pip install django-storages

就我而言,我已经使用 root 用户安装了软件包,-u 0它告诉 docker 以 root 用户身份进入。

docker exec -u 0 -it mycontainer bash

用户的'/home/app'目录不存在或具有错误的权限。

看起来您正在将--no-create-home传递给adduser,这可能是您的问题。

(对于在这里找到方式的其他人,为了创建我的用户,我正在使用RUN useradd -u 1000 app但由于某种原因没有创建我的主目录...... 使用RUN adduser --uid 1000 --disabled-password app对我有用。

相关内容

  • 没有找到相关文章

最新更新