• (docker)手把手教学springboot maven项目根据jenkins自动打包,并自动构建镜像 并上传阿里云镜像仓库.


    项目用到的技术或者工具

    • centos 7.x
    • jenkins(支持jdk1.8的最新版:docker pull jenkins/jenkins:latest-jdk8)
    • maven
    • jdk1.8(需要准备oracle账密.文档中java环境是自动下载安装—平时大家下载jdk 都需要登录账号)
    • docker
    • shell脚本
    • 阿里云镜像仓库
    • gitee
    docker安装:

    在服务器上搭建好docker环境.如果没有搭建先搭建环境,如果不会请参考我另外一篇文章非常简单:
    docker一键安装

    也可以直接一键代码安装:

    curl -sSL https://get.daocloud.io/docker | sh
    
    • 1

    启动:systemctl start docker

    查看安装是否成功:
    docker info
    docker -v 查看版本

    jenkins安装:

    拉取镜像(jdk1.8的现在最新版本不支持1.8了.):

    docker pull jenkins/jenkins:latest-jdk8
    
    • 1

    也可以在这里面查找其他版本:docker-jenkins版本官网

    创建挂载路径(目的是jenkins 容器使用宿主机器外面的文件目录):

    mkdir -p /data/jenkins_home

    给目录授权

    chmod 777 /data/jenkins_home

    启动容器:

    docker run -d \
        -p 8040:8080 \
        -p 50000:50000 \
        --restart=always \
        --user root \
        -v /data/jenkins_home:/var/jenkins_home \
        -v /etc/localtime:/etc/localtime \
        -v /var/run/docker.sock:/var/run/docker.sock \
        -v /usr/bin/docker:/usr/bin/docker \
        --name=jenkins \
        jenkins/jenkins:latest-jdk8
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    命令说明:
    -d 保持后台运行
    -p 映射端口,吧外部端口映射到内部
    –restart=always 跟随容器启动 自动启动
    –user root 以root身份进入jenkins中,在jenkins中能使用宿主机的权限
    -v 挂载目录,jenkins容器中能视同宿主机的目录,因为jenkins打包后会指定docker 构建镜像所以-v要挂载docker
    –name 容器名字

    -v /var/run/docker.sock:/var/run/docker.sock \ -v /usr/bin/docker:/usr/bin/docker \ 这两个属性非常重要.因为构建会在jenkins中执行docker命令..然后会吧镜像构建在宿主机的docker环境中..不引入这个配置通过shell脚本进行构建镜像就比较麻烦.....

    jenkins 配置

    浏览器访问http://ip:8040 进入控制台

    在宿主机里面输入:vi /data/jenkins_home/secrets/initialAdminPassword 即可查看密码
    需要吧var 替换成data 因为宿主机挂载目录在这目录下

    直接使用推荐安装即可

    输入账号密码即可
    进去之后,选择系统设置,插件管理 安装maven/jdk/gitee 插件

    插件安装好后,安装jdk 和maven版本 在全局工具配置中设置如下:

    选择新增jdk 我选择的1.8最新版 登录oracle账号密码

    选择maven最新版本 并自动安装 最后点击应用

    然后回首页 进入系统管理->系统配置 找到gitee:

    生成令牌-直接在添加处有生成令牌的路径…这次就没有更多说明,比较简单

    jenkins 项目构建

    安装好之后构建项目(我项目名字叫demo,jenkins工程名字也叫demo 后面镜像名字也叫demo)

    创建后进入改项目配置:

    配置源代码(git)

    添加凭证(gitee的账号密码) 这图是下面一张图(源码管理)的添加凭证 弹框截图

    进入项目中并设置

    源码管理

    在这里插入图片描述

    点击保存结束

    首次构建项目

    点击立即构建(第一次比较慢.需要下面maven环境,和jdk 包等)

    在任务中查看控制台输出

    在这里插入图片描述

    这个时候你会发现,你重新gitee提交manster分支代码.jenkins 中的demo项目就会自动构建…不妨测试测试~~

    以上自动构建,已经完成.接下来实现自动构建镜像,并上传阿里云私有的镜像仓库

    构建docker镜像
    Dockerfile编写

    文件放在项目的src/main/resources 目录下 文件名:Dockerfile 内容如下:

    FROM openjdk:8-jdk-alpine
    MAINTAINER "伟帅啊"
    LABEL description="demo项目自动构建镜像文本"
    WORKDIR /www
    ADD target/demo-0.0.1-SNAPSHOT.jar /app/app.jar
    EXPOSE 8081
    CMD java -jar /app/app.jar
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    编辑好之后,需要提交搞gitee上去

    创建阿里云镜像仓库

    在这里插入图片描述
    选择个人版
    在这里插入图片描述

    在这里插入图片描述

    在jenkins项目demo下的写入shell脚本

    在这里插入图片描述

    自己需要稍微修改脚本的代码

    #!/bin/sh
    #上传镜像
    
    # 特别注意 如果是本机在运行这个项目...需要停止容器 并删除运行的容器
    # docker stop demo
    # docker rm demo
    
    #删除本地镜像
    echo "正在删除镜像..."
    # 删除阿里云的镜像
    DID=$(docker images | grep "自己阿里云上的命名空间/demo" | awk '{print $3}')
    if [ -n "$DID" ]; then
      echo "正在删除阿里云镜像"
      docker rmi -f $DID
    fi
    
    # 删除本地镜像
    DID=$(docker images | grep "demo" | awk '{print $3}')
    if [ -n "$DID" ]; then
      echo "正在删除本地镜像"
      docker rmi -f $DID
    fi
    
    # 删除好这些东西后,我们准备构建镜像
    echo "开始构建镜像...."
    # 我们使用的一个插件来自动构建镜像  这个要修改为你自己项目路径..我叫demo. 你叫啥改啥
    docker build -f /var/jenkins_home/workspace/demo/target/classes/Dockerfile -t demo:v1 .
    echo "获取当前镜像id..."
    # 我们获取我们构建好的镜像的id
    DID=$(docker images | grep "demo" | awk '{print $3}')
    echo "登录..."
    docker login --username=你的账户名字 --password=你创建仓库设置的密码 registry.cn-shanghai.aliyuncs.com
    
    echo "建立映射中..."
    docker tag $DID registry.cn-shanghai.aliyuncs.com/自己阿里云上的命名空间/demo:v1
    echo "镜像推送至阿里云仓库中..."
    docker push registry.cn-shanghai.aliyuncs.com/自己阿里云上的命名空间/demo:v1
    echo "自动化部署完成!"
    
    #如果是单机运行....你还可以后面 直接 docker run  就能启动这个镜像 运行这个容器
    #例如:docker run -d --name mydemo --restart=always -v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime  -p 8021:8021 demo:v1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    测试构建镜像

    点击jenkins demo项目中的立即构建,监控控制台.显示构建成功

    构建完成后,就能在阿里云上看到镜像上传版本和最新上传时间了
    在这里插入图片描述

    自动部署

    现在jenkins 能自动通过maven环境 构建springboot项目成jar包.并自动构建成镜像,然后上传到阿里云私有仓库…接下来我们生产环境或者测试环境可能会有比较多的服务器…单台单台去 docker pull或者run 比较费人工…

    如果我们通过一种手段自动部署容器…是不是很爽.

    接下来等我下篇更新…如何根据jenkins 自动部署仓库容器(需要ssh远程执行脚本或者k8s)

    根据ssh远程脚本方式发布更新项目

  • 相关阅读:
    【2023年11月第四版教材】第16章《采购管理》(第二部分)
    3D游戏角色动画
    基于Vue开发的门户网站展示和后台数据管理系统
    C++多态案例2----制作饮品
    Latex论文写作小技巧记录,不断更新
    酒精壁炉:独特的室内取暖方式
    Python 进阶语法:os
    远程连接命令的命令?
    Python生成随机数字/字符
    10_libpcap以及libnet
  • 原文地址:https://blog.csdn.net/qq_30097433/article/details/126699508