docker初接触4--Springboot+docker+jenkins+gitee实现持续集成

本文详细介绍如何使用Jenkins和Docker进行持续集成和部署,包括配置Jenkins、创建Docker镜像、运行容器,以及优化流程实现自动更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前面我们安装了docker,安装了jenkins,那接下来我们就要大展拳脚,把他们弄到一起玩玩了。膨胀!膨胀!膨胀!

一、准备工作

1.1、虚拟机上安装jdk、git、maven、docker、jenkins

1.2、准备一个springboot项目,可以像我这样的

配置文件是这样的:

还有这样的:

就这么一个简单的springboot项目

1.3、为了看看docker是怎么工作的,我们先做个实验,大家也可以跳过这一段

1.3.1、将项目打个jar包,传到虚拟机里

1.3.2、然后我们新建一个Dockerfile文件

Dockerfile里面是这样的

我这里解释的可能不对,大家可以多看看网上大佬们写的Dockerfile。

1.3.3、接下来我们用docker build命令把jar打成镜像

来看看我们打的镜像在不在

看来镜像已经打好了

1.3.4、运行镜像

我们用docker run命令来运行镜像

我们访问一下试试,记得开防火墙的端口哦

访问成功。这个案例可以让大家对docker有所了解。

1.4、改造我们的springboot项目

因为我们的项目要打成镜像,所以需要加一个dockerfile文件和dockerfile-maven-plugin的插件

1.4.1、dockerfile:

#依赖基础镜像
FROM java:8
#镜像作者
MAINTAINER hailin
#执行脚本/命令
#RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
#卷
VOLUME /tmp
ARG JAR_FILE
#复制文件 jar包  镜像名
ADD ${JAR_FILE} /jenkins-test-1001.jar
#参数
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/jenkins-test-1001.jar"]

1.4.2、dockerfile-maven-plugin

<build>
        <finalName>jenkins-test-1001</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>dockerfile-maven-plugin</artifactId>
                <version>1.4.10</version>
                <configuration>
                    <!--这里指定打包镜像的名称-->
                    <repository>${project.artifactId}</repository>
                    <!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
                    <buildArgs>
                        <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                    </buildArgs>
                </configuration>
            </plugin>
        </plugins>
    </build>
 

1.4.3、然后将项目上传到gitee上,如果你嫌麻烦,也可以用我弄好的这个

 

https://gitee.com/jiahailin/jenkins-test.git

 

二、配置jenkins

1.1系统管理-》全局工具配置,将jdk、maven、git都配置好

 

1.2、新建任务

 

1.3、随便填一下构建策略

 

1.4、配置git

 

1.5、构建jar包

 

1.6、构建成功后

构建成功后,我们需要把jar包打成docker镜像,然后运行起来,这就需要用到shell命令了

echo "build docker image"
mvn dockerfile:build
echo "current docker images:"
docker images | grep jenkins-test-1001
echo "start container----->"
docker run -d -p 1001:1001 --name jenkins-test-1001 jenkins-test-1001
echo "start success!"

 

 

1.7、执行

上面就完成了配置,点击保存后,我们来到首页

可以点击这里开始执行构建,或者点进去,点立即构建

构建完成,我们查看一下镜像和容器

这里看到镜像已经构建好了,并且已经运行起来了,然后访问页面

到这里就算是成功了!

 

 

三、优化

1.1、我们想要的是下次代码修改后再构建,可以删除旧的镜像,重新打成新的镜像,并且运行起来。那么开始修改

echo "stop container"
docker stop jenkins-test-1001
echo "delete container"
docker rm jenkins-test-1001
echo "delete image"
docker rmi jenkins-test-1001
echo "build docker image"
mvn dockerfile:build
echo "current docker images:"
docker images | grep jenkins-test-1001
echo "start container----->"
docker run -d -p 1001:1001 --name jenkins-test-1001 jenkins-test-1001
echo "start success!"

增加了三个命令,其他的都不变,这时候再构建的话,就会把之前旧的容器和镜像删除掉。

1.2、我们测试一下

先随便修改一下项目,然后提交到git

再次点击构建,构建成功后访问接口

大功告成!

2.1、继续优化

上面虽然成功了,可是,这就完美了吗?如果我们手动将docker中的容器删除掉

再次构建,发现会报错

就是执行docker stop jenkins-test-1001的时候发现这个容器不存在了。。。。。。。。。。。。。。。

那我们就给个判断,如果容器存在就停止,然后删除,如果容器不存在,那么就直接构建

 

2.2、继续优化

echo "stop and delete container"
CID=$(docker ps | grep "jenkins-test-1001" | awk '{print $1}')
if [ -n "$CID" ]; then
echo "has container,CID=$CID"
docker stop $CID
docker rm $CID
fi
echo "delete image"
docker rmi jenkins-test-1001
echo "build docker image"
mvn dockerfile:build
echo "current docker images:"
docker images | grep jenkins-test-1001
echo "start container----->"
docker run -d -p 1001:1001 --name jenkins-test-1001 jenkins-test-1001
echo "start success!"

 

2.3、测试

我们本地代码再修改一下,并提交到gitee上

重新构建,构建完成后访问接口

这,除了完美我还能说什么

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值