jenkins + docker stack + springboot + github 集成部署

       我们每次修改代码后,需要部署到生产环境时,都要经历编译、拷贝jar包、生成镜像、启动服务这些繁琐的步骤,尤其是当我们的生产环境以集群方式部署时,还要将jar拷贝到不同的主机上,然后分别构建镜像,这些繁琐而重复的工作总是让我们不胜其烦,而持续集成工具--jenkins,可以为我们完成上面的工作

        提前在jenkins构建好项目后,然后只需轻轻点一下构建按钮,jenkins将自动拉取最新的代码,然后自动完成上面的步骤,实现自动化部署

 

下面是一个jenkins + docker stack + springboot + github 集成部署的实战例子:

1.安装docker swarm,我搭建的环境如下

主机名称

 ip

 节点性质

docker01

 192.168.12.240

 manager

docker02

192.168.12.241

worker

docker03

192.168.12.242

worker

 

2.安装jenkins,安装并配置插件git、jdk、maven,具体可参考https://blog.csdn.net/u010021282/article/details/102600681。我的jenkins装在了192.168.12.240,即docker01

 

3.编写项目代码,我的springboot项目很简单,只有一个hello接口

@RestController

public class HelloController {

    @GetMapping("/")

    public String hello(){

       return "hello world!";

    }

}

 

4.代码上传至github :https://github.com/blueiiii/web.git

 

5.在docker01,docker02,docker03,搭建好docker镜像目录,我的目录是/root/package,按照如下指令可完成构建

# 生成package目录
mkdir /root/package
vim docker-compose.yml

docker-compose.yml如下

version: "3"
services:
  #注册中心
  web:
    build:
      context: ./web
    image:  web:latest
    deploy:
      mode: replicated
      replicas: 1 
      #endpoint_mode: dnsrr
      restart_policy:
        #none、on-failure、any(默认)
        condition: any
        #尝试重启的等待时间默认为0
        delay: 10s
        #放弃之前尝试重新启动容器次数默认从不放弃
        max_attempts: 10
        #决定重新启动是否成功之前的等时间
        window: 120s
      resources:
        #资源限制
        limits:
          cpus: '0.95'
          memory: 2048M
        #资源保留
        reservations:
          cpus: '0.1'
          memory: 50M
    ports:
        - "8088:8088"

 

接着生成docker镜像上下文目录

# 生成web目录
mkdir /root/package/web
# 进入web目录
cd /root/package/web

#  编写Dockerfile

vim Dockerfile
Dockerfile如下:
#继承基础镜像
FROM openjdk:8
#维护者信息
MAINTAINER blue
#将本机docker目录临时文件挂载到镜像的/tmp目录[tomcat使用的默认目录-用于数据持久化]
VOLUME /tmp
#将本机Dockfile所在目录文件拷贝并重命名到镜像中
ADD spring-boot-web-0.0.1.jar app.jar
#暴露端口给容器
EXPOSE 8088
#启动容器时执行的命令
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/.urandom","-Dfile.encoding=UTF-8","-server","-Xms128m","-Xmx128m","-Xss256k","-Xmn48m","-jar","/app.jar"]

docker02,docker03 如法炮制,也可以直接使用scp指令拷贝

 

6.进入jenkins页面,在系统配置中找到Publish Over SSH插件,进行配置(如果没有找到Public Over SSH,则需要去插件管理安装)

注意:

1.上面的key指的ssh的私钥,这里填了密码,应该就不用填私钥了

2.SSH servers的配置列表docker01,docker02,docker03都要配置,因为docker swarm服务要求每个实例上都要生成镜像

 

7.构建jenkin项目

新建item->输入项目名->Freestyle project->确定

源码管理使用git,填入github中的项目地址,然后点击下面添加按钮,输入giehub账号信息

输入giehub账号信息:

构建选择 Invoke top-level Maven targets,输入如下

继续增加构建步骤,选择 Send files or execute commands over SSH

Exec command的内容被挡住了,内容如下:

cd /root/package/web
docker rmi  web
docker build -t web .

解释一下,这里的作用就是在我们的项目编译成功后,自动将编译的jar包拷贝到docker01的、root/package/web目录,并生成镜像

docker02,docker03这里也要进行一样的配置

接着,添加构建后步骤,选择 Send build artifacts over SSH:

这里的作用是:启动docker stack,只需要在manager执行即可,所以这里只需要配置docker01

点击左下方的保存,项目配置完成

 

8.构建

点击build now,开始构建项目

构建完成后,进入docker01,查看服务是否正常启动:

docker service ls

服务名: docker stack deploy 指定工程名称+"_"+docker-compose.yml的子服务名,所以我的服务名是: test_web,能看到说明已经正常启动

浏览器访问 192.168.12.240:8088(docker01:8088):

访问成功,jenkins一键部署项目完成!

好的,以下是使用 JenkinsDocker 进行 CentOS 部署 Spring Boot 项目的详细步骤和命令: 1. 在 CentOS 中安装 DockerDocker Compose ```bash # 安装 Docker sudo yum update sudo yum install docker # 安装 Docker Compose sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose ``` 2. 在 CentOS 中拉取 Docker 镜像 ```bash # 从 Docker 仓库中拉取镜像 sudo docker pull your-docker-registry/image-name:tag ``` 3. 在 CentOS 中运行 Spring Boot 镜像 ```bash # 运行 Spring Boot 镜像 sudo docker run -d -p 8080:8080 your-docker-registry/image-name:tag # 如果你的 Spring Boot 应用需要使用数据库,你需要为其配置一个数据库服务。你可以使用 Docker Compose 来管理容器编排。 # 在服务器上创建一个文件夹来存储 Docker Compose 配置文件 mkdir ~/docker-compose # 在该文件夹中创建一个 docker-compose.yml 文件 nano ~/docker-compose/docker-compose.yml # 编辑该文件并添加以下内容: version: "3" services: app: image: your-docker-registry/image-name:tag ports: - "8080:8080" db: image: postgres environment: POSTGRES_USER: your-db-user POSTGRES_PASSWORD: your-db-password POSTGRES_DB: your-db-name # 启动 Docker Compose cd ~/docker-compose sudo docker-compose up -d # 如果你需要停止 Docker Compose sudo docker-compose down ``` 4. 在 Jenkins 中配置 Maven 插件和 Docker 插件 - 在 Jenkins 中安装 Maven 插件和 Docker 插件。 - 在 Jenkins 中配置 Docker 插件,确保 Jenkins 可以与 Docker 交互。 5. 在 Jenkins 中创建一个新的构建项目 - 在 Jenkins 中创建一个新的 Maven 项目,并配置 Git 代码库以获取源代码。 - 在构建项目中配置 Maven 构建步骤,构建出可执行的 Spring Boot jar 包。 - 在构建项目中添加一个后置操作步骤,使用 Docker 插件进行 Docker 镜像的构建。你需要为 Docker 镜像指定一个名称和标签,并指定构建上下文。 - 在构建项目中添加另一个后置操作步骤,使用 Docker 插件将构建好的镜像推送到 Docker 仓库中。 6. 在目标服务器上使用 Docker 运行 Spring Boot 镜像 - 在目标服务器上拉取构建好的 Spring Boot 镜像。 - 在目标服务器上使用 Docker 运行 Spring Boot 镜像,你可以使用 Docker Compose 或 Docker Stack 进行容器编排和管理。 以上是使用 JenkinsDocker 进行 CentOS 部署 Spring Boot 项目的详细步骤和命令,希望对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值