我正在容器中运行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
),并尝试使用sudo
(sudo 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
(...)
有没有人遇到过这个问题或知道任何解决方法?我一直在努力奋斗了几个小时,而且(从字面上看)我已经耗尽了这些想法。任何帮助将不胜感激。
答案 0 :(得分:0)
尝试从安装的软件包以及py-cffi中删除python3-dev。 alpine软件包中的Python与Docker映像中的Python不同,如果您愿意的话,您不想安装Alpine Python的东西。
我建议避免高山运动。使用Alpine的动机是缩小图像,但由于二进制轮子不适用于Alpine,因此您需要编译软件包...这意味着您需要安装编译器,这会使您的图像更大。如果您切换到Debian基本映像python:3.6-slim-buster
(并且我也出于其他原因也认为您应该这样做:https://pythonspeed.com/articles/base-image-python-docker-images/),将会简化您的生活。