V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
zx900930
V2EX  ›  Docker

docker Python :alpine 的坑

  •  
  •   zx900930 ·
    zx900930 · May 26, 2022 · 2827 views
    This topic created in 1444 days ago, the information mentioned may be changed or developed.
    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 replies    2022-05-26 16:43:59 +08:00
    zeusho871
        1
    zeusho871  
       May 26, 2022 via Android
    alpine 省的那点体积还是用 debian 合适
    Cooky
        2
    Cooky  
       May 26, 2022
    上 conda ?
    noqwerty
        3
    noqwerty  
       May 26, 2022
    Alpine 真是没什么必要,平时 Docker 用的比较多的话总会有其他用 Debian/Ubuntu 作为 base image 的第三方 Docker image
    Bingchunmoli
        4
    Bingchunmoli  
       May 26, 2022 via Android
    py 的 pip 不大能做到 clone 安装即用,经常遇见开源项目花式依赖错误
    4BVL25L90W260T9U
        5
    4BVL25L90W260T9U  
       May 26, 2022   ❤️ 1
    生产环境用 alpine 的都是勇士。为了节约一丢丢磁盘,耗费 CPU 和内存,尤其是耗费人的精力,不值当的。
    ClericPy
        6
    ClericPy  
       May 26, 2022
    有木有考虑过 nuitka 打包成二进制直接运行, 不过体积大了不少, 而且只在基础运算有性能提升, 协程高并发甚至会反优化...

    一般情况下会有个祖传 Python 镜像, 都用它的话也不浪费空间, alpine 真的各种缺失搞的头疼, 很多内核缓存的优化也都没了, 得不偿失, 有这功夫我直接丢 Serverless 上去了
    arischow
        7
    arischow  
       May 26, 2022 via iPhone
    是的,不值得
    WildCat
        8
    WildCat  
       May 26, 2022
    Pro Tip of Docker: Don't use Alpine.
    wonderfulcxm
        9
    wonderfulcxm  
       May 26, 2022 via iPhone
    是的,吃过几次亏
    timpaik
        10
    timpaik  
       May 26, 2022 via Android
    这个问题好像其实是因为 alpine 没有 glibc 而是用了 musl ,所以有一堆东西需要重新编译。用 alpine 之前应该先了解了解。
    Vegetable
        11
    Vegetable  
       May 26, 2022
    没有专业运维用什么 alpine ,python:3 / ubuntu:20.04 一把梭
    cheneydog
        12
    cheneydog  
       May 26, 2022
    alpine 我觉得更适合用在嵌入式设备 /小型专业程序。
    用 python 、nodejs 开发这种快速胶水项目 ubuntu 就很搭。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   899 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 21:24 · PVG 05:24 · LAX 14:24 · JFK 17:24
    ♥ Do have faith in what you're doing.