Docker中的pip不能打开文件'/ usr / local / bin / pip':[Errno 13]权限被拒绝

时间:2019-08-13 15:18:41

标签: python docker docker-compose ubuntu-18.04

我正在容器中运行python(django)应用程序(使用django cookiecutter项目模板)。一切工作正常,但突然出现以下错误,构建失败:

Step 5/13 : RUN pip install -r /requirements/local.txt ---> Running in 4118795a1036 /usr/local/bin/python: can't open file /usr/local/bin/pip': [Errno 13] Permission denied ERROR: Service 'django' failed to build: The command '/bin/sh -c pip install -r /requirements/local.txt' returned a non-zero code: 2

我第一次安装docker(https://docs.docker.com/install/linux/linux-postinstall/)时遵循了docker官方文档中的权限

使用的图像:python:3.6-alpine

Docker版本19.03.1,内部版本74b1e89 docker-compose版本1.24.0,内部版本0aa59064 Ubuntu 18.04.3 LTS

我已经尝试过修剪docker系统(docker system prune),并尝试使用sudosudo docker-compose build)构建项目,但没有成功。

这是我的Dockerfile的样子:

FROM python:3.6-alpine

ENV PYTHONUNBUFFERED 1

RUN apk update \
  # psycopg2 dependencies
  && apk add --virtual build-deps gcc python3-dev musl-dev \
  && apk add mariadb-dev \
  && apk add mysql-client \
  # Pillow dependencies
  && apk add jpeg-dev zlib-dev freetype-dev lcms2-dev openjpeg-dev tiff-dev tk-dev tcl-dev \
  # CFFI dependencies
  && apk add libffi-dev py-cffi \
  # Translations dependencies
  && apk add gettext \
  # https://docs.djangoproject.com/en/dev/ref/django-admin/#dbshell
  && apk add postgresql-client

# Requirements are installed here to ensure they will be cached.
COPY ./requirements /requirements
RUN pip install -r /requirements/local.txt 
(...)

有没有人遇到过这个问题或知道任何解决方法?我一直在努力奋斗了几个小时,而且(从字面上看)我已经耗尽了这些想法。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

  1. 尝试从安装的软件包以及py-cffi中删除python3-dev。 alpine软件包中的Python与Docker映像中的Python不同,如果您愿意的话,您不想安装Alpine Python的东西。

  2. 我建议避免高山运动。使用Alpine的动机是缩小图像,但由于二进制轮子不适用于Alpine,因此您需要编译软件包...这意味着您需要安装编译器,这会使您的图像更大。如果您切换到Debian基本映像python:3.6-slim-buster(并且我也出于其他原因也认为您应该这样做:https://pythonspeed.com/articles/base-image-python-docker-images/),将会简化您的生活。