您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在Docker Alpine中安装熊猫

在Docker Alpine中安装熊猫

如果您未绑定Alpine 3.6,则应使用Alpine 3.7(或更高版本)。

在Alpine 3.6上,安装matplotlib失败:

Collecting matplotlib
  Downloading https://files.pythonhosted.org/packages/26/04/8b381d5b166508cc258632b225adbafec49bbe69aa9a4fa1f1b461428313/matplotlib-3.0.3.tar.gz (36.6MB)
    Complete output from command python setup.py egg_info:
    Download error on https://pypi.org/simple/numpy/: [SSL: CERTIFICATE_VERIFY_Failed] certificate verify Failed (_ssl.c:833) -- Some packages may not be found!
    Couldn't find index page for 'numpy' (maybe misspelled?)
    Download error on https://pypi.org/simple/: [SSL: CERTIFICATE_VERIFY_Failed] certificate verify Failed (_ssl.c:833) -- Some packages may not be found!
    No local packages or working download links found for numpy>=1.10.0

但是,在Alpine 3.7上,它起作用了。这可能是由于numpy版本问题(请参阅此处),但是我无法确定。克服了这个问题,软件包的构建和安装成功完成- 花了大约30分钟的时间(由于Alpine的musl-libc与Python的Wheels格式不兼容,因此所有使用pip安装的软件包都必须从源代码构建)。

请注意,这是一项重要的更改:您只应在之后删除build-runtime虚拟包(apk del build-runtimepip install。此外,如果适用,您可以取代numpy的1.16.11.16.2,这是出厂的版本(否则1.16.2将被卸载,1.16.1从源头建立,进一步提高构建时间) -我还没有尝试这样做,虽然。

作为参考,这是我稍作修改Dockerfiledockerbuild输出

通常,选择Alpine作为最小化图像大小的基础(Alpine也很光滑,但是由于glibc / musl而与大陆Linux应用程序存在兼容性问题)。为此,必须从源代码构建Python软件包,因为您会得到一个非常肿的映像- 在进行任何清理之前需要900MB,这也需要很长时间才能构建。可以通过除去所有中间编译工件,构建依赖项等来极大地压缩映像,但是仍然可以。

如果无法获得Python软件包版本,而无需从源代码构建它们,则需要在Alpine上工作,我建议您尝试使用其他更小,更兼容的基本映像,例如debian- slimubuntu

在具有附加要求的“编辑3”之后,这里是更新的Dockerfile和Dockerbuild输出添加了以下软件包来满足构建依赖性:

postgresql-dev libffi-dev libressl-dev libxml2 libxml2-dev libxslt libxslt-dev libjpeg-turbo-dev zlib-dev

对于由于特定标头而无法构建的软件包,我使用了Alpine的软件包内容搜索来查找丢失的软件包。专门针对cffiffi.h缺少标头,需要libffi- dev打包:https ://pkgs.alpinelinux.org/contents?file=ffi.h&path=&name=&branch=v3.7。

或者,当软件包构建失败不是很明显时,可以参考特定软件包的安装说明,例如Pillow

在压缩之前,新的映像大小为1.04GB。为了减少它,您可以删除Python和pip缓存:

RUN apk del build-runtime && \
    find -type d -name __pycache__ -prune -exec rm -rf {} \; && \
    rm -rf ~/.cache/pip

使用时,图片大小可减少到661MB docker build --squash

其他 2022/1/1 18:23:19 有534人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶