无法在 docker 容器中安装枕头

Unable to install pillow in docker container

我正在尝试为我的 django 项目构建一个 docker 图像。该项目使用了枕头,因此我将其放在我的 requiements.txt 文件中。但是我在构建图像时遇到错误

这是我的 Dockerfile

# pull the official base image
FROM python:3.9.6-alpine

# set work directory
WORKDIR /usr/src/app

# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

# install dependencies
RUN python3 -m pip install --upgrade pip
COPY ./requirements.txt /usr/src/app
RUN pip install -r requirements.txt

# copy project
COPY . /usr/src/app

EXPOSE 8000

CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

这是我的 requirements.txt 文件

asgiref==3.4.1
Django==3.2.9
django-cors-headers==3.11.0
djangorestframework==3.13.1
djangorestframework-simplejwt==5.0.0
Pillow==9.0.1
PyJWT==2.3.0
pytz==2021.3
sqlparse==0.4.2
whitenoise==5.3.0

这是我遇到的错误

Building wheels for collected packages: Pillow
#9 75.27   Building wheel for Pillow (setup.py): started
#9 76.43   Building wheel for Pillow (setup.py): finished with status 'error'
#9 76.49   error: subprocess-exited-with-error
#9 76.49   
#9 76.49   × python setup.py bdist_wheel did not run successfully.
#9 76.49   │ exit code: 1
#9 76.49   ╰─> [177 lines of output]
#9 76.49       running bdist_wheel
#9 76.49       running build
#9 76.49       running build_py
#9 76.49       creating build
#9 76.49       creating build/lib.linux-x86_64-3.9
#9 76.49       creating build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/ContainerIO.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/GribStubImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/ImageFilter.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/SpiderImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/EpsImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/PdfImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/ImagePath.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/ImageEnhance.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/GimpGradientFile.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/BufrStubImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/IptcImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/PcdImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/ExifTags.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/ImageDraw2.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/__main__.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/ImageMorph.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/MpoImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/ImageStat.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/FliImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/TiffTags.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/ImagePalette.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/SunImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/PcfFontFile.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/ImageSequence.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/ImageGrab.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/GimpPaletteFile.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/TarIO.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/MpegImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/PalmImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/FontFile.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/ImageChops.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/PixarImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/ImageFont.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/ImageColor.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/_version.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/WebPImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/ImageTransform.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/PpmImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/ImageTk.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/ImageQt.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/FpxImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/PsdImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/GdImageFile.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/_binary.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/ImtImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/TiffImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/PaletteFile.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/XpmImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/PngImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/_util.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/ImageFile.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/BdfFontFile.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/PcxImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/JpegImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/ImageCms.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/GifImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/WalImageFile.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/MicImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/FitsStubImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/ImageMode.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/IcoImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/ImageOps.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/JpegPresets.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/IcnsImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/Image.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/Hdf5StubImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/DdsImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/features.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/MspImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/Jpeg2KImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/PyAccess.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/BmpImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/SgiImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/CurImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/ImageDraw.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/TgaImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/DcxImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/XbmImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/ImImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/ImageShow.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/ImageMath.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/_tkinter_finder.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/WmfImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/BlpImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/PSDraw.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/ImageWin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/FtexImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/XVThumbImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/PdfParser.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/__init__.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/McIdasImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       copying src/PIL/GbrImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 76.49       running egg_info
#9 76.49       writing src/Pillow.egg-info/PKG-INFO
#9 76.49       writing dependency_links to src/Pillow.egg-info/dependency_links.txt
#9 76.49       writing top-level names to src/Pillow.egg-info/top_level.txt
#9 76.49       reading manifest file 'src/Pillow.egg-info/SOURCES.txt'
#9 76.49       reading manifest template 'MANIFEST.in'
#9 76.49       warning: no files found matching '*.c'
#9 76.49       warning: no files found matching '*.h'
#9 76.49       warning: no files found matching '*.sh'
#9 76.49       warning: no previously-included files found matching '.appveyor.yml'
#9 76.49       warning: no previously-included files found matching '.clang-format'
#9 76.49       warning: no previously-included files found matching '.coveragerc'
#9 76.49       warning: no previously-included files found matching '.editorconfig'
#9 76.49       warning: no previously-included files found matching '.readthedocs.yml'
#9 76.49      
#9 76.49         File "/usr/local/lib/python3.9/site-packages/setuptools/command/build_ext.py", line 79, in run
#9 76.49           _build_ext.run(self)
#9 76.49         File "/usr/local/lib/python3.9/distutils/command/build_ext.py", line 340, in run
#9 76.49           self.build_extensions()
#9 76.49         File "/tmp/pip-install-elv3vo8i/pillow_3742a79b841d46b5a99d9899bfdece24/setup.py", line 804, in build_extensions
#9 76.49           raise RequiredDependencyException(f)
#9 76.49       __main__.RequiredDependencyException: zlib
#9 76.49       
#9 76.49       During handling of the above exception, another exception occurred:
#9 76.49       
#9 76.49       Traceback (most recent call last):
#9 76.49         File "<string>", line 2, in <module>
#9 76.49         File "<pip-setuptools-caller>", line 34, in <module>
#9 76.49         File "/tmp/pip-install-elv3vo8i/pillow_3742a79b841d46b5a99d9899bfdece24/setup.py", line 1009, in <module>
#9 76.49           raise RequiredDependencyException(msg)
#9 76.49       __main__.RequiredDependencyException:
#9 76.49       
#9 76.49       The headers or library files could not be found for zlib,
#9 76.49       a required dependency when compiling Pillow from source.
#9 76.49       
#9 76.49       Please see the install instructions at:
#9 76.49          https://pillow.readthedocs.io/en/latest/installation.html
#9 76.49       
#9 76.49       
#9 76.49       [end of output]
#9 76.49   
#9 76.49   note: This error originates from a subprocess, and is likely not a problem with pip.
#9 76.49   ERROR: Failed building wheel for Pillow
#9 76.49   Running setup.py clean for Pillow
#9 77.35 Failed to build Pillow
#9 77.51 Installing collected packages: pytz, whitenoise, sqlparse, PyJWT, Pillow, asgiref, Django, djangorestframework, django-cors-headers, djangorestframework-simplejwt
#9 77.96   Running setup.py install for Pillow: started
#9 79.24   Running setup.py install for Pillow: finished with status 'error'
#9 79.26   error: subprocess-exited-with-error
#9 79.26   
#9 79.26   × Running setup.py install for Pillow did not run successfully.
#9 79.26   │ exit code: 1
#9 79.26   ╰─> [179 lines of output]
#9 79.26       running install
#9 79.26       running build
#9 79.26       running build_py
#9 79.26       creating build
#9 79.26       creating build/lib.linux-x86_64-3.9
#9 79.26       creating build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/ContainerIO.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/GribStubImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/ImageFilter.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/SpiderImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/EpsImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/PdfImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/ImagePath.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/ImageEnhance.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/GimpGradientFile.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/BufrStubImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/IptcImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/PcdImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/ExifTags.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/ImageDraw2.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/__main__.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/ImageMorph.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/MpoImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/ImageStat.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/FliImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/TiffTags.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/ImagePalette.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/SunImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/PcfFontFile.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/ImageSequence.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/ImageGrab.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/GimpPaletteFile.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/TarIO.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/MpegImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/PalmImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/FontFile.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/ImageChops.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/PixarImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/ImageFont.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/ImageColor.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/_version.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/WebPImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/ImageTransform.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/PpmImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/ImageTk.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/ImageQt.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/FpxImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/PsdImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/GdImageFile.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/_binary.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/ImtImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/TiffImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/PaletteFile.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/XpmImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/PngImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/_util.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/ImageFile.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/BdfFontFile.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/PcxImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/JpegImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/ImageCms.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/GifImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/WalImageFile.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/MicImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/FitsStubImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/ImageMode.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/IcoImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/ImageOps.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/JpegPresets.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/IcnsImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/Image.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/Hdf5StubImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/DdsImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/features.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/MspImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/Jpeg2KImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/PyAccess.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/BmpImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/SgiImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/CurImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/ImageDraw.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/TgaImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/DcxImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/XbmImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/ImImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/ImageShow.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/ImageMath.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/_tkinter_finder.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/WmfImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/BlpImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/PSDraw.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/ImageWin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/FtexImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/XVThumbImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/PdfParser.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/__init__.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/McIdasImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       copying src/PIL/GbrImagePlugin.py -> build/lib.linux-x86_64-3.9/PIL
#9 79.26       running egg_info
#9 79.26       writing src/Pillow.egg-info/PKG-INFO
#9 79.26       writing dependency_links to src/Pillow.egg-info/dependency_links.txt
#9 79.26       writing top-level names to src/Pillow.egg-info/top_level.txt
#9 79.26       reading manifest file 'src/Pillow.egg-info/SOURCES.txt'
#9 79.26       reading manifest template 'MANIFEST.in'
#9 79.26       warning: no files found matching '*.c'
#9 79.26       warning: no files found matching '*.h'
#9 79.26       warning: no files found matching '*.sh'
#9 79.26       warning: no previously-included files found matching '.appveyor.yml'
#9 79.26       warning: no previously-included files found matching '.clang-format'
#9 79.26       warning: no previously-included files found matching '.coveragerc'
#9 79.26       warning: no previously-included files found matching '.editorconfig'
#9 79.26       warning: no previously-included files found matching '.readthedocs.yml'
#9 79.26       warning: no previously-included files found matching 'codecov.yml'
#9 79.26       warning: no previously-included files matching '.git*' found anywhere in distribution
#9 79.26       warning: no previously-included files matching '*.pyc' found anywhere in distribution
#9 79.26       warning: no previously-included files matching '*.so' found anywhere in distribution
#9 79.26       no previously-included directories found matching '.ci'
#9 79.26       adding license file 'LICENSE'
#9 79.26       writing manifest file 'src/Pillow.egg-info/SOURCES.txt'
#9 79.26       warning: build_py: byte-compiling is disabled, skipping.
#9 79.26       
#9 79.26       running build_ext
#9 79.26       
#9 79.26       
#9 79.26       The headers or library files could not be found for zlib,
#9 79.26       a required dependency when compiling Pillow from source.
#9 79.26       
#9 79.26       Please see the install instructions at:
#9 79.26          https://pillow.readthedocs.io/en/latest/installation.html
#9 79.26       
#9 79.26       Traceback (most recent call last):
#9 79.26         File "/tmp/pip-install-elv3vo8i/pillow_3742a79b841d46b5a99d9899bfdece24/setup.py", line 989, in <module>
#9 79.26           setup(
#9 79.26         File "/usr/local/lib/python3.9/site-packages/setuptools/__init__.py", line 153, in setup
#9 79.26           return distutils.core.setup(**attrs)
#9 79.26         File "/usr/local/lib/python3.9/distutils/core.py", line 148, in setup
#9 79.26           dist.run_commands()
#9 79.26         File "/usr/local/lib/python3.9/distutils/dist.py", line 966, in run_commands
#9 79.26           self.run_command(cmd)
#9 79.26         File "/usr/local/lib/python3.9/distutils/dist.py", line 985, in run_command
#9 79.26           cmd_obj.run()
#9 79.26         File "/usr/local/lib/python3.9/site-packages/setuptools/command/install.py", line 61, in run
#9 79.26           return orig.install.run(self)
#9 79.26         File "/usr/local/lib/python3.9/distutils/command/install.py", line 546, in run
#9 79.26           self.run_command('build')
#9 79.26         File "/usr/local/lib/python3.9/distutils/cmd.py", line 313, in run_command
#9 79.26           self.distribution.run_command(command)
#9 79.26         File "/usr/local/lib/python3.9/distutils/dist.py", line 985, in run_command
#9 79.26           cmd_obj.run()
#9 79.26         File "/usr/local/lib/python3.9/distutils/command/build.py", line 135, in run
#9 79.26           self.run_command(cmd_name)
#9 79.26         File "/usr/local/lib/python3.9/distutils/cmd.py", line 313, in run_command
#9 79.26           self.distribution.run_command(command)
#9 79.26         File "/usr/local/lib/python3.9/distutils/dist.py", line 985, in run_command
#9 79.26           cmd_obj.run()
#9 79.26         File "/usr/local/lib/python3.9/site-packages/setuptools/command/build_ext.py", line 79, in run
#9 79.26           _build_ext.run(self)
#9 79.26         File "/usr/local/lib/python3.9/distutils/command/build_ext.py", line 340, in run
#9 79.26           self.build_extensions()
#9 79.26         File "/tmp/pip-install-elv3vo8i/pillow_3742a79b841d46b5a99d9899bfdece24/setup.py", line 804, in build_extensions
#9 79.26           raise RequiredDependencyException(f)
#9 79.26       __main__.RequiredDependencyException: zlib
#9 79.26       
#9 79.26       During handling of the above exception, another exception occurred:
#9 79.26       
#9 79.26       Traceback (most recent call last):
#9 79.26         File "<string>", line 2, in <module>
#9 79.26         File "<pip-setuptools-caller>", line 34, in <module>
#9 79.26         File "/tmp/pip-install-elv3vo8i/pillow_3742a79b841d46b5a99d9899bfdece24/setup.py", line 1009, in <module>
#9 79.26           raise RequiredDependencyException(msg)
#9 79.26       __main__.RequiredDependencyException:
#9 79.26       
#9 79.26       The headers or library files could not be found for zlib,
#9 79.26       a required dependency when compiling Pillow from source.
#9 79.26       
#9 79.26       Please see the install instructions at:
#9 79.26          https://pillow.readthedocs.io/en/latest/installation.html
#9 79.26       
#9 79.26       
#9 79.26       [end of output]
#9 79.26   
#9 79.26   note: This error originates from a subprocess, and is likely not a problem with pip.
#9 79.26 error: legacy-install-failure
#9 79.26 
#9 79.26 × Encountered error while trying to install package.
#9 79.26 ╰─> Pillow
#9 79.26 
#9 79.26 note: This is an issue with the package mentioned above, not pip.
#9 79.26 hint: See above for output from the failure.
------
executor failed running [/bin/sh -c pip install -r requirements.txt]: exit code: 1

当您仔细查看错误消息时,您会发现解决方案的提示:

#9 79.26       The headers or library files could not be found for zlib,
#9 79.26       a required dependency when compiling Pillow from source.

zlib 是一个 zip 文件库。因此,尝试使用发行版的默认包管理器安装它并重试:

apk add -u zlib-dev 

在安装 requirements.txt 的行之前的某处向 Dockerfile 添加一个额外的 RUN 命令(或将其添加到现有的 RUN 命令以最小化数量层数):

...

# install dependencies
RUN apk add -u zlib-dev 
RUN python3 -m pip install --upgrade pip
COPY ./requirements.txt /usr/src/app
RUN pip install -r requirements.txt

...

这应该可以做到。您需要安装构建依赖项,zlib-devjpeg-devgccmusl-dev

# pull the official base image
FROM python:3.9.6-alpine

# set work directory
WORKDIR /usr/src/app

# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

# install dependencies
RUN apk add -u zlib-dev jpeg-dev gcc musl-dev
RUN python3 -m pip install --upgrade pip
COPY ./requirements.txt /usr/src/app
RUN pip install -r requirements.txt

# copy project
COPY . /usr/src/app

EXPOSE 8000

CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]