docker Python :alpine 的坑 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zx900930
V2EX    Docker

docker Python :alpine 的坑

  •  
  •   zx900930
    zx900930 2022-05-26 07:28:49 +08:00 2584 次点击
    这是一个创建于 1301 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 时间.
    12 条回复    2022-05-26 16:43:59 +08:00
    zeusho871
        1
    zeusho871  
       2022-05-26 08:01:30 +08:00 via Android
    alpine 省的那点体积还是用 debian 合适
    Cooky
        2
    Cooky  
       2022-05-26 08:07:24 +08:00
    上 conda ?
    noqwerty
        3
    noqwerty  
       2022-05-26 08:13:48 +08:00
    Alpine 真是没什么必要,平时 Docker 用的比较多的话总会有其他用 Debian/Ubuntu 作为 base image 的第三方 Docker image
    Bingchunmoli
        4
    Bingchunmoli  
       2022-05-26 08:15:49 +08:00 via Android
    py 的 pip 不大能做到 clone 安装即用,经常遇见开源项目花式依赖错误
    4BVL25L90W260T9U
        5
    4BVL25L90W260T9U  
       2022-05-26 08:50:13 +08:00   1
    生产环境用 alpine 的都是勇士。为了节约一丢丢磁盘,耗费 CPU 和内存,尤其是耗费人的精力,不值当的。
    ClericPy
        6
    ClericPy  
       2022-05-26 09:46:23 +08:00
    有木有考虑过 nuitka 打包成二进制直接运行, 不过体积大了不少, 而且只在基础运算有性能提升, 协程高并发甚至会反优化...

    一般情况下会有个祖传 Python 镜像, 都用它的话也不浪费空间, alpine 真的各种缺失搞的头疼, 很多内核缓存的优化也都没了, 得不偿失, 有这功夫我直接丢 Serverless 上去了
    arischow
        7
    arischow  
       2022-05-26 10:02:53 +08:00 via iPhone
    是的,不值得
    WildCat
        8
    WildCat  
       2022-05-26 10:06:27 +08:00
    Pro Tip of Docker: Don't use Alpine.
    wonderfulcxm
        9
    wonderfulcxm  
       2022-05-26 10:09:28 +08:00 via iPhone
    是的,吃过几次亏
    timpaik
        10
    timpaik  
       2022-05-26 10:18:45 +08:00 via Android
    这个问题好像其实是因为 alpine 没有 glibc 而是用了 musl ,所以有一堆东西需要重新编译。用 alpine 之前应该先了解了解。
    Vegetable
        11
    Vegetable  
       2022-05-26 10:20:46 +08:00
    没有专业运维用什么 alpine ,python:3 / ubuntu:20.04 一把梭
    cheneydog
        12
    cheneydog  
       2022-05-26 16:43:59 +08:00
    alpine 我觉得更适合用在嵌入式设备 /小型专业程序。
    用 python 、nodejs 开发这种快速胶水项目 ubuntu 就很搭。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     912 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 22:04 PVG 06:04 LAX 14:04 JFK 17:04
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86