jenkins构建带有dockerfile-maven-plugins springboot工程

1先讲一下大概原理,本地提交代码到gitlab,然后触发webhook,自动去下载代码到jenkins,jenkins通过publish over ssh插件把文件复制到远程服务器上,(有人会问为什么不通过jenkins构建maven工程,因为作者的jenkins是通过docker生成的,里面会有推送镜像到远程镜像仓库会失败)远程服务器上安装maven,并配置maven,生成镜像,运行镜像。(总结感觉比较鸡肋,没有我上一遍通过jenkins构建的简单)

2.先去修改我们工程的POM.xml文件

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-deploy-plugin</artifactId>
				<configuration>
					<skip>true</skip>
				</configuration>
			</plugin>
			<plugin>
				<groupId>com.spotify</groupId>
				<artifactId>dockerfile-maven-plugin</artifactId>
				<version>1.4.13</version>
				<executions>
					<execution>
						<id>default</id>
						<goals>
							<goal>build</goal>
							<goal>push</goal>
						</goals>
					</execution>
				</executions>
				<configuration>
					<repository>danbing2226/dockerfilemavenplugins</repository>
					<tag>${project.version}</tag>
					<useMavenSettingsForAuth>true</useMavenSettingsForAuth>
					<buildArgs>
						<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
					</buildArgs>
				</configuration>
			</plugin>

danbing2226/dockerfilemavenplugins这个标签是你的dockerhub上的目录
因为这个插件除了构建镜像还可以推送镜像到dockerhub(或者你自己的仓库)
true这个标签是添加dockerhub的认证,一会在maven的settings.xml里面会说。

添加Dockfile文件和pom.xml一个目录

在这里插入图片描述

FROM java:8
ARG JAR_FILE
ADD ${JAR_FILE} app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]

settings.xml配置文件

  <pluginGroups>
	    <pluginGroup>com.spotify</pluginGroup>
  </pluginGroups>
  <servers>
    <id>docker.io</id>
    <username>danbing2226</username>
    <password>XXXXXXXX</password>
  </server>
  </servers>

这个是你dockerhub上的用户名和密码。

远程docker机器开启TCP管理端口

vim /usr/lib/systemd/system/docker.service

加上

-H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375

在这里插入图片描述
这是centos上的配置,你想在windows上打包成功的话就设置一个环节变量
在这里插入图片描述
记住:::你打包的时候用cmd命令,mvn clean … 不要在开发工具idea上,不然会构建不成功。

关闭防火墙查看端口

systemctl daemon-reload
systemctl restart docker
netstat -an | grep 2375

在这里插入图片描述

如果出现启动失败的话执行以下
关闭selinux和防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
vim /etc/sysconfig/selinux
SELINUX=disabled
systemctl start docker

接下来是jenkins的配置

新建一个普通工程
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

#!/bin/bash
cd /home/dockerfilemavenplugins
echo "文件目录"
ls -l
echo "文件目录"
export JAVA_HOME=/usr/java/jdk1.8.0_251
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export MAVEN_HOME=/usr/local/maven/apache-maven-3.6.3
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
echo $PATH
echo $JAVA_HOME
whoami
echo "打包构筑镜像这也是唯一的好处,不用自己去再复制dockerfile了"
mvn clean -Dmaven.test.skip=true -Ptest package -Ddockerfile.push.skip -Ddockerfile.tag.skip 
MICROSERVICE="microservice-provider-dockerfilemavenplugins"
echo "通过命令获取POM.xml文件中的版本信息"
version=$(echo $(awk '/<\/*version\/*>/{gsub(/[[:space:]]*<\/*version\/*>/,"");print $0}' pom.xml) | awk '{print $2}')
echo "通过命令获取POM.xml文件中的镜像名称"
name=$(awk '/<\/*repository\/*>/{gsub(/[[:space:]]*<\/*repository\/*>/,"");print $0}' pom.xml)
image=$(echo $name":"$version)
startflag=$(docker inspect --format '{{.State.Running}}' "$MICROSERVICE")
exit=$(docker ps |grep "$MICROSERVICE")
echo “工程名称”
echo $MICROSERVICE
echo “容器是否运行状态”
echo $startflag
echo "镜像名称"
echo $image
start(){
		echo "容器已经存在,删除容器"
		docker rm  -f  "$MICROSERVICE"
		echo "删除容器成功"
                echo "删除后创建容器"
		docker run --name "$MICROSERVICE" --restart=always -d -p 8192:8092 "$image"
		echo "容器创建完成端口号8192"
}
echo "开始启动"
if [ "$exit" == "" ];then
  echo "没有容器,新建容器"
  docker run --name "$MICROSERVICE" --restart=always -d -p 8192:8092 "$image"
  echo "第一次容器创建完成端口号8192"
else
  echo "容器存在"
  start
fi
echo “启动结束”
docker ps -a
docker run --name microservice-provider --restart=always -d -p 8192:8092 "$image"
docker ps -a
echo "删除未用镜像节省空间"
docker rmi -f `docker images -a | grep '<none>' | awk '{print $3}'`
echo "运行成功"

命令有些多,你认证看的话,能学到很多东西
下面是验证
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

来自李大厨的鸡汤:

不是每个搞笑的人都很开心的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值