docker Python :alpine 的坑

2022-05-26 07:28:49 +08:00
 zx900930
alpine 作为 builder 支持的 wheel 太少了
一堆 package 都没有 wheel, 特别是 arm64 的 wheel
光一个 1.4.2 的 pandas 在 github actions 上就编译了 6 个小时(py3-pandas 只给到 1.3.2)....
用 debian 编译就 7 分钟

试着用 debian 做 builder
alpine 做 runner
结果用到 glibc 的库就会出现 __sched_cpufree: symbol not found 之类的 bug....

最后发现 debian/ubuntu 做 builder, slim-debian/ubuntu 做 runner 才是最优解.
我自己的项目,最后编译完成的 debian image 只比 alpine 的大 50M 左右.
如果不是寸土寸金的, 真的建议 python 项目用 debian/ubuntu 做底包, 节约你宝贵的 debug 时间.
2163 次点击
所在节点    Docker
12 条回复
zeusho871
2022-05-26 08:01:30 +08:00
alpine 省的那点体积还是用 debian 合适
Cooky
2022-05-26 08:07:24 +08:00
上 conda ?
noqwerty
2022-05-26 08:13:48 +08:00
Alpine 真是没什么必要,平时 Docker 用的比较多的话总会有其他用 Debian/Ubuntu 作为 base image 的第三方 Docker image
Bingchunmoli
2022-05-26 08:15:49 +08:00
py 的 pip 不大能做到 clone 安装即用,经常遇见开源项目花式依赖错误
ospider
2022-05-26 08:50:13 +08:00
生产环境用 alpine 的都是勇士。为了节约一丢丢磁盘,耗费 CPU 和内存,尤其是耗费人的精力,不值当的。
ClericPy
2022-05-26 09:46:23 +08:00
有木有考虑过 nuitka 打包成二进制直接运行, 不过体积大了不少, 而且只在基础运算有性能提升, 协程高并发甚至会反优化...

一般情况下会有个祖传 Python 镜像, 都用它的话也不浪费空间, alpine 真的各种缺失搞的头疼, 很多内核缓存的优化也都没了, 得不偿失, 有这功夫我直接丢 Serverless 上去了
arischow
2022-05-26 10:02:53 +08:00
是的,不值得
WildCat
2022-05-26 10:06:27 +08:00
Pro Tip of Docker: Don't use Alpine.
wonderfulcxm
2022-05-26 10:09:28 +08:00
是的,吃过几次亏
timpaik
2022-05-26 10:18:45 +08:00
这个问题好像其实是因为 alpine 没有 glibc 而是用了 musl ,所以有一堆东西需要重新编译。用 alpine 之前应该先了解了解。
Vegetable
2022-05-26 10:20:46 +08:00
没有专业运维用什么 alpine ,python:3 / ubuntu:20.04 一把梭
cheneydog
2022-05-26 16:43:59 +08:00
alpine 我觉得更适合用在嵌入式设备 /小型专业程序。
用 python 、nodejs 开发这种快速胶水项目 ubuntu 就很搭。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/855343

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX