• 使用jenkins+gitee创建docker镜像并运行


    使用jenkins+gitee创建docker镜像并运行

    安装教程看我这篇Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】

    安装JDK(这里安装了jdk的朋友可以跳过了,没多大个用,就是给maven一个jdk的环境而已)

    因为我们下载的jenkins自带jdk11,所以我们只需要在本机安装

    1、下载jdk8

    Java Downloads | Oracle,选择后缀为 .tar.gz 的文件,这是linux需要的jdk安装包

    2、使用上传工具xftp、filezlla、宝塔啥的都行,上传文件

    3、在上传目录解压

    [root@localhost local]# tar -zxvf jdk-8u181-linux-x64.tar.gz
    
    • 1

    4、修改环境变量

    # 进入配置文件
    [root@localhost local]# vim /etc/profile
    
    # 配置内容
    export JAVA_HOME=/usr/local/jdk1.8.0_181  #jdk安装目录
     
    export JRE_HOME=${JAVA_HOME}/jre
     
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
     
    export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
     
    export PATH=$PATH:${JAVA_PATH}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    5、重新加载

    [root@localhost local]# source /etc/profile
    
    • 1

    6、检验是否配置成功

    java -version
    
    [root@instance-3806mxkl tools]# java -version
    java version "1.8.0_121"
    Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
    Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
    You have new mail in /var/spool/mail/root
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    安装maven(这里安装了maven的朋友可以跳过,但需要留意下后面我重新运行docker容器(jenkins)所挂载的目录

    我推荐maven3.8.4,至于为啥,别问,问就是我同学3.8.5报错了,我3.8.4跑着刚刚好

    各个版本下载地址,这个也是官网比官网首页更直观,更好找

    在这里插入图片描述

    1、使用上传工具xftp、filezlla、宝塔啥的都行,上传文件

    这里有个区分 看了我之前教程的小伙伴,可以在/data/jenkins下面创建一个tools的文件夹,把文件放在tools这个文件夹中

    没有看我教程的小伙伴也没关系,可以把maven文件放在你挂载的jenkins_home文件夹中

    这里的目的是把maven文件放在jenkins中(docker容器中),供jenkins访问,所以放在哪都不重要,重要的是要让jenkins找到maven这个文件

    2、解压

    tar -zxf apache-maven-3.8.4-bin.tar.gz
    
    • 1

    3、配置阿里云镜像

    # 修改解压后maven文件夹中的config文件夹中的settings.xml文件
    vim apache-maven-3.8.4/conf/settings.xml 
    
    • 1
    • 2

    内容为

    <mirror>
         <id>alimavenid>
         <name>aliyun mavenname>
         <url>http://maven.aliyun.com/nexus/content/groups/public/url>
         <mirrorOf>centralmirrorOf>
    mirror>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    4、修改环境变量

    vi /etc/profile
    #也可以通过图形化的工具,直接修改更方便
    #添加的内容 ,路径记得修改为自己解压的路径位置
    export MAVEN_HOME=/var/local/apache-maven-3.6.3
    export PATH=$MAVEN_HOME/bin:$PATH
    
    • 1
    • 2
    • 3
    • 4
    • 5

    5、加载环境变量

    source /etc/profile
    
    • 1

    6、检验是否配置成功

    # 命令
    mvn -v
    
    [root@instance-3806mxkl tools]# mvn -v
    Apache Maven 3.8.4 (9b656c72d54e5bacbed989b64718c159fe39b537)
    Maven home: /data/jenkins_home/tools/apache-maven-3.8.4
    Java version: 1.8.0_121, vendor: Oracle Corporation, runtime: /usr/java/jdk1.8.0_121/jre
    Default locale: en_US, platform encoding: UTF-8
    OS name: "linux", version: "3.10.0-1160.62.1.el7.x86_64", arch: "amd64", family: "unix"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    重新挂载jenkins容器,把之前的容器停掉,重新run一遍,有之前挂载的jenkins_home文件所以很快的,不要怕

    1、看了我上个教程的小伙伴,可以安心的跑这段代码

    docker run -d -v /data/jenkins_home:/var/jenkins_home -p 8081:8080 -p 50000:50000 -v $(which docker):/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /data/localtime:/etc/localtime --name jenkins --restart=on-failure -u 0 jenkins/jenkins:lts-jdk11
    
    
    # 多了个 -v $(which docker):/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock 这个意思就是说把本机的docker给挂载到jenkins容器中,后面我们跑shell脚本会遇见
    # 其他的我之前教程有讲,就不加赘述了
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2、没看我之前教程的小伙伴,还需要挂载maven文件的地址信息

    docker run -d \ 
    -v /data/jenkins_home:/var/jenkins_home \ 
    -p 8081:8080 \ 
    -p 50000:50000 \ 
    -v $(which docker):/usr/bin/docker \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v /data/localtime:/etc/localtime \
    -v /usr/local/java/apache-maven-3.8.5:/usr/local/apache-maven-3.8.4 \
    --name jenkins \
    --restart=on-failure \
    -u 0 \
    jenkins/jenkins:lts-jdk11
    
    # 这里是我随手打的 \ 注意空格 跑不起的话就 手动去掉 \ 使用空格隔开就行,但多半没问题
    # 解释一下 -v /usr/local/java/apache-maven-3.8.5:/usr/local/apache-maven-3.8.4 前面是本机刚才配置的maven地址,后面对应挂载的地址
    # 其他的我之前教程有讲,就不加赘述了
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    在jenkins配置maven

    在这里插入图片描述

    1、跟着点就行

    在这里插入图片描述

    2、看见没有,这就是之前我们挂载的目录

    在这里插入图片描述

    准备一个springboot项目

    1、在pom.xml中需要用到maven打包工具

        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.bootgroupId>
                    <artifactId>spring-boot-maven-pluginartifactId>
                    <configuration>
                        <excludes>
                            <exclude>
                                <groupId>org.projectlombokgroupId>
                                <artifactId>lombokartifactId>
                            exclude>
                        excludes>
                    configuration>
                plugin>
            plugins>
        build>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    2、在源目录下创建一个Dockerfile的文件,没有后缀

    在这里插入图片描述

    FROM openjdk:11
    MAINTAINER zhao
    COPY *.jar /app.jar
    
    CMD ["--server.port=9600"]
    
    EXPOSE 9600
    
    ENTRYPOINT ["java","-jar","/app.jar"]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    3、上传到gitee中

    配置gitee(使用Gitee webhook实现上传到git就可以更新,可以理解为钩子函数)

    1、下载gitee插件和Jersey 2 API插件(有些人测试gitee是否能联通的时候需要这个查询,不然报403错误),并重启jenkins,告诉你们一个重启技巧,在连接后面加restart就可以重启jenkins了

    在这里插入图片描述

    2、在系统配置中配置gitee连接

    在这里插入图片描述

    3、滑到gitee配置

    在这里插入图片描述

    4、登录gitee配置私人令牌

    在这里插入图片描述

    生成就行了,会得到一个比较长的码,这里要好好保存一下,点了关闭后,就看不见了,需要重新修改或者重新领取一遍了

    在这里插入图片描述

    5、我们回到jenkins这边(这里我把两个页面截图拼在了一起,别给我说看不懂)

    在这里插入图片描述

    6、点击测试(看虽然有个报错,但我其实没错,(0.0))

    在这里插入图片描述

    创建一个自由项目

    在这里插入图片描述

    1、配置gitee项目(需要在源码管理哪里点击一下git)

    在这里插入图片描述

    添加账号密码

    在这里插入图片描述

    2、配置Gitee webhook

    在这里插入图片描述

    拉倒下面,点击生成

    在这里插入图片描述

    3、到我们的gitee的指定仓库去,就是本文上几个图中喊你填写gitee仓库的那个url地址

    在这里插入图片描述

    添加

    在这里插入图片描述

    配置maven

    在这里插入图片描述

    配置shell脚本(这里我们要在容器中使用docker命令,所以必须要挂载,就是之前我们跑docker run -v … 的那些命令)

    在这里插入图片描述

    shell脚本(这个要根据自己情况改)

    #!/bin/bash
    # 服务名称(jenkins中取的)
    SERVER_NAME=test
    
    # 源jar名称,mvn打包之后,target目录下的jar包名称,可以在在 xshell 使用 cd /data/jenkins_home/workspace/你的项目名(jenkins中取的),这个文件夹可以看见gitee中发过来的文件,之后maven打jar包后会在本地的target目录下
    JAR_NAME= "School-0.0.1-SNAPSHOT"
    
    # jenkins下的目录
    JENKINS_HOME= "/var/jenkins_home/workspace/test"
    
    # 等待三秒
    echo sleep 3s
    sleep 1
    echo sleep 2s
    sleep 1
    echo sleep 1s
    sleep 1
          
    echo "结束进程完成"
    
    # JENKINS_HOME下的jar包所在目录
    cd /var/jenkins_home/workspace/test/target
    
    # 把文件中的Dockerfile放在跟jar包一个位置,方便我们打成镜像
    cp /var/jenkins_home/workspace/test/Dockerfile /var/jenkins_home/workspace/test/target
    
    # 修改文件权限  JAR_NAME
    chmod 755 School-0.0.1-SNAPSHOT.jar
    
    echo "看看docker能不能用"
    docker -v
    
    echo "停止容器"
    # 停止容器
    docker stop test
    
    echo "删除容器"
    # 删除容器
    docker rm test
    echo "删除镜像"
    # 删除镜像
    docker rmi test
    echo "打包镜像"
    # 打包镜像
    docker build -t test -f Dockerfile .
    echo "运行镜像"
    # 运行镜像
    docker run -d -p 9999:9600 --name springboot test
    
    
    • 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
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49

    这里我讲一下Dockerfile与这个shell脚本的联系

    我们先看shell脚本(这个要根据自己情况改)

    首先我们要先理解这个jenkins是一个docker容器,是与本机隔离的,跑的代码都是在容器中执行的,所以我们之前用maven打包到了 /var/jenkins_home/workspace/test/target 这个位置

    使用我们首先要进去这个target文件夹 就是 cd /var/jenkins_home/workspace/test/target

    停止容器,删除容器,删除镜像,是为了每次创建的时候,都不占内存,硬盘

    要把dockerfile和jar包放在一个好做成镜像(这里不理解的去学docker),使用复制了一份Dockerfile文件到target文件夹内 cp /var/jenkins_home/workspace/test/Dockerfile /var/jenkins_home/workspace/test/target

    改一下文件的权限 chmod 755 School-0.0.1-SNAPSHOT.jar

    因为在 target 目录下了,而且Dockerfile也拷贝下来了,所以使用Dockerfile打包成镜像 docker build -t test -f Dockerfile .

    运行docker镜像,成为容器

    我们再看dockerfile文件

    Dockerfile文件跟jar包在同一目录 ,扫描target目录下的jar包 复制为 app.jar ,使用 java -jar /app.jar 就可以运行了,并开发端口9600(这个跟springboot开放的端口是一致的)

    在这里插入图片描述

    保存运行

    跟着点

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    来到最后

    在这里插入图片描述

    去docker看一下

    [root@instance-3806mxkl tools]# docker images
    REPOSITORY            TAG         IMAGE ID       CREATED        SIZE
    test                  latest      c99994c74125   3 hours ago    692MB
    
    [root@instance-3806mxkl tools]# docker ps
    CONTAINER ID   IMAGE                       COMMAND                  CREATED        STATUS        PORTS                                                                                      NAMES
    b2bc65918ade   test                        "java -jar /app.jar …"   3 hours ago    Up 3 hours    0.0.0.0:9999->9600/tcp, :::9999->9600/tcp                                                  springboot
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    关于jenkins网上最新的教程是真的少,更新又快,坑多的不得了,对小白来说简直是劝退,我已经连续学了三天了,从早到晚,没有教程,报错就搜,重装了少说也有七八道,心力憔悴,如果大家喜欢的话,请一键三连,谢谢大家了

    借鉴了:Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】_掉发的小王的博客-CSDN博客_jenkins打包docker镜像

  • 相关阅读:
    K8S 在docker上部署 Selenium Grid (最新版)
    mindspore mindcv图像分类算法;模型保存与加载
    APM性能监测工具skywalking——k8s从入门到高并发系列教程(十三)
    【前段基础入门之】=>CSS3新增渐变颜色属性
    ab压力测试
    ChatGPT:Maven构建问题——配置Maven以生成可执行JAR文件并设置主类、解决Maven生成多个JAR文件的问题
    如何使用Matplotlib模块的text()函数给柱形图添加美丽的标签数据?
    如何优化并提供 Tomcat的启动速度
    工业检测 ocr
    Azure AD统一认证及用户数据同步开发指导
  • 原文地址:https://blog.csdn.net/qq_57581439/article/details/126132268