docker+jenkins自动化部署springboot项目

这篇具有很好参考价值的文章主要介绍了docker+jenkins自动化部署springboot项目。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前置:环境配置

  1. 阿里云服务器1核2GB
  2. java 1.8.0._371
  3. maven apache-maven3.8.8
  4. git 1.8.3.1
    docker和jenkins在一台服务器上,环境的配置,对于java和maven可以自己下载对应tar包进行配置,记得配置环境,也可以使用yum进行安装。记得配置/etc/profile后source一下:
    source /etc/profile
    Maven记得修改镜像!!!

1. springboot测试项目

在本地创建一个简单的springboot项目,例如helloworld项目,写一个简单的controller:

@RestController
public class HelloWorld {
    @RequestMapping("/helloworld")
    public String helloworld(){
        return "hello";
    }
}

2. 安装jenkins和docker

2.1 安装docker 和jenkins

下面的链接可以一直适用到jenkins的简单配置

安装docker参考链接
在docker安装完之后,使用docker pull jenkins的镜像。
下拉jenkins镜像

补充

运行docker:
docker运行参考

docker run -di --name=jenkins -p 宿主机ip(可自定义):8080(容器中jenkins端口默认) -v 宿主机目录:/var/jenkins_home(容器目录) jenkins/jenkins:lts # docker启动Jenkins

docker run -itd -p 8080:8080 --name jenkins -u root --privileged=true -v /mydata/jenkins_docker/:/var/jenkins_home jenkins/jenkins:lts

可以参考安装第一个链接,直到通过jenkins部署,然后通过

clean install -Dmaven.test.skip=true

来进行打包。
拉去远程仓库的代码可以参考下面链接
jenkins添加拉取代码
可能遇到以下问题:

  1. 因为本地springboot项目引用了自定义jar包,即通过maven远程仓库不能下载的jar包。需要以下配置。。
    1.1 在springboot项目中创建lib文件,并将自定义jar包,复制到lib目录下.
    docker+jenkins自动化部署springboot项目
    1.2 配置pom.xml
    主要分为两个部分,注意scope域不能省略,还有就是路径要正确
<dependency>
			<groupId>***</groupId>
			<artifactId>*jar包名称*</artifactId>
			<version>1.0</version>
			<scope>system</scope>
			<systemPath>${project.basedir}/src/main/resources/lib/**.jar</systemPath>
</dependency>
<plugin>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-maven-plugin</artifactId>
	<configuration>
		<includeSystemScope>true</includeSystemScope>
	</configuration>
</plugin>

参考链接:非mavenjar包
2. 因为docker分为宿主机目录和容器目录,宿主机目录极为阿里云服务器,容器目录需要切换到docker相应容器中进行查看,下面提供两种不同角色的切换方式

docker ps # 通过ps查看容器ID,
sudo docker exec -it 容器id /bin/bash  #切换到指定容器的目录
# 0 表示 root 用户
docker exec -u 0 -it id /bin/bash #切换到root用户

注意这个不同角色切换很重要!!!,在你成功打jar包后如果在指定容器中不能运行,而在root用户下能运行,那么就是权限问题。
3. 配置jenkins下拉gitee仓库
因为jenkins的默认用户为jenkins,需要切换到jenkins用户去执行ssh-keygen -t rsa生成密钥对来配置gitee和jenkins
参考链接:jenkins下拉gitee仓库

3 .自动化部署

  如果上面两步,你已经成功通过jenkins打包jar包,并在容器目录中可以查看到相应的jar包,可以进行下面操作。
  成功打jar包后,下面就是运行的问题,如果在容器中直接通过java -jar进行运行会存在权限问题,而且成功运行后,因为是在容器中运行,需要进行IP转化,才可以正确访问。

  这里通过ssh将容器中打包好的jar包传输到宿主机指定目录。

3.1 jenkins配置

  1. 系统管理–>插件管理,下载对应的插件
    docker+jenkins自动化部署springboot项目
  2. 系统管理–>系统配置,配置SSH server
    docker+jenkins自动化部署springboot项目
    docker+jenkins自动化部署springboot项目
    配置完成后,自己可以点击下面的Test Configuration进行测试,进行相应错误的修改。
  3. 任务配置
    docker+jenkins自动化部署springboot项目
    docker+jenkins自动化部署springboot项目

exec command可以先不写,可以先部署下看是否可以将容器中的jar包传输到宿主机指定目录。
如果可以进行下面脚本的编写

#!/bin/bash
source /etc/profile
#查看之前运行的进程id
pid=`ps -ef | grep ymxSeller-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print $2}'`
echo "部署前的pid进程 :$pid"
# 关闭已经启动的jar进程
if [ -n "$pid" ]
  then
    kill -9 $pid
else
    echo "进程没有启动"
fi
sleep 5s
#copy jar 到启动目录
\cp -rf /home/workplace/maven-demo/ymxSeller-0.0.1-SNAPSHOT.jar /home/workplace/maven-demo/restartdir/ymxSeller-0.0.1-SNAPSHOT.jar

cd /home/workplace/maven-demo/restartdir
nohup /usr/java/jdk1.8.0_371/bin/java -jar /home/workplace/maven-demo/restartdir/ymxSeller-0.0.1-SNAPSHOT.jar  > /home/workplace/maven-demo/restartdir/springboot.log  2>&1 &
echo "脚本执行完毕"
sleep 5s
pid=`ps -ef|grep ymxSeller-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print $2}'`
# 检验进程是否启动
if [ -n "$pid" ]
  then
        echo "部署后的pid进程 :$pid"
                echo "启动成功"
else
    echo "进程没有启动"
fi
~                  

创建restart.sh并编写上面的脚本,大致意思就是查询该jar包是否正在运行,如果正在运行,kill掉该进程,然后重新运行新的jar包。可以自己查看日志
注意里面的jar包名称和路径。文件夹必须存在,日志文件可以自己生成。

BUG合集

1、建议将MAVEN_HOME、GIT_HOME、JAVA_HOME更新为docker中jenkins容器中的挂载目录,其目录可以在启动jenkins容器时进行指定:
路径:系统管理–>全局工具配置
docker+jenkins自动化部署springboot项目
docker+jenkins自动化部署springboot项目
docker+jenkins自动化部署springboot项目
2、Build step ‘Invoke top-level Maven targets’ marked build as failure
docker+jenkins自动化部署springboot项目
错误分为三种情况:
2.1 检查你的Maven指定目录是否正确,可以使用sudo docker exec -it 容器id /bin/bash 命令进入容器环境进行查看。
2.2 服务器内存不足,因为我部署的是springboot项目,会启动JAVA进程,而jenkins本身也会启动JAVA进程。可以使用ps -ef | grep java查看相应进程。这里可以使用kill -9 的命令杀死当前项目java进程重新部署,也可以通过配置jenkins的内部JVM参数进行调优。
docker+jenkins自动化部署springboot项目
2.3 检查项目pom.xml中是否有当前jdk不支持的jar包,比如你使用的是jdk11,却使用了jdk8自带的sun.misc.BASE64Encoder;
重启docker容器,附启动命令:

docker run --name jenkins
-u root
-d -p 8080:8080
-p 50000:50000
–privileged=true
-v /mydata/jenkins_docker/:/var/jenkins_home
-v /usr/local/apache-maven-3.8.8:/usr/local/apache-maven-3.8.8
-v /usr/java/jdk1.8.0_371:/usr/local/jdk1.8.0_371
jenkins/jenkins:lts

#参考链接:
jar包自动部署文章来源地址https://www.toymoban.com/news/detail-437871.html

到了这里,关于docker+jenkins自动化部署springboot项目的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Docker + Jenkins 自动化部署若依项目

    前言 对着此文章操作之前,确保服务器上的Java环境(JDK、MySQL、Redis、Jenkins以及Linux安装Maven)已经装好,如果没有装好,参考我之前的文章。 注意: 如果服务器上自己装的又 Nginx ,需要手动停了,要不会导致80端口被占用 1:首先,到若依官网拉去若依分离版项目 2:拉完之后

    2024年04月16日
    浏览(48)
  • Jenkins + Docker 一键自动化部署 SpringBoot 应用最精简流程

    本文章实现最简单全面的 Jenkins + Docker + Spring Boot 一键自动部署项目。步骤齐全,少走坑路。 环境:CentOS7 + Git (Gitee) 实现步骤:在 Docker 安装 Jenkins,配置 Jenkins 基本信息,利用 Dockerfile 和 Shell 脚本实现项目自动拉取打包并运行。 1安装 Docker 安装社区版本 Docker CE 确保 yum 包

    2024年04月26日
    浏览(54)
  • Docker+Jenkins+Gitee自动化部署maven项目

    各位看官老爷,本文为Jenkins实战,注重实际过程,阅读完会有以下收获: 了解如何使用Docker安装Jenkins 了解如何使用Jenkins部署maven项目 了解如何使用Jenkins+Gitee实现自动化部署 相信,正在读这篇文章的你,对Jenkins应该有或多或少的了解,就算没有也应该在某个地方听说过。👍

    2024年02月07日
    浏览(234)
  • Jenkins+Docker 实现一键自动化部署项目!步骤齐全,少走坑路

    大家好,我是互联网架构师! 本文章实现最简单全面的Jenkins+docker+springboot 一键自动部署项目,步骤齐全,少走坑路。 环境 :centos7+git(gitee) 简述实现步骤:在docker安装jenkins,配置jenkins基本信息,利用Dockerfile和shell脚本实现项目自动拉取打包并运行。 docker 安装社区版本CE

    2024年02月09日
    浏览(48)
  • Jenkins + Docker 一键自动化部署 Spring Boot 项目,步骤齐全,少走坑路!

    本文章实现最简单全面的Jenkins+docker+springboot 一键自动部署项目,步骤齐全,少走坑路。 环境 :centos7+git(gitee) 简述实现步骤:在docker安装jenkins,配置jenkins基本信息,利用Dockerfile和shell脚本实现项目自动拉取打包并运行。 推荐一个开源免费的 Spring Boot 实战项目: https://git

    2024年02月08日
    浏览(68)
  • 2023全网最细最全保姆级gitlab+Jenkins+maven自动化部署springboot项目教程

    如果没有Linux基础请仔细看好每一个步骤,避免出错,从0到1带你搭建自动化部署环境,包括服务器安装,自动化部署所需各类软件安装配置,详细贴出每一步,不断步骤,让你一次搭建部署完成,希望这篇文章能给大家带来一定的帮助,话不多说开始整 2.0 CentOs安装 2.0.1 下载VM虚拟机 我直

    2024年02月08日
    浏览(60)
  • Jenkins自动化部署docker

    准备测试服务器docker环境 准备jdk环境 将上传jar包修改为 app.jar 对外暴露 1000 端口 启动jar 制作镜像 将上传的镜像先测试,我的jar包叫 sky-server-1.0-SNAPSHOT.jar 先将这个做成镜像 创建容器 将之前做的镜像运行 环境准备 前提需要Jenkins和Gitea这个要提前准备好。 1、配置Jenkins的M

    2024年01月17日
    浏览(58)
  • Jenkins自动化部署项目

    https://www.jenkins.io/ https://blog.csdn.net/qq_41581588/article/details/128687402 https://blog.csdn.net/zhishidi/article/details/118082509 https://blog.csdn.net/Sojou/article/details/125935262 使用心得

    2024年02月05日
    浏览(42)
  • docker+jenkins 实现自动化部署

    工欲善其事必先利其器,所以前期的准备工作必须做好,那么我们要实现自动化部署,必须提前准备什么呢?哈哈哈,可能有一些小伙伴已经猜到了,我们需要一台自己的服务器,这里博主使用的自己够买一台腾讯云的轻量服务器,折扣完了才一百多块钱,当然小伙伴也可以

    2024年02月06日
    浏览(269)
  • php项目自动化部署 —— Jenkins

    1.地址:Java Downloads | Oracle 因为我是在本地安装jenkins,这里用到的是java11-windows 2.安装JDK,并配置环境变量,csdn教程有很多 1.jenkins.msi 地址:Jenkins download and deployment,双击安装(傻瓜式) 2.安装完成以后,浏览器 并打开地址:localhost:8080 3.按照提示的路径输入密码 4.选择安

    2024年02月10日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包