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

Dmy*_*iuk 1 git docker alpine-linux

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

  • 从源> 200Mb安装 Git 的 Apline 图像
  • 通过apk add git~ 28Mb安装 Git 的 Apline 图像

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

Build version: 
18.6M   /git/usr/libexec/git-core/git
apk version: 
2.4M    /usr/libexec/git-core/git
Run Code Online (Sandbox Code Playgroud)

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

以下Dockerfile重现了该行为:

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 
Run Code Online (Sandbox Code Playgroud)