如何在 Docker Alpine 上构建 Git 时减小 Git 二进制文件的大小?

How to decrease Git binaries size while building Git on Docker Alpine?

我正在围绕 Git 开发一个名为 Elegant Git 的包装器,并希望在多个 Git 版本上进行测试 运行。由于该项目使用 Docker 容器进行测试,我准备了一个 Docker 文件,它从源代码安装 Git 并得到了奇怪的结果:

它反映了每个创建的二进制文件的大小

Build version: 
18.6M   /git/usr/libexec/git-core/git
apk version: 
2.4M    /usr/libexec/git-core/git

在从源构建 Git 时有没有办法减小二进制文件的大小?

以下 Docker 文件 重现了该行为:

ARG bashversion=3.2.57
FROM bash:${bashversion}
ARG gitversion=2.26.2
WORKDIR /git

RUN apk add --no-cache curl && \
    curl --output git-${gitversion}.tar.gz \
         https://mirrors.edge.kernel.org/pub/software/scm/git/git-${gitversion}.tar.gz && \
    tar -xvzf git-${gitversion}.tar.gz && \
    mkdir -p /git

RUN apk add --no-cache \
        zlib-dev \
        openssl-dev \
        curl-dev \
        expat-dev \
        perl-dev \
        python3-dev \
        pcre2-dev \
        asciidoc \
        xmlto \
        perl-error tcl tk make gcc g++ 

RUN cd git-${gitversion} && \
    make prefix=/usr DESTDIR=/git NO_GETTEXT=YesPlease NO_REGEX=YesPlease ICONV_OMITS_BOM=Yes && \ 
    make prefix=/usr DESTDIR=/git NO_GETTEXT=YesPlease NO_REGEX=YesPlease ICONV_OMITS_BOM=Yes install

RUN apk add --no-cache git && \
    echo "Build version: " && \
    du -ha /git/usr/libexec/git-core/git | sort && \
    echo "apk version: " && \
    du -ha /usr/libexec/git-core/git | sort 

我想 apk 版本中不存在调试数据。如果您在 make install 之前 运行 make strip,那可能会减小可执行文件的大小。