zoukankan      html  css  js  c++  java
  • docker自动发布jar包

    #!/usr/bin/sh
    #操作/项目路径(Dockerfile存放的路劲)
    BASE_PATH=/home/dockerJarWorkdir/
    # 源jar路径  
    SOURCE_PATH=/home/jenkinsJarPackage/
    #docker 镜像/容器名字或者 这里都命名为这个
    DOCKER_SERVER_NAME=es-0.0.2
    #jar名字es-0.0.1-SNAPSHOT
    JAR_SERVER_NAME=es-0.0.1-SNAPSHOT
    #容器id,正常启动的容器
    CID=$(docker ps | grep "$DOCKER_SERVER_NAME" | awk '{print $1}')
    #异常容器ID,异常启动
    ERR_CID_Exited=$(docker ps -a | grep "$DOCKER_SERVER_NAME"  |grep "Exited"| awk '{print $1}')
    ERR_CID_Created=$(docker ps -a | grep "$DOCKER_SERVER_NAME"  |grep "Created"| awk '{print $1}')

    #镜像id
    IID=$(docker images | grep "$DOCKER_SERVER_NAME" | awk '{print $3}')
     
    DATE=`date +%Y%m%d%H%M`
     
    # 最新构建代码 移动到项目环境
    function transfer(){
        echo "cp $SOURCE_PATH/$JAR_SERVER_NAME/target/$JAR_SERVER_NAME.jar to  $BASE_PATH ...."
        cp $SOURCE_PATH/$JAR_SERVER_NAME/target/$JAR_SERVER_NAME.jar $BASE_PATH
        echo "迁移完成"
    }
     
    ## 备份
    #function backup(){
    #    if [ -f "$BASE_PATH/$SERVER_NAME.jar" ]; then
    #        echo "$SERVER_NAME.jar 备份..."
    #            cp $BASE_PATH/$SERVER_NAME.jar $BASE_PATH/backup/$SERVER_NAME-$DATE.jar
    #        echo "备份 $SERVER_NAME.jar 完成"
    #    else
    #        echo "$BASE_PATH/$SERVER_NAME.jar不存在,跳过备份"
    #    fi
    #}
    #
    # 构建docker镜像
    function build(){
        if [ -n "$IID" ]; then
            echo "存在$DOCKER_SERVER_NAME镜像,IID=$IID"
        else
            echo "不存在$DOCKER_SERVER_NAME镜像,开始构建镜像"
            cd $BASE_PATH
            docker build -t ${DOCKER_SERVER_NAME} .
        fi
    }
     
    # 运行docker容器
    function run(){
        backup
        transfer
        build
        if [ -n "$CID" ]; then
            echo "存在$DOCKER_SERVER_NAME容器,CID=$CID,重启docker容器 ..."
            docker restart $DOCKER_SERVER_NAME
            echo "$DOCKER_SERVER_NAME容器重启完成"
        elif [ -n "$ERR_CID_Exited" ]
       then
            echo "异常存在$DOCKER_SERVER_NAME容器,CID=$ERR_CID_Created,删除异常容器 重新创建..."
            docker stop $ERR_CID_Exited
            docker rm  $ERR_CID_Exited
      elif [ -n "$ERR_CID_Created" ]
       then
             echo "异常存在$DOCKER_SERVER_NAME容器,CID=$ERR_CID_Created,删除异常容器 重新创建..."
            docker stop $ERR_CID_Created
            docker rm  $ERR_CID_Created
        else
            echo "不存在$DOCKER_SERVER_NAMEE容器,docker run创建容器..."
    #        --name docker-test                 容器的名字为docker-test,最后指定的镜像名称,
    #   -d                                 容器后台运行
    #   -p 3636:3636                       指定容器映射的端口和主机对应的端口都为3636
    #   -v /work/project/:/work/project/   将主机的/work/project/目录挂载到容器的/work/project/ 目录中(不可少每次本地更新jar包重启容器即可,不用重新构建镜像)
    #    --privileged=true 添加特权privileged启动的容器,可以看到很多host上的设备,并且可以执行mount。
    #甚至允许你在docker容器中启动docker容器。
                docker run --name ${DOCKER_SERVER_NAME} -v ${BASE_PATH}:${BASE_PATH} -d -p 8091:8092 ${DOCKER_SERVER_NAME}
    #一个镜像多个容器 将内部8091端口映射到服务8093
                #docker run --name ${DOCKER_SERVER_NAME} --privileged=true -v ${BASE_PATH}:${BASE_PATH} -d -p 8091:8092 ${DOCKER_SERVER_NAME}
              #docker run --name es-0.0.3 -v /home/dockerJarWorkdir/:/home/dockerJarWorkdir/ -d -p 8093:8091 es-0.0.2
              echo "$DOCKER_SERVER_NAME容器创建完成"
        fi
    }
     
    #入口
    run    


    #####################################################################
    #docker Dockerfile文件内容
    #基于jdk:8
    FROM openjdk:8
    #指定当前操作目录
    WORKDIR /home/dockerJarWorkdir/
    #容器启动后执行的操作,命令会在WORKDIR下执行
    CMD java -jar es-0.0.1-SNAPSHOT.jar



  • 相关阅读:
    Python写一个简单的爬虫
    Fully Convolutional Networks for Semantic Segmentation 译文
    Numpy中矩阵和数组的区别
    Linux(ubuntu)软件的安装
    Linux 打包和压缩
    Linux的软连接、硬链接和find命令
    Linux组管理、用户管理、查看用户信息、usermod、which、切换用户、修改文件具体权限
    Linux用户权限
    Linux远程管理命令
    Linux文件和目录相关的命令
  • 原文地址:https://www.cnblogs.com/xiaweifeng/p/12307579.html
Copyright © 2011-2022 走看看