docker-compose 那个单文件是怎么编译出来的。不是 golang! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
julyclyde
V2EX    Docker

docker-compose 那个单文件是怎么编译出来的。不是 golang!

  •  
  •   julyclyde
    julyclyde 2023-02-15 09:05:33 +08:00 2844 次点击
    这是一个创建于 1044 天前的主题,其中的信息可能已经有所发展或是发生改变。

    旧版 docker-compose 我一直以为是 python 写的,包括我手头的 rpm 版本和听说过的 pip 版本

    直到有一天在某台机器上发现一个“单个文件”的,并且 ldd 它基本上没有什么外部依赖 我还以为是 golang 那个新版本,但是版本号很旧啊才 1.5.0rc1

    用 strings 命令读了一下那个文件,发现里边有 libpython.so 之类的字样,应该是从 python 编译出来的单个可执行文件 https://github.com/docker/compose/releases/tag/1.5.0rc1

    这种文件是怎么编译出来的呢?

    16 条回复    2023-03-02 14:49:28 +08:00
    sarices
        1
    sarices  
       2023-02-15 09:13:50 +08:00
    Languages
    Go
    95.4%

    Dockerfile
    2.9%

    Makefile
    0.7%

    Gherkin
    0.5%

    HCL
    0.3%

    Shell
    0.1%

    HTML
    0.1%
    StarUDream
        2
    StarUDream  
       2023-02-15 09:14:02 +08:00
    pyinstaller
    julyclyde
        3
    julyclyde  
    OP
       2023-02-15 09:15:53 +08:00
    @sarices 你用什么不靠谱的软件对这个文件进行鉴定了吗?
    julyclyde
        4
    julyclyde  
    OP
       2023-02-15 09:16:14 +08:00
    @StarUDream pyinstaller 生成的文件,里面有什么痕迹吗?
    sarices
        6
    sarices  
       2023-02-15 09:26:35 +08:00
    @julyclyde github 仓库页面右下角就有写着
    sarices
        7
    sarices  
       2023-02-15 09:29:27 +08:00
    我明白了,旧版本是 python 新版本是 go 仓库统计的是当前主版本
    @julyclyde
    yaoyaomoe
        8
    yaoyaomoe  
       2023-02-15 09:34:11 +08:00 via iPhone   1
    pyinstaller
    直接 objdump 一下就出来了……
    .text 里面 pyi 开头的一堆
    julyclyde
        9
    julyclyde  
    OP
       2023-02-15 09:41:23 +08:00
    @sarices “不是 golang”这句话我可是写在标题里的
    julyclyde
        10
    julyclyde  
    OP
       2023-02-15 09:41:57 +08:00
    谢谢各位
    我去看看那个 build 脚本
    sherlockwhite
        11
    sherlockwhite  
       2023-02-15 10:12:40 +08:00
    还有一个问题,我发现从 docker-compose 转到了 docker compose ,没研究怎么实现的,是通过 alias 类似的手段吗,
    julyclyde
        12
    julyclyde  
    OP
       2023-02-15 10:15:16 +08:00
    @sherlockwhite
    $ rpm -ql docker-compose-plugin
    /usr/libexec/docker/cli-plugins/docker-compose
    /usr/share/doc/docker-compose-plugin
    /usr/share/doc/docker-compose-plugin/LICENSE
    /usr/share/doc/docker-compose-plugin/MAINTAINERS
    /usr/share/doc/docker-compose-plugin/NOTICE
    /usr/share/doc/docker-compose-plugin/README.md
    /usr/share/licenses/docker-compose-plugin
    /usr/share/licenses/docker-compose-plugin/LICENSE
    /usr/share/licenses/docker-compose-plugin/NOTICE

    看起来是把 compose 放到了 docker cli 的 plugin 目录里?
    sherlockwhite
        13
    sherlockwhite  
       2023-02-15 11:55:55 +08:00
    @julyclyde 不纠结这个了,还有就是为啥这个 compose 是 py 写的,golang 代码占比那么高
    wheeler
        14
    wheeler  
       2023-02-15 12:16:50 +08:00 via iPhone
    compose v2 用 go 重写的。
    julyclyde
        15
    julyclyde  
    OP
       2023-02-15 12:34:26 +08:00
    @sherlockwhite 新版 compose 是 go 的;旧版是 py
    qq296015668
        16
    qq296015668  
       2023-03-02 14:49:28 +08:00
    v1 打包 pyinstaller docker-compose.spec
    v2 打包 go build -trimpath -tags "$BUILD_TAGS" -ldflags "$(cat /tmp/.ldflags) -w -s" -o dist/docker-compose ./cmd
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3969 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 05:16 PVG 13:16 LAX 21:16 JFK 00:16
    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