这篇文章介绍一下如何创建一个Ant的镜像。
Apache Ant其他各版本所需要的JDK的版本支持如下所示
Ant版本 所需要的JDK版本 Ant 1.10.* JDK 1.8 及以上 Ant 1.9.* JDK 1.5 及以上 Ant 1.8.* JDK 1.4 及以上 Ant 1.7.* JDK 1.3 及以上 Ant 1.6.* JDK 1.2 及以上 Ant 1.2 至 Ant 1.5.* JDK 1.1 及以上 下载地址- Apache Ant 1.10.7的tar.gz二进制文件压缩包下载地址:http://mirrors.tuna.tsinghua.edu.cn/apache//ant/binaries/apache-ant-1.10.7-bin.tar.gz
export ANT_HOME=/usr/local/ant/ export PATH=$PATH:${ANT_HOME}/bin
此处环境变量设定需保证解压后不会多一层文件夹,所以在解压时使用strip-components=1来解决这个问题
Dockerfile参照如上内容,作出如下Dockerfile
liumiaocn:ant liumiao$ cat Dockerfile ############################################################################### # #IMAGE: ant #VERSION: 1.10.7 # ############################################################################### FROM openjdk:8-jdk-alpine ############################################################################### #MAINTAINER ############################################################################### MAINTAINER LiuMiao ARG ANT_VERSION=1.10.7 ARG ANT_SHA=838ce70c7dbd2b53068ce17b169c0b3fbed5e0ab7be5c707f052418fb6a4a1620f2d4017ceca1379cd25edce3e46d70bb2b5de4e1c5c52e2e1275deec1228084 ARG BASE_URL=http://mirrors.tuna.tsinghua.edu.cn/apache//ant/binaries/apache-ant-${ANT_VERSION}-bin.tar.gz RUN apk update \ && apk add --no-cache curl tar bash \ && mkdir -p /usr/local/ant \ && curl -fsSL -o /tmp/apache-ant.tar.gz ${BASE_URL} \ && sha512sum /tmp/apache-ant.tar.gz \ && echo "${ANT_SHA} /tmp/apache-ant.tar.gz" | sha512sum -c - \ && tar -xzf /tmp/apache-ant.tar.gz -C /usr/local/ant --strip-components=1 \ && rm -f /tmp/apache-ant.tar.gz \ && ln -s /usr/local/ant/bin/ant /usr/bin/ant ENV ANT_HOME /usr/local/ant ENV PATH $PATH:${ANT_HOME} CMD ["ant"] liumiaocn:ant liumiao$
注意事项:sha512sum返回的信息,中间有两个空格,注意不要写错,不然会校验不过去。
镜像构建使用之前的缓存,快速完成了构建,构建日志如下所示:
liumiaocn:ant liumiao$ docker build -t liumiaocn/ant:1.10.7 . Sending build context to Docker daemon 6.144kB Step 1/9 : FROM openjdk:8-jdk-alpine ---> 3675b9f543c5 Step 2/9 : MAINTAINER LiuMiao ---> Using cache ---> 58c6d7e26dc2 Step 3/9 : ARG ANT_VERSION=1.10.7 ---> Using cache ---> 2e9bfa64dc66 Step 4/9 : ARG ANT_SHA=838ce70c7dbd2b53068ce17b169c0b3fbed5e0ab7be5c707f052418fb6a4a1620f2d4017ceca1379cd25edce3e46d70bb2b5de4e1c5c52e2e1275deec1228084 ---> Using cache ---> c264ab658646 Step 5/9 : ARG BASE_URL=http://mirrors.tuna.tsinghua.edu.cn/apache//ant/binaries/apache-ant-${ANT_VERSION}-bin.tar.gz ---> Using cache ---> 69bf5bee6344 Step 6/9 : RUN apk update && apk add --no-cache curl tar bash && mkdir -p /usr/local/ant && curl -fsSL -o /tmp/apache-ant.tar.gz ${BASE_URL} && sha512sum /tmp/apache-ant.tar.gz && echo "${ANT_SHA} /tmp/apache-ant.tar.gz" | sha512sum -c - && tar -xzf /tmp/apache-ant.tar.gz -C /usr/local/ant --strip-components=1 && rm -f /tmp/apache-ant.tar.gz && ln -s /usr/local/ant/bin/ant /usr/bin/ant ---> Using cache ---> 5e5b7d1e51da Step 7/9 : ENV ANT_HOME /usr/local/ant ---> Using cache ---> 4c797ca09bf7 Step 8/9 : ENV PATH $PATH:${ANT_HOME} ---> Using cache ---> a0db7306fdc8 Step 9/9 : CMD ["ant"] ---> Running in b6df8b2641a7 Removing intermediate container b6df8b2641a7 ---> ecb92fafd590 Successfully built ecb92fafd590 Successfully tagged liumiaocn/ant:1.10.7 liumiaocn:ant liumiao$版本与环境变量确认
[root@liumiaocn ant]# docker run --rm -it ant:1.10.7 ant -version Apache Ant(TM) version 1.10.7 compiled on September 1 2019 [root@liumiaocn ant]# docker run --rm -it ant:1.10.7 env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-1.8-openjdk/jre/bin:/usr/lib/jvm/java-1.8-openjdk/bin:/usr/local/ant HOSTNAME=deee5ce552f6 TERM=xterm LANG=C.UTF-8 JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk JAVA_VERSION=8u212 JAVA_ALPINE_VERSION=8.212.04-r0 ANT_HOME=/usr/local/ant HOME=/root [root@liumiaocn ant]#
镜像已经push到了dockerhub上,Dockerfile也放到了easypack的github中,可以直接下载使用。