zoukankan      html  css  js  c++  java
  • 超详细的docker+jenkins+svn+springboot+maven+镜像自动化部署

    最近觉得打包实在太麻烦了,还容易出错,就研究了一下自动部署,做下笔记。

    1、在linux服务器上安装docker

    这里参考https://www.cnblogs.com/hanfengyeqiao/p/13694680.html  即可。

    2、查询jenkins镜像

    docker search jenkins

    3、拉取镜像,一般来说是拉取使用人数最多的。但是不知道什么原因我拉取官方提供的docker.io/jenkins的时候,在配置过程中总是出现各种奇怪的问题。

    拉取docker.io/jenkins的时候需要使用 docker pull docker.io/jenkins:2.60.3 需要添加一个标签,因为这个镜像没有 默认标签。

    我这里是拉取的另外一个: docker pull docker.io/jenkinszh/jenkins-zh

    4、启动镜像 容器名jenkins1

    docker run -d -p 8000:8080 -p 50000:50000 -v /usr/local/jenkins:/var/jenkins_home --name jenkins1 --restart always --privileged=true docker.io/jenkinszh/jenkins-zh

    这里使用的是挂载的方式启动。

    5、访问8000端口,第一次可能有点久,需要等一会儿。

     这里的管理员密码获取方式:

    1)进入容器jenkins1:docker exec -it jenkins1 /bin/bash

    2)获取密码: cat /var/jenkins_home/secrets/initialAdminPassword(上面图片中红色的目录)

    然后继续

     

    到这里jenkins就已经部署好了。

    6、Jenkins全局工具配置

    这里的JAVA_HOME获取方式:

    1)进入容器jenkins1:docker exec -it jenkins1 bash

    2) 执行:echo $JAVA_HOME

     

     7、安装Jenkins对应Maven插件

    找到 “系统管理“ - “安装插件” ,点击 “可选插件”,找到如下maven插件的版本

    插件名称 Maven Integration

    需要登录服务器执行sh脚本的,还需要安装ssh插件。

    8、新建任务

     9、配置任务svn账号密码

    10、构建触发器,可自行配置

     11、打包

     12、正常情况,应用保存后,点击构建, 第一次构建可能耗时比较长,构建成功后,就能在/var/jenkins_home/workspace/任务名/target 目录查看到对应的jar包

    因为我这里要自动部署,所以得继续配置。

    13、继续配置环节:Post Steps我这里分为两部分:

    1)本机操作:将构建成功后的jar包,移动到Dockerfile文件所在的目录

    在Post Steps新增一个  执行shell

    #!/bin/bash
    
    #服务名称 可自定义
    SERVER_NAME=kxrw
    
    # 源jar名称,mvn打包完成之后,target目录下的jar包名称,也可选择成为war包,war包可移动到Tomcat的webapps目录下运行,这里使用jar包,用nohup java -jar 命令执行  
    
    JAR_NAME=kxrw
    
    
    #target 打包生成jar包的目录
    
    JAR_PATH=/var/jenkins_home/workspace/test-kxrw/target
    
    # 打包完成之后,把jar包移动到运行jar包的目录--->work_daemon,work_daemon这个目录需要自己提前创建
    
    JAR_WORK_PATH=/var/jenkins_home/probject
    
    #删除原目录的jar
    rm -f $JAR_WORK_PATH/kxrw.jar
    
    #复制jar包到执行目录
    
    echo "复制jar包到执行目录:cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH"
    cp -f $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH
    
    echo "复制jar包完成"

    2)登录服务器,进入Dockerfile目录,编译镜像然后打包

    这里需要下载ssh相关插件。

    找到 “系统管理“ - “系统配置” , “SSH remote hosts”,

     新增好后。

    在Post Steps新增一个Execute shell script on remote host using ssh

    #进入服务器Dockerfile所在目录
    cd /usr/local/jenkins/probject
    
    echo "停止正在运行的容器:kxrw1"
    docker stop kxrw1
    
    echo "删除容器:kxrw1"
    docker rm kxrw1
    
    echo "删除已经存在的Dockerfile生成镜像文件"
    docker rmi kxrw
    
    echo "编译Dockerfile生成镜像文件"
    docker build -t kxrw -f Dockerfile .
    
    echo "运行容器:kxrw"
    docker run -d -p 8088:8080 --name kxrw1 --restart=always kxrw:

    Dockerfile文件的内容参考https://www.cnblogs.com/hanfengyeqiao/p/14768499.html

    这里为什么要分两步呢,因为在jenkins是在docker内的容器,如果要在jenkins内部执行宿主机命令需要配置其他东西有点麻烦。我这里偷了一个懒,重新登录当前服务器,进入对应目录即可执行命令。

    到这里一个自动化打包流程就配置好了,如果有个性化的需求调整构建后执行的脚本即可。

    不管什么时候都别忘了最初的梦想
  • 相关阅读:
    计蒜客
    CodeForces -1216B.Shooting
    关于gets读入因为缓冲区出现的问题
    CodeForces
    Codeforces Round #603 (Div. 2) C.Everyone is A Winner!
    Codeforces Round #603 (Div. 2) A.Sweet Problem
    Codeforces Round #603 (Div. 2)B. PIN Codes
    Codeforces 524C.The Art of Dealing with ATM(暴力)
    Codeforces Round #600 (Div. 2) C. Sweets Eating
    数组的定义和初始化
  • 原文地址:https://www.cnblogs.com/hanfengyeqiao/p/14769486.html
Copyright © 2011-2022 走看看