• Docker下Jenkins打包java项目并部署


    docker 构建Jenkins

    sudo docker run --name=zen_haslett  --user=jenkins  --privileged=true  --volume=/home/cyf/server/jenkins/jenkins_home:/var/jenkins_home   -v /usr/lib/jvm/java-17-openjdk-amd64:/usr/lib/jvm/java-17-openjdk-amd64  -v /usr/lib/maven/apache-maven-3.8.8:/usr/lib/maven/apache-maven-3.8.8     -p 50000:50000  -p 49999:8080 -p 8087:8087   --restart=always -d   jenkins/jenkins:2.362-jdk17
    
    • 1

    注意:需要把打包项目的端口 用-p映射出来,例如我项目是8087就 -p 8087:8087

    jenkins 的jdk版本最好和要打包的项目一致,坑太多了
    参考:又一本 Jenkins 书
    在这里插入图片描述
    常用的Docker命令
    docker ps -a
    用于列出所有容器(包括已停止的容器)不带-a 则只是运行中的
    docker stop
    停止一个或多个正在运行的容器
    docker rm
    删除一个或多个容器
    docker pull
    拉取映像
    例如:安装一个redis

    (base) beavers@beavers-home:/home/cyf/server$ docker pull redis
    (base) beavers@beavers-home:/home/cyf/server$ sudo mkdir ./redis
    (base) beavers@beavers-home:/home/cyf/server$ sudo mkdir ./redis/data
    (base) beavers@beavers-home:/home/cyf/server$ sudo touch ./redis/redis.conf
    
    docker run -p 6379:6379 --name redis  --privileged=true  --restart=always -v /home/cyf/server/redis/redis.conf:/etc/redis/redis.conf -v /home/cyf/server/redis/data:/data -d redis redis-server /etc/redis/redis.conf
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    # Redis配置文件
      
    # Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程
    daemonize no
    
    # 指定Redis监听端口,默认端口为6379
    port 6379
    
    # 绑定的主机地址,不要绑定容器的本地127.0.0.1地址,因为这样就无法在容器外部访问
    bind 0.0.0.0
    
    #需要密码则打开
    # requirepass mima
    
    # 持久化
    appendonly yes
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    docker exec
    在正在运行的容器内执行命令,docker exec -it /bin/bash

    安装Maven插件

    在这里插入图片描述
    如果没有合适的版本,需要手动去Maven Integration 下找到合适的版本,下载后在Deploy Plugin 下上传
    在这里插入图片描述

    新建一个Maven项目

    在这里插入图片描述

    设置

    添加JDK

    在这里插入图片描述
    可以不添加,Jenkins 自带

    添加Maven

    在这里插入图片描述
    可以不添加,Jenkins 自带

    设置源码地址

    在这里插入图片描述
    Credentials 为拉取代码时的凭证

    Build

    在这里插入图片描述

    打包后运行

    选择执行Shell
    在这里插入图片描述

    #!/bin/bash
    echo "开始启动jar包"
    export  BUILD_ID=dontKillMe
    
    #指定最后编译好的jar存放的位置 即是发布目录
    www_path=${WORKSPACE}/javaProject
    
    echo "日志目录 ${www_path}"
    #Jenkins中编译好的jar名称 
    jar_name=ai-his-0.0.1-SNAPSHOT
    app_jar=${jar_name}.jar
    
    LOG_PATH=${www_path}/logs/${jar_name}.log
    
    if [ ! -d "${www_path}" ]; then
     mkdir ${www_path}
     mkdir ${www_path}/logs
    fi
    #杀掉以前的进程
    echo "Stopping tooldin-mq"
    pid=`ps -ef | grep  ${app_jar} | grep -v grep | awk '{print $2}'`
    if [ -n "$pid" ]
    then
       echo "kill -9 的pid:" $pid
       kill -9 $pid
    fi
    
    #打包后jar的路径,默认是target下
    cp /var/jenkins_home/.m2/repository/com/beaver/ai-his/0.0.1-SNAPSHOT/ai-his-0.0.1-SNAPSHOT.jar ${www_path}
    cd  ${www_path}
    echo "Execute shell Finish"
    nohup java -Djasypt.encryptor.password=Qazwsx@123  -jar ${app_jar} > ${LOG_PATH} & 
    
    
    sleep 2
    newPid=$(pgrep -f $app_jar)
    echo "线程正常启动pid:$newPid"
    
    
    
    • 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
  • 相关阅读:
    Java项目在linux上部署步骤
    y57.第三章 Kubernetes从入门到精通 -- 业务镜像版本升级及回滚(三十)
    空投:实现去中心化、建立DAO的必经之路
    python列表
    Spark 的主要组件及任务分工
    .NET Core nuget 组件的安装、更新、卸载
    javascript: Sorting Algorithms
    爬虫ip给数据抓取带来了哪些便利?
    MyBatis入门案例
    fetch前后端通信
  • 原文地址:https://blog.csdn.net/qq_40495860/article/details/136474903