[Docker]构建maven镜像并用镜像打包
写在前面
由于项目使用的maven版本较低,在DockerHub上没有可以直接使用的maven镜像,于是自己构建了maven镜像,并使用该镜像将项目工程打包。
为什么要构建maven镜像呢?有了maven镜像之后,就不需要再在新的开发环境中安装maven了。镜像中的maven版本固定,不会出现不同开发者使用不同版本maven打包出现不必要的问题。
构建过程和maven打包过程有一些需要注意的地方,记录备查。
构建maven镜像
在前一篇博文中记录了构建java8的过程。构建maven镜像依赖于之前构建的java环境。简而言之,就是先启动一个java8的docker,然后在这个docker实例中安装maven、配置环境变量、构建成镜像,提交到私有registry。以后打包直接一句指令就可以啦。
docker实例中安装maven
这一步跟在linux中安装maven过程类似,简略说一下。注意哦,以下是正常的安装maven的步骤。但是在docker环境下会启动maven有问题。先记下,后文讲问题及我的解决方法。
- 假设你将需要安装的maven压缩包放在宿主机的
~/software
路径,想把它影射成docker内部的/mnt/software
如果java8的基础镜像名字是
java-base:1.8
,则运行以下命令启动一个以此docker实例:$ docker run -it -v ~/software:/mnt/software java-base:1.8 /bin/bash
注意,对于
java-base:1.8
这个镜像,docker会先搜索本地的images是否存在,如果不存在,默认会到dockerhub上下载。如果你之前是提交到dockerhub的,那还需要增加你的账户名(类似于zhangsan