把 pinpoint 编译环境做成 Docker 镜像文件
欢迎访问我的 GitHub
这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
在上一章《Docker下,极速体验编译pinpoint1.6.x分支》我们以最快的速度对 pinpoint1.6.x 分支进行编译构建,由于镜像文件 bolingcavalry/jdk7-mvn339-pinpoint16x-compile:0.0.1 中把 pinpoint 源码、jdk、maven 这些东西都准备好了,甚至编译中所依赖的所有 jar 包都放进了本地仓库(450 兆),使我们可以高效完成编译实战;
今天我们就来回顾一下这个镜像是怎么做的;
编译环境简述
先抛开 Docker 不谈,我们梳理一下编译构建 pinpoint 需要准备哪些东西:
linux 环境,比如:CentOS release 6.7;
提供 ssh 服务,以便上传下载文件;
jdk1.7;
maven3,例如 maven3.3.9 版本;
pinpoint 源码,git 地址是:https://github.com/naver/pinpoint.git;
pinpoint 源码的 master 目前提交比较活跃,所以建议使用 1.6.x 分支;
编译前,设置所需的环境变量,如:JAVA_HOME、JAVA_6_HOME、JAVA_7_HOME、JAVA_8_HOME 等;
比较耗时的操作
以下这些步骤相对比较耗时:
git 下载 pinpoint 源码;
编译过程中,下载依赖的 jar;
镜像规划
我们的镜像主要功能是把前面所说的编译环境搭建好,另外把那两个耗时的操作也做了,所以要把以下材料先准备好:
基础镜像,用 kinogmt/centos-ssh:6.7,集成了 ssh 服务;
准备好 jdk1.7 的安装包,构建镜像的时候本地安装;
提前把 maven3.3.9 安装包下载好,修改 setting 配置,加入阿里云的镜像服务器,构建镜像的时候直接复制到镜像中就行了;
提前下载好 pinpoint 源码,构建镜像的时候直接复制;
编译过程中会下载大量 jar 包,如果不提前准备好,编译时会耗费我们大量时间,我的做法是做个在一个干净的容器中做一次编译,这样依赖的 jar 包就保存到该容器的/root/.m2/目录下了,再把这个目录复制出来,制作镜像的时候复制到镜像就好;(不做这一步的话编译要四十多分钟,有了本地 jar 包编译时间缩短在十分钟之内);
配置好环境变量,这样容器启动后就不用自己手动配置了;
可以在我的 git 下载上述材料
上述材料我已经上传到 git 上,地址是:git@github.com:zq2599/jdk7-mvn339-pinpoint16x-compile.git,如下图:
Dockerfile
接下来可以开始制作 Dockerfile 了,详细内容如下,每行都加了注释,就不多说了:
制作镜像
在 Dockerfile 文件所在目录下,执行以下命令制作镜像:
构建完成后,执行 docker images 命令可以看到刚刚做好的镜像文件,如下图:
上就是 Docker 下 pinpoint 编译环境的制作过程,如果您有 hub.docker.com 的账号,还能用 docker push 命令将这个镜像上传到 hub.docker.com 网站上,方便自己和他人使用;
欢迎关注 InfoQ:程序员欣宸
版权声明: 本文为 InfoQ 作者【程序员欣宸】的原创文章。
原文链接:【http://xie.infoq.cn/article/ed9980f32b63af934582d9e6d】。文章转载请联系作者。
评论