前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >性能环境之Jenkins+Maven自动化部署SpringBoot压测环境(Docker篇)

性能环境之Jenkins+Maven自动化部署SpringBoot压测环境(Docker篇)

作者头像
高楼Zee
发布2019-07-17 17:50:53
7980
发布2019-07-17 17:50:53
举报
文章被收录于专栏:7DGroup7DGroup

前言

在上文性能环境之Jenkins+Maven自动化部署SpringBoot压测环境(实战篇)中我们介绍了常规部署流程,本文将在上文的基础上扩展Jenkins+Maven+Docker自动化部署我们的压测环境。

关于Docker

Docker在这里有什么用?

Docker,是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。 Docker是基础架构的管理员。它将能够打包软件及其所有依赖项以作为容器运行。您可以将应用(作为docker镜像打包)部署到安装了docker的任何计算机中。它将软件与硬件分开 - 因此开发人员可以放心,应用程序将在任何计算机上运行,而不管机器可能具有哪些可能与用于编写和测试代码的机器不同的自定义设置。

题外话:本人觉得,每个Tester都应该了解下Docker,毕竟我们不是专业的运维,如果花费大量时间在倒腾一些环境的安装,也是蛮枯燥乏味的。使用了Docker可以减少很多的时间,可以直接上手部署各式各样的环境了。真的很Nice呀!

整体设计

新建Jenkins Job

我们在上文常规部署Job基础上复制一个新的job

配置Job

Post Steps

Send files or execute commands over SSH中的 Execcommand修改为 jenkins-in/buildimage.sh

新建buildimage脚本

测试应用服务上 /root/jenkins-in目录新建 buildimage.sh

代码语言:javascript
复制
# 设置系统时间
DATE=$(date +%Y%m%d)
# 设置程序目录
DIR=/usr/local/app
# 设置Jar名称
JARFILE=person-0.0.1-SNAPSHOT.jar
# 设置Docker镜像&容器名称
SERVER_NAME=springboot-docker-demo
# 容器id
CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
# 镜像id
IID=$(docker images | grep "$SERVER_NAME" | awk '{print $3}')

# 判断是否存在backp目录,如果不存储就创建
if [ ! -d $DIR/backup ];then
   mkdir -p $DIR/backup
fi
cd $DIR

# 杀掉当前的容器及镜像
docker stop $CID
docker rm $CID
docker rmi $IID

# 备份旧程序
mv $JARFILE $DIR/backup/$JARFILE$DATE
# 部署新程序
mv -f /root/jenkins-in/$JARFILE .
# build镜像
docker build -t $SERVER_NAME .

echo "The service will be starting"
# 运行容器
docker run --name $SERVER_NAME -d -p 8081:8081 $SERVER_NAME

cd backup/
ls -lt|awk 'NR>5{print $NF}'|xargs rm -rf
echo "starting success!!!"
~

创建Dockerfile

测试应用服务器 /usr/local/app下创建Dockerfile

代码语言:javascript
复制
# Dockerfile
# 基于的镜像
FROM frolvlad/alpine-oraclejdk8

# 数据挂载点
VOLUME /usr/local/app/logs

# 指定路径下的copy内容到容器中路径下
ADD person-0.0.1-SNAPSHOT.jar /usr/local/app/app.jar

# 指定镜像的默认入口
# -Djava.security.egd=file:/dev/./urandom 可解决tomcat可能启动慢的问题
ENTRYPOINT java ${JAVA_OPTS} ${JVM_GC_LOG_PATH} -Djava.security.egd=file:/dev/./urandom -jar /usr/local/app/app.jar

# 对外端口
EXPOSE 8081

# 工作目录
WORKDIR /usr/local/app

# JVM参数
ARG JAVA_OPTS="-server -Xms1024M -Xmx1024M -XX:PermSize=256M -XX:MaxPermSize=256M \
-XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDetails \
-Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=127.0.0.1 \
-Dcom.sun.management.jmxremote.port=10086 -Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false"

# log路径
ARG JVM_GC_LOG_PATH="-XX:ErrorFile=/usr/local/app/logs/gc/hs_err_pid%p.log -XX:HeapDumpPath=/usr/local/app/logs/gc"

# JVM环境变量
ENV JAVA_OPTS=${JAVA_OPTS}
ENV JVM_GC_LOG_PATH=${JVM_GC_LOG_PATH}

部署项目

点击“立即构建”,任务控制台将实时输出相关信息

我们看到输出了starting success!!!,说明我们需要的应用容器已经跑起来了!

我们可以去测试应用服务器验证下

我们可以看到 springboot-docker-demo镜像已经成功运行起来

测试验证

此处,我们还是使用Postman验证应用查询人员接口

我们可以看到应用成功返回了JSON数据,测试成功。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-10-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 7DGroup 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 关于Docker
  • 整体设计
  • 新建Jenkins Job
  • 配置Job
    • Post Steps
    • 新建buildimage脚本
    • 创建Dockerfile
    • 部署项目
    • 测试验证
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档