Jenkins自动化部署docker容器(操作步骤和失败记录)
jenkins实现自动化部署(docker版) 操作错误记录
Jenkins简介:
一款自动化CI(contiune integration 持续集成)/CD(continue deployment 持续部署)工具,持续集成其实就是每次合并后提交代码,Jenkins都会自动走一套测试流程检查是否有问题,当然这个流程是要用户自己定义的。而持续部署就是每次代码的提交合并后Jenkins都会自动地帮你部署到服务器上。
- 学习的目的:Jekins的安装及基本使用,pinpine的流程定义,jenkinsfile的使用
注意:博主在配置jenkins的过程中遭受了极其沉重的打击和毒打,特此分享自己的受虐经历,希望各位引以为戒并有所启发,不要再走我的老路!!!
Jenkins使用目的
博主原先已经使用docker部署成功了一个springboot项目,现在想要使用jenkins实现自动化部署.具体的流程:代码开发 -> 上传到代码仓库 -> Jenkins自动化部署(1.拉取代码;2.maven构建;3.docker创建容器)
需要的配置文件:Dockerfile(无后缀),docker-compose.yml,Jenkinsfile(无后缀),记得提前在虚拟机中下载maven.(我原本是想要使用docker构建maven容器来打包jar包,但是速度太慢了)
操作流程步骤
一. Jenkins的安装
- 这里参考了一位大佬的博文,安装过程很顺利,就是在修改配置文件的时候可以用vim修改(https://blog.csdn.net/m0_63004677/article/details/139350534?spm=1001.2014.3001.5502)
注意:1. 全局工具配置这里我只配置了git路径,记得提前在lInux中下好
2.jenkins网址访问不了的,如果用的是cenOS7虚拟机,记得关闭防火墙.

- 第二步和第三步我是参考了大模型的,这里直接截图:

二.实现自动化部署需要的配置
-
实现一push代码jenkins就自动拉取和进行部署,我们需要用到webhook.所以我们还要对webhook进行配置.具体流程:1.建立你要提交代码的仓库(我使用的是gitee,这里就用gitee来展示).获取私人令牌(不知道的可以问ai) -> 2.建立gitee与jenkins之间的管道(需要用到私人令牌) -> 3.实现webhook触发器,获取token -> 在仓库中配置webhooks.下面会配合截图展示:
-
第一步建立仓库大家应该没问题,有问题直接ai很快解决.直接第二步:
(Credentials就是要使用到私人令牌,用户名你试一下可不可行,也可能是填写仓库地址在仓库名前面的域名,因为我的用户名有大写,刚开始一直失败,最后全改成小写就成功了,大家尝试一下)




-
实现webhook触发器:使用Generic Webhook Trigger插件.获取token,并在仓库的webhook设置token:



注意:这里要实现push代码gitee就向jenkins发送请求,要求jenkins有公网ip或者可以实现内网穿透.下面会提供使用内网穿透的方法.补充:实现内网穿透的方法:https://natapp.cn/(里面有教程文档),很方便容易上手.

三.上传配置文件
将配置好的Dockerfile,docker-compose.yml,Jenkinsfile放在你的java项目的根目录下(就是和pom.xml同级的目录),然后一起push到你的仓库里.如果想了解docker文件的可以看一下我之前发布的docekr错误记录:https://blog.csdn.net/2401_89760033/article/details/151579092?spm=1001.2014.3001.5501.这里就展示一下重点的Jenkinsfile: jenkinsfile是一个实现自动化部署的脚本,让jenkins自动执行的指南.
Jenkinsfile:
pipeline {
agent any // 使用宿主机执行,但工具依赖Docker容器
stages {
// 阶段1:拉取代码
stage('拉代码') {
steps {
// 补充 credentialsId,指定 Gitee 凭证
git url: 'https://gitee.com/你自己的/myboot.git',
credentialsId: 'gitee-token', // 替换为你在 Jenkins 中配置的凭证 ID
branch: 'nowcoder' // 仓库分支,根据实际情况修改
}
}
// 阶段2:Maven构建项目
stage('Maven 构建') {
steps {
sh '/opt/maven/bin/mvn clean package -DskipTests' // 使用绝对路径,博主只有使用绝对路径才能正确构建,大家可以试试能不能别的方法然后分享一下,这里博主真的尽力了hhh
}
}
// 阶段3:构建项目Docker镜像(项目已有Dockerfile)
stage('构建应用镜像') {
steps {
sh '''
# 构建应用镜像,标签包含构建号
docker build -t myboot:${BUILD_NUMBER} .
# 同时打latest标签
docker tag myboot:${BUILD_NUMBER} myboot:latest
'''
}
}
// 阶段4:用docker-compose部署(复用现有配置,启动所有服务)
stage('部署服务') {
steps {
sh '''
# 停止并删除现有服务(保留数据卷,避免数据丢失)
docker compose down
# 启动所有服务(包括你的Java应用、Nginx、Redis、MySQL等)
# --build:强制重新构建应用镜像(确保使用最新版本)
docker compose up -d --build
'''
}
}
}
}
四.总结
通过上面的步骤基本可以实现Jenkins自动化部署的目的,本人在这个配置这里搞了好久,所以可能过程中有哪里会疏忽掉,因为尝试太多了有点晕.但是成功的步骤大体都在上面了.如果大家在实操过程中有问题可以积极使用ai,包括使用的docker脚本,Jenkins文件的编写也可以ai生成,但是正常情况下都会有小毛病,需要你仔细甄别,不断修正。jenkins管道启动后可以查看里面的控制台输出来查看部署过程,如果有问题里面也有报错,大家可以多搜索多查询。遇到有用的操作方法也可以分享出来让大家少走一点弯路。
补充如何停止docker容器:
更多推荐


所有评论(0)