Jenkins+docker自动化部署管理springBoot项目

Jenkins+docker自动化部署管理springBoot项目

Jenkins项目创建与配置

  1. 构建一个maven项目
  2. 配置构建参数

Jenkins+docker自动化部署管理springBoot项目_第1张图片

  1. 配置源代码、触发器、构建环境

Jenkins+docker自动化部署管理springBoot项目_第2张图片

Jenkins+docker自动化部署管理springBoot项目_第3张图片

  1. 构建配置

Jenkins+docker自动化部署管理springBoot项目_第4张图片

以上四个配置说明:

1、Source filesjenkins源jar包路径

2、Remove prefix拷贝目录需要删除的前缀(一般配置为第一个路径去掉jar文件之前的)

3、Remote directory:远程机器目录

4、远程机器shell脚本路径

Dockerfile编写

FROM java:8-jre

MAINTAINER paywallet-accounting

 

RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

RUN echo "Asia/shanghai" > /etc/timezone

 

CMD ["nohup", "java", "-jar","-Dspring.profiles.active=dev", "/app/paywallet-accounting-1.0-SNAPSHOT.jar", ">", "/dev/null", "&"]

 

EXPOSE 8003

 

需要修改的地方:

新应用只需要修改 应用名(MAINTAINER)、端口(EXPOSE)

启动命令中的启动模式、jar路径(标红部分)

编写jenkins中打包成功后执行的shell脚本

#操作/项目路径(Dockerfile存放的路劲)

BASE_PATH=/data/paywallet/accounting

#端口(与Dockerfile中的EXPOSE相同)

PORT=8003

#docker 容器中jar目录(与Dockerfile中的CMD的jar目录相同)

DOCKER_PATH=/app

#docker 镜像/容器名字或者jar名字 这里都命名为这个(建议与Dockerfile中的MAINTAINER相同)

SERVER_NAME=paywallet-accounting

LOG_PATH=/data/canteen/app/logs

#容器id

CID=$(docker ps -a | grep "$SERVER_NAME" | awk '{print $1}')

#镜像id

IID=$(docker images | grep "$SERVER_NAME" | awk '{print $3}')

 

DATE=`date +%Y%m%d%H%M`

 

 

# 构建docker镜像

function build(){

         if [ -n "$IID" ]; then

                   echo "存在$SERVER_NAME镜像,IID=$IID"

         else

                   echo "不存在$SERVER_NAME镜像,开始构建镜像"

                            cd $BASE_PATH

                   docker build -t $SERVER_NAME .

         fi

}

 

# 运行docker容器

function run(){

         build

         if [ -n "$CID" ]; then

                   echo "存在$SERVER_NAME容器,CID=$CID,重启docker容器 ..."

                            docker restart $SERVER_NAME

                   echo "$SERVER_NAME容器重启完成"

         else

                   echo "不存在$SERVER_NAME容器,docker run创建容器..."

                            docker run --name $SERVER_NAME -v $BASE_PATH:$DOCKER_PATH -v $LOG_PATH:/logs  -d -p $PORT:$PORT $SERVER_NAME

                   echo "$SERVER_NAME容器创建完成"

         fi

}

 

#入口

run

你可能感兴趣的:(Docker,JAVA)