Jenkins部署项目到Docker容器

背景

  • 一个负责数据清洗的项目,以Kafka消费者的方式接受数据并处理。当消费数据数量过多时,要对项目进行性能优化。
  • 优化方式:服务器通过部署多个项目增加项目进程的方式增加Kafka消费者的数量。每个进程里使用线程池异步做业务处理。

环境

  • Ubuntu18
  • Java8
  • Jenkins

前置条件

  • Jenkins安装完成

Jenkins配置关键点

  • 上传项目jar包及Dockerfile文件到服务器
  • 上传文件后,自动执行脚本文件

步骤

  • 打开Jenkins页面,选择项目进行部署配置,基本配置网上一大把,这里只会详细说明Jenkins构建后操作,如下图
  • 发送服务器文件(Source files): 项目打包完成,所有文件都会存在target目录下
    • 项目jar包:项目构建的jar包
    • Dockerfile文件:Docker构建镜像基本配置,这个文件位置,你可以自己决定,Dockerfile文件内容如下
# 该镜像需要依赖的基础镜像
FROM java:8

# COPY: 将应用的配置文件复制到docker容器的/目录下
# 此处作用:将当前目录下所有jar合并打包到docker根目录下,并重命名 app.jar
# 此处名称自定义即可,如果只是使用一个jar包,那么*.jar 可以指定自己上传的jar包
COPY *.jar /app.jar

# EXPOSE:声明端口
EXPOSE 8551

# 指定docker容器启动时运行jar包
# 此处运行的jar包名称,需要和上面重命名名称一致
ENTRYPOINT ["java", "-jar","/app.jar"]

# 指定维护者的名字
MAINTAINER jingguoliang
  • 上传文件后,服务器执行脚本(Exec Command),脚本内容如下
#!/bin/bash
echo "上传远程服务器成功"

#镜像名:自定义
imageNAME="cmms-receiver"
#该端口为Docker宿主机端口:自定义
PORT=8551
#容器1:使用镜像包启动的容器名称,数量自定义,我是使用一个镜像启动3个容器
CONNAME1="cmms-receiver-2.0-RELEASE-1"
#容器2
CONNAME2="cmms-receiver-2.0-RELEASE-2"
#容器3
CONNAME3="cmms-receiver-2.0-RELEASE-3"

pwd
ls -l

#切换到 /home/ubuntu/cmms/lib 目录
#此目录为jenkins打包后发送文件目录,目录结构如下
#cmms-receiver-2.0-RELEASE.jar
#classes/Dockerfile
cd /home/ubuntu/cmms/lib/receiver
ls -l

#复制Dockerfile到lib目录下
cp ./classes/Dockerfile ./Dockerfile
echo "复制Dockerfile成功"
ls -l

#强制删除已有容器1
{ # try
  docker rm  -f  ${CONNAME1}
} || { # catch
  echo "容器1不存在"
}

#强制删除已有容器2
{ # try
  docker rm  -f  ${CONNAME2}
} || { # catch
  echo "容器2不存在"
}

#强制删除已有容器3
{ # try
  docker rm  -f  ${CONNAME3}
} || { # catch
  echo "容器3不存在"
}

#强制删除镜像
{ # try
  docker image rm  -f  ${imageNAME}
} || { # catch
  echo "镜像不存在"
}


#构建镜像
echo "开始构建镜像文件"
docker build -t ${imageNAME} .
echo "构筑镜像结束"

#创建并运行容器1:参数-p 8111:{port} 其中8111是容器暴露端口,自定义即可
docker run --name ${CONNAME1} -d -p 8111:${PORT} -e "SPRING_PROFILES_ACTIVE=uat" ${imageNAME}
echo "创建容器$CONNAME1成功"

#创建并运行容器2
docker run --name ${CONNAME2} -d -p 8112:${PORT} -e "SPRING_PROFILES_ACTIVE=uat" ${imageNAME}
echo "创建容器$CONNAME2成功"

#创建并运行容器3
docker run --name ${CONNAME3} -d -p 8113:${PORT} -e "SPRING_PROFILES_ACTIVE=uat" ${imageNAME}
echo "创建容器$CONNAME3成功"
posted @ 2022-05-24 17:56  话·醉月  阅读(2317)  评论(0编辑  收藏  举报