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

问题描述 投票:1回答:1

我正在开发一个关于Git的包装器,叫做 优雅的Git 并想让测试在多个Git版本上运行。由于项目使用Docker容器进行测试,我准备了一个从源头安装Git的Docker文件,得到了奇怪的结果。

  • 从源头安装Git的Apline镜像 > 200Mb
  • 安装了Git的Apline镜像,通过 apk add git ~ 28Mb

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

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 
git docker alpine
1个回答
5
投票

我猜想apk版本中不存在调试数据。如果你运行 make strip 之前 make install这将可能减少可执行文件的大小。

© www.soinside.com 2019 - 2024. All rights reserved.