“The headers or library files could not be found for jpeg” installing Pillow on Alpine Linux

后端 未结 10 1536
闹比i
闹比i 2021-02-01 12:33

I\'m trying to run Python\'s Scrapy in a Docker container based on python:alpine. It was working before, but now I\'d like to use Scrapy\'s Image Pipeline which requires me to i

相关标签:
10条回答
  • 2021-02-01 13:01

    In a comment that appears to have been deleted later, someone pointed me to https://github.com/python-pillow/Pillow/blob/c05099f45c0d94a2a98c3609a96bdb6cf7446627/depends/alpine_Dockerfile. Based on that Dockerfile I modified my own as follows:

    FROM python:alpine
    RUN apk --update add libxml2-dev libxslt-dev libffi-dev gcc musl-dev libgcc openssl-dev curl
    RUN apk add jpeg-dev zlib-dev freetype-dev lcms2-dev openjpeg-dev tiff-dev tk-dev tcl-dev
    RUN pip install Pillow
    

    Now it builds successfully.

    0 讨论(0)
  • 2021-02-01 13:01

    In short, this helps:

    RUN apt-get update -qq && apt-get install -y build-essential libsqlite3-dev \
      libpng-dev libjpeg-dev
    

    Detailed:

    I have the same error with python:3.8-slim-buster image. Solution presented by @pierangelo-orizio worked for me, but I just cleaned it to a minimal required packages list. So here are my Dockerfile:

    FROM python:3.8-slim-buster
    
    RUN apt-get update -qq && apt-get install -y build-essential libsqlite3-dev \
        libpng-dev libjpeg-dev
    
    COPY requirements.txt .
    RUN pip install --upgrade pip
    RUN pip install -r requirements.txt
    
    EXPOSE 8000
    VOLUME /usr/src/app
    WORKDIR /usr/src/app
    CMD python manage.py runserver 0.0.0.0:8000
    

    And requirements.txt:

    Django>=2.1,<2.2
    wagtail>=2.4,<2.5
    django-cors-headers==2.5.3
    python-dotenv==0.10.3
    
    0 讨论(0)
  • 2021-02-01 13:02

    Just in case anyone else is still struggling like I was you can see the official alpine Dockerfile for Pillow here: https://github.com/python-pillow/docker-images/blob/master/alpine/Dockerfile#L20

    It states the following dependencies:

    RUN apk --no-cache add python3 \
    
                       ...
    
                       # Pillow dependencies
                       jpeg-dev \
                       zlib-dev \
                       freetype-dev \
                       lcms2-dev \
                       openjpeg-dev \
                       tiff-dev \
                       tk-dev \
                       tcl-dev \
                       harfbuzz-dev \
                       fribidi-dev
    
    0 讨论(0)
  • 2021-02-01 13:02

    Have you try to create a requirements.txt and insert this in Dockerfile:

        RUN apt-get update -qq && apt-get install build-essential g++ flex bison gperf ruby perl \
      mysql-client \
      libsqlite3-dev libmysqlclient-dev libfontconfig1-dev libicu-dev libfreetype6 libssl-dev \
      libpng-dev libjpeg-dev python libx11-dev libxext-dev -y
     ENV PYTHONUNBUFFERED 1
     RUN mkdir /code
     WORKDIR /code
     ADD requirements.txt /code/
     COPY . /code
     RUN pip install -r requirements.txt
     ADD . /code/
    

    example of requirements.txt

    Django==1.9.7
    django-appconf==1.0.1
    django-filer==1.2.5
    django-filter==0.15.0
    django-grappelli==2.8.1
    django-image-cropping==1.0.3
    django-mptt==0.8.6
    django-nested-admin==3.0.10
    django-nested-inline==0.3.6
    django-polymorphic==0.8.1
    django-taggit==0.21.2
    django-tinymce==2.4.0
    dnspython==1.15.0
    easy-thumbnails==2.3
    enum34==1.1.2
    funcsigs==0.4
    idna==2.1
    ipaddress==1.0.17
    mercurial==3.7.3
    mock==1.3.0
    mysql-python
    ndg-httpsclient==0.4.2
    parsedatetime==2.1
    pbr==1.8.0
    Pillow==3.3.1
    psutil==3.4.2
    pyasn1==0.1.9
    PyICU==1.9.2
    pyOpenSSL==16.1.0
    pyRFC3339==1.0
    python-augeas==0.5.0
    python-monkey-business==1.0.0
    python2-pythondialog==3.3.0
    pytz==2014.10
    requests==2.11.1
    six==1.10.0
    Unidecode==0.4.19
    urllib3==1.16
    zope.component==4.2.2
    zope.event==4.2.0
    zope.hookable==4.0.4
    zope.interface==4.1.3
    
    0 讨论(0)
  • 2021-02-01 13:06

    Just adding "RUN apk add jpeg-dev" to Dockerfile fixed the problem for me.

    0 讨论(0)
  • 2021-02-01 13:14

    I ran into this problem with docker image python:3.6-alpine I solved it by adding these packages apk add jpeg-dev zlib-dev.

    0 讨论(0)
提交回复
热议问题