如果您未绑定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-runtime)
pipinstall。此外,如果适用,您可以取代numpy的
1.16.1有
1.16.2,这是出厂的版本(否则
1.16.2将被卸载,
1.16.1从源头建立,进一步提高构建时间)
-我还没有尝试这样做,虽然。
作为参考,这是我稍作修改的Dockerfile和docker
build输出。
注意:
通常,选择Alpine作为最小化图像大小的基础(Alpine也很光滑,但是由于glibc /
musl而与大陆Linux应用程序存在兼容性问题)。为此,必须从源代码构建Python软件包,因为您会得到一个非常肿的映像-
在进行任何清理之前需要900MB,这也需要很长时间才能构建。可以通过除去所有中间编译工件,构建依赖项等来极大地压缩映像,但是仍然可以。
如果无法获得Python软件包版本,而无需从源代码构建它们,则需要在Alpine上工作,我建议您尝试使用其他更小,更兼容的基本映像,例如
debian-slim或
ubuntu。
编辑:
在具有附加要求的“编辑3”之后,这里是更新的Dockerfile和Docker
build输出。添加了以下软件包来满足构建依赖性:
postgresql-dev libffi-dev libressl-dev libxml2 libxml2-dev libxslt libxslt-dev libjpeg-turbo-dev zlib-dev
对于由于特定标头而无法构建的软件包,我使用了Alpine的软件包内容搜索来查找丢失的软件包。专门针对
cffi,
ffi.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。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)