1、项目准备工作
对你的maven项目进行添加插件 。在pom.xml 里面进行docker插件的引入和springboot的打包插件(加上docker文件的配置)
<build>
<finalName>test</finalName>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>${docker.plugin.version}</version>
<executions>
</executions>
<configuration>
<imageName>${docker.browse}/${docker.image.prefix}/${project.build.finalName}:${docker.tag}</imageName>
<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
<serverId>docker-registry</serverId>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
<!-- docker配置 -->
<docker.image.prefix>lhl</docker.image.prefix>
<docker.plugin.version>1.0.0</docker.plugin.version>
<docker.tag>3.0.0</docker.tag>
<docker.browse>{地址}:{端口}</docker.browse>
2、在项目的src/main创建Docker文件夹并创建Dockerfile文件
# 第一阶段构建,设置基础镜像镜像地址加基础镜像
FROM 111.11.11.1:11/unitid-jre8-fonts:8u191-alpine
# 挂载目录
VOLUME /tmp
# 将你的maven打包的jar包{主机环境的文件} 拷贝到 镜像目录下面
ADD test.jar app.jar
# 修改你的访问时间为当前时间
RUN bash -c 'touch /app.jar'
# 为启动的容器指定默认要运行的程序,程序运行结束,容器也就结束。CMD 指令指定的程序可被 docker
# run 命令行参数中指定要运行的程序所覆盖。
CMD ["java","-server","-Xms256m","-Xmx512m","-Duser.timezone=GMT+8","-jar","/app.jar"]
# 设置你的端口号
EXPOSE 12345
2、构建jenkins的maven项目
2.1 项目描述
2.2 jdk的选择
2.3 gitlab仓库和分支的选择
2.4 pom文件的选择
(跳过单元测试)
2.5 SSH的脚本命令
(执行脚本代码块)
//
cd /home/jenkins/command
./stop.sh 172.16.3.207:8085/lhl/test:3.0.0
./remove.sh 172.16.3.207:8085/lhl/test
docker pull 172.16.3.207:8085/lhl/test:3.0.0
docker run -d -m 1g -p 12345:12345 \//容器和宿主机在一个网络内
--net=host \//容器退出时重启容器
--restart=always \
172.16.3.207:8085/lhl/test:3.0.0 \
/bin/bash -c 'java -server -Xms512m -Xmx1g -Duser.timezone=GMT+8 -jar /app.jar'
完事后执行构建命令即可 (End---------)
3 、构建项目
构建流程分析
构建jenkins的空间----->拉取gitlab仓库的项目------> 根据pom文件进行打包项目(跳过单元测试)------>执行Dockerfile文件(创建镜像-->挂载目录-->拷贝jar-->修改时间-->运行默认程序-->端口号)------>built seccessfully----->上传到服务器------->执行脚本命令(cd文件--->stop停之容器--->删除容器-->pull镜像-->运行容器,指定端口--->-->end)------->finished:success、
4、jenkins逻辑运行图
个人理解,有问题大家一起讨论