Dockerfile

    1. FROM jdk8_image:V1.0
    2. MAINTAINER liuyang "123@q.c"
    3. ENV TimeZone=Asia/Shanghai
    4. RUN ln -sf /usr/share/zoneinfo/$TimeZone /etc/localtime && echo $TimeZone > /etc/timezone
    5. # 定义传入的参数
    6. ARG port
    7. ARG proj_dire
    8. ARG jar_name
    9. ENV proj_dire_env $proj_dire
    10. ENV jar_name_env $jar_name
    11. # 工作目录
    12. WORKDIR $proj_dire
    13. # 对外暴露端口
    14. EXPOSE $port
    15. # 将jar添加到容器
    16. ADD $jar_name $jar_name
    17. # 启动命令
    18. ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -Dfile.encoding=UTF-8 -jar ${proj_dire_env}/${jar_name_env}
    19. # 启动环境
    20. CMD ["--server.port=${port}"]

    build.sh

    # jar存放目录
    projDire=/home/jar_file/$1
    
    # 代码目录,如果是-project,需要进入-app子目录
    echo "result:${result}"
    result=$(echo $1 | grep "project")
    if [[ "$result" != "" ]]
      then
        dire=/var/jenkins_home/workspace/sc-cloud/$1/${1/project/app}
      else
        dire=/var/jenkins_home/workspace/sc-cloud/$1
    fi
    
    echo "dire目录:${dire}"
    # 编译打包
    cd $dire
    mvn clean install -Dmaven.test.skip=true
    
    # 复制jar文件
    mkdir -p $projDire
    cd $projDire
    jarName=`ls *.jar`
    rm -f *.jar
    cp $dire/target/*.jar $projDire
    
    #删除原镜像
    docker stop $1
    docker rm $1
    docker rmi $1
    
    # 运行
    docker build -f /home/jar_file/Dockerfile -t $1:latest . --build-arg port=$2 --build-arg proj_dire=$projDire --build-arg jar_name=$jarName
    docker run --name=$1 -e port=$port -e proj_dire=$projDire -e jar_name=$jarName -p $2:$2 -d -it $1
    docker start $1
    

    构建shell

    #!/bin/bash
    # 定义端口
    port=8080
    case $module in
        blade-auth) port=8010;;
        blade-gateway) port=8020;;
        system-service-project) port=8030;;
        mobile-service-project) port=8040;;
        *) port=8080;;
    esac
    
    cd /var/jenkins_home/workspace/sc-cloud
    bash build.sh $module $port