我无法在我的 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
对我有用。