Docker 安装不同版本的 git

Docker installs different version of git

我正在尝试用一些工具做一个容器,其中之一是git.

我需要 git 1.8.4.2 我从这里下载了 tarball

https://github.com/git/git/archive/v1.8.4.2.tar.gz

首先尝试在 vanilla centos:7 容器中进行所有设置以进行测试并且效果很好。

问题是当我使用命令构建容器时,它会安装 git 1.8.4.1。这个版本可能适用于我将要做的事情,但是 我很好奇如果我使用相同的 tarball 和相同的命令为什么会发生这种情况。

这是我的 Dockerfile

FROM centos:7

## Installing git 1.8.4.2

RUN yum -y install gcc make
RUN yum -y install wget zlib-devel openssl-devel cpio expat-devel gettext-devel curl-devel perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker
RUN wget -O v1.8.4.2.tar.gz https://github.com/git/git/archive/v1.8.4.2.tar.gz
RUN tar -xzvf ./v1.8.4.2.tar.gz
RUN cd git-1.8.4.2/ \
make prefix=/usr/local all \
make prefix=/usr/local install

构建容器时的输出

[root@adbc2f7ab54f git-1.8.4.2]# git --version
git version 1.8.3.1

手动时输出

root@adbc2f7ab54f git-1.8.4.2]# git --version
git version 1.8.4.2

您的 Dockerfile 的最后三行指定了一个命令:

cd git-1.8.4.2/ make prefix=/usr/local all make prefix=/usr/local install

...这是行不通的。结果git1.8.4.2没有编译,没有安装,容器中git的版本是CentOS 7(1.8.3.1)自带的[=14] =]

您需要在三个命令之间添加&&

RUN cd git-1.8.4.2/ \
&& make prefix=/usr/local all \
&& make prefix=/usr/local install