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

2023-02-15 09:05:33 +08:00
 julyclyde

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

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

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

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

2330 次点击
所在节点    Docker
16 条回复
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
2023-02-15 09:14:02 +08:00
pyinstaller
julyclyde
2023-02-15 09:15:53 +08:00
@sarices 你用什么不靠谱的软件对这个文件进行鉴定了吗?
julyclyde
2023-02-15 09:16:14 +08:00
@StarUDream pyinstaller 生成的文件,里面有什么痕迹吗?
0312birdzhang
2023-02-15 09:23:56 +08:00
sarices
2023-02-15 09:26:35 +08:00
@julyclyde github 仓库页面右下角就有写着
sarices
2023-02-15 09:29:27 +08:00
我明白了,旧版本是 python 新版本是 go 仓库统计的是当前主版本
@julyclyde
yaoyao1128
2023-02-15 09:34:11 +08:00
pyinstaller
直接 objdump 一下就出来了……
.text 里面 pyi 开头的一堆
julyclyde
2023-02-15 09:41:23 +08:00
@sarices “不是 golang”这句话我可是写在标题里的
julyclyde
2023-02-15 09:41:57 +08:00
谢谢各位
我去看看那个 build 脚本
sherlockwhite
2023-02-15 10:12:40 +08:00
还有一个问题,我发现从 docker-compose 转到了 docker compose ,没研究怎么实现的,是通过 alias 类似的手段吗,
julyclyde
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
2023-02-15 11:55:55 +08:00
@julyclyde 不纠结这个了,还有就是为啥这个 compose 是 py 写的,golang 代码占比那么高
wheeler
2023-02-15 12:16:50 +08:00
compose v2 用 go 重写的。
julyclyde
2023-02-15 12:34:26 +08:00
@sherlockwhite 新版 compose 是 go 的;旧版是 py
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

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

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

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

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

© 2021 V2EX