基于jenkins+docker+git的项目自动化部署

终于完工了,终于彻底的成功了,终于有一点点成效了,乘着还有点时间,记录一下,免得忘记。

一:环境

1、安装有docker的linux服务器(ip地址:17x.17.85.x)(如何安装?:Docker入门级操作:docker安装及下载镜像)、安装jenkins的服务器(ip地址:17x.16.81.x),githab,项目文件如图:基于jenkins+docker+git的项目自动化部署_第1张图片

二、对项目的处理

1、在项目的启动项目xxx_war目录下的pom.xml文件中的


     
   此处添加下面那段话
 
    

加入这一段:

    
		com.spotify
		docker-maven-plugin
		0.4.14
		
            
			${project.name}:${project.version}
			
			${project.basedir}
			false
			
				
				
				${project.build.directory}
				${project.build.finalName}.jar
				
			
		
	

2、在你的pom.xml文件所指的dockerDirectory,(dockerfile的存放位置)放一个Dockerfile文件,我的位置在这里:基于jenkins+docker+git的项目自动化部署_第2张图片

dockerfile文件内容比较简单,主要取决于你的基础镜像的好坏,我的就很需要优化,哈哈

# dockerfile 基础配置
FROM 基础镜像

MAINTAINER 作者信息

# CI会在编译Docker镜像之前把编译产物拷贝到target目录下
COPY /target/*.war /opt/tomcat7/webapps/xxx.war
# configuration of java and tomcat ENV 
ENV JAVA_HOME /opt/jdk
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
ENV CATALINA_HOME /opt/tomcat7
ENV CATALINA_BASE /opt/tomcat7
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
#设置启动命令
ENTRYPOINT ["/opt/tomcat7/bin/catalina.sh","run"]

3、在每一个pom.xml文件中添加下面文件,(解决jenkins使用maven编译时报乱码的错误)


	
	UTF-8
	UTF-8
	
	UTF-8

项目的处理大致就是这些。其中特别注意的是dockerfile文件的位置和war位置需要注意。

三、对jenkins的处理

开始我按照网上各种方法都尝试了,但是我的知识实在有限,理解不了,想到这个方法是因为我一直在Xmanager工具里面操作docker所以才想到在jenkin里面使用ssh对安装有docker的服务器进行操作。所以感觉比较简单,我能够理解的方法。

1、首先公司jenkins已经安装在windows的服务器上了,并且安装了ssh和maven。

2、在安装jenkins的服务器上面添加环境变量(检查安装docker的环境看是否端口已开通:后面添加):

基于jenkins+docker+git的项目自动化部署_第3张图片

DOCKER_HOST tcp://xxx.xxx.xxx.xxx:2375

3、通过jenkins的可视化界面添加可远程控制装有docker 的服务器,单击系统管理--》系统设置--》SSH remote hosts中添加ssh相关信息,步骤如图:

基于jenkins+docker+git的项目自动化部署_第4张图片

3、创建新项目

1)在jenkins的可视化界面中点击新建--》添加项目名称--》构建一个自由风格的软件项目--》左下角点击OK步骤如图:

基于jenkins+docker+git的项目自动化部署_第5张图片

2)点击项目名称进入项目--》配置

   1.添加项目描述等基础信息

基于jenkins+docker+git的项目自动化部署_第6张图片

   2.源码管理:公司有svn也有用git,以git为示例。

基于jenkins+docker+git的项目自动化部署_第7张图片

  3.构建

这里的每一个指令都要是正确的,一个地方错了,构建就不会成功。特别要注意空格、分号、名称对应等等小细节。

基于jenkins+docker+git的项目自动化部署_第8张图片

通过ssh对docker环境的控制,此处的判断是如果在docker环境中已经有此项目的容器正在运行,那么先停止容器,然后删除容器,再删除镜像,特别注意的是删除容器是rm,删除镜像是rmi。(:1.0.0-SNAPSHOT)双引号后面的是版本号。镜像名称应当和pom.xml将形成的镜像名称中的一致。

if docker ps -a|grep -i xxxget; then 
docker stop xxxget; 
docker rm xxxget; 
docker rmi xxxget_war:1.0.0-SNAPSHOT;
 fi

基于jenkins+docker+git的项目自动化部署_第9张图片

这个语句非常重要,将这个语句实现两个功能,一个cd xxx_war是将创建环境转换到启动项目下面(默认在jenkins创建的项目运行目录下,也就是testxxxfet下),第二mvn -am -amd 就是build项目的启动子项目以及与之相关联的子项目。大家需要修改的是启动子项目的名称。

cd xxxget_war && mvn  -am -amd clean package docker:build

基于jenkins+docker+git的项目自动化部署_第10张图片

这个语句是启动项目镜像的容器,其中18080为docker对外的接口,可以根据需要修改,--name后面是你请动的容器的名称,后面是镜像名称,应当和pom.xml文件中生成的镜像名称一致,当jenkins运行到了这一步说明你的镜像已经打包成功了,你在你的docker环境下可以看到你的镜像(使用:

docker images

查看镜像)

docker run -it -d -p 18080:8080 --name xxxget xxxget_war:1.0.0-SNAPSHOT /bin/bash

4.构建后的操作:

基于jenkins+docker+git的项目自动化部署_第11张图片

这里是构建完成之后,jenkins给你邮箱发送构建信息。

到此你的jenkins配置基本完成了,你也可以在加上一些时间的限制,比如说,规定每天的某个时间自动构建一下项目等等。

4、启动项目的构建

基于jenkins+docker+git的项目自动化部署_第12张图片

配置完成之后回到项目,点击立即构建--》console output 你就可以在控制台看到构建的日志了,它会根据你的配置一步一步执行,当你其中一个步骤出错,构建会马上停止,所以尽量不要让自己的配置里面有错误指令。

你可能感兴趣的:(Docker)