1.背景说明
先来了解一下比较典型的java项目发布工作流程:
1.java项目开发 >> 2.提交项目代码到(git或svn) >> 3. 拉取项目代码(jenkins或手动) >> 4.编译项目代码(jenkins或手动) >> 5.发布java项目,并运行java项目 >> 6.测试
在来看看用docker+jenkins+git发布java项目流程又是怎样的呢:
1.java项目开发 >> 2.提交项目代码git容器 >> 3.jenkins容器拉取项目代码 >> 4.maven编译构建项目 >> 5.jenkins发布项目到tomcat容器 >> 6.测试
2.环境描述
1、服务器部署信息
说明:
- 本文中完全是模拟生产环境中服务器的规划:git单独部署、jenkins单独部署。如果你没有这么多服务器,可以把git服务器和jenkins服务器放在一起来测试。前提是不要搞晕了就可以。
- tale是一个java写的开源博客系统,这个项目没有任何依赖,所以在此次测试中可以用它做为构建、部署的对象。当然如果你有其它的java项目也可以不用它来测试。
- tale访问地址:https://github.com/otale/tale.git
2、版本信息
3.部署环境
1、安装git
2、创建git用户
3、创建仓库
创建app.git仓库,仓库名自定义,这一步需要切换刚才创建的git用户操作
3.2 验证git服务
1、下载git客户端
2、下载tale项目包
3、生成公钥,拷贝到git服务器
4、用git clone验证
5、把之前下载的tale项目push到app.git仓库中
3.3 配置docker服务器
1、安装Docker
2、配置镜像源为国内官方源
注意书写格式为json格式,有严格的书写要求;
第1行是国内镜像源,第2行是docker私有仓库地址;
172.18.18.34就是docker私有仓库的地址,添加后连接docker私有仓库就是用http协议了。
3、启动dokcer服务
4.构建tale开源博客的基础镜像
说明:此Dockerfile以centos7为基础镜像,通过yum安装nginx、supervisor服务。定义jdk的环境变量,并通过supervisord来启动nginx和java项目。下面来看下supervisord.conf配置。
上面的配置都是基础配置,分别是通过java -jar启动tale-least:jar包,nginx -g 启动nginx服务。
然后,构建镜像:
对tale:base镜像打tag,并上传到registry私有仓库:
生成jenkins镜像
Dockerfile说明:
- 第1行FROM引用了官方镜像jenkins,这个jenkins是基于debiant系统构建的。
- 第2行USER使用root用户来运行。
- 第3行RUN更改了apt-get源为国内163的源。
- 第4行RUN是安装git客户端,由于官方的jenkins镜像没有安装git客户端,我们需要在jenkins容器中调用git命令,所以在此需要安装下git客户端,当然你也可以启动jenkins容器后在容器中安装;不过笔者建议需要安装的东西最好的Dockerfile中就弄好。
构建jenkins镜像
创建jenkins镜像
参数说明,上面的参数都是最常用的,都比较很简单很好理解
-d:在后台运行容器;
-p:映射端口;
-v:宿主机的目录挂载到容器;/var/jenkins_home 这个目录在宿主机中空的,这是把容器中的jenkinis主目录绑定到宿主机中来,其它的两个目录是之前解压的工具;
来查看jenkins运行状态: