我想在我的docker容器中安装maven
。这是我的Dockerfile:
WORKDIR /usr/local
RUN wget http://ftp.twaren.net/Unix/Web/apache/maven/maven-3/3.3.3/binaries/apache-maven-3.3.3-bin.tar.gz -O - | tar -xz
WORKDIR /usr/local/bin
RUN ln -s ../apache-maven-3.3.3/bin/mvn .
问题是:
http://ftp.twaren.net/
yum install maven
?因为我已经安装了jdk8,但是epel
存储库中的maven依赖于jdk7,它将安装旧版本并将其设置为默认值。非常感谢。
答案 0 :(得分:1)
我希望它会找到https://maven.apache.org/download.cgi报告的最近的服务器,而不是这个硬编码的http://ftp.twaren.net/
我刚刚复制了他们为official maven image所做的事情。这将至少让你从更正式的东西而不是随机镜像下载。虽然不会解决邻近问题。
我不想在Dockerfile中硬编码版本3.3.3 ......
这里几件事。与您的问题最直接相关的是,您可以编写一些内容来自行解析该信息并在Dockerfile中使用它。然而,这将是复杂的,并且可能很脆弱。
我认为将maven版本烘焙到构建中实际上是一件好事。这样你的构建是可重复的(而且很简单)。如果它在构建时抓住了最新版本,那么你获得的maven版本将无法控制。当您想要发布图像时,这会很难,因为您不会轻易知道如何标记它。例如是my-maven:3.3.3
还是my-maven:3.3.4
?您也可以不再将特定版本的maven图像绑定到Dockerfile的版本。
所有这一切,Docker 1.9获得了--build-arg标志,允许您指定在构建时Dockerfile
中使用的变量。这样,您可以将要构建的maven版本传递到图像中,而无需修改Dockerfile
。听起来这样会让你的生活更轻松。
希望这一切都有帮助!