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运行状态: