自动/持续部署Docker 的tomcat web项目(二)

  • 安装jenkins
  • Jenkins环境配置
  • 创建Jenkins任务
    • 源码拉取
    • maven构建
    • SSH连接
    • 一键构建
  • 脚本自动/持续部署

续自动/持续部署Docker 的tomcat web项目(一)

本文阅读需要 shell 基础

安装jenkins

见【记录】jenkins 安装及环境配置(一)

Jenkins环境配置

见【记录】jenkins 安装及环境配置(二)

创建Jenkins任务

这里选择自由构建模式

源码拉取

源码管理选择 git,账号为git平台登录账号,分支根据实际进行修改

maven构建

在构建中选择 调用顶层Maven 目标

选择之前配置的maven环境,配置参考jenkins maven配置

SSH连接

安装 SSH 插件后才能看到ssh选项,安装SSH插件参考配置SSH连接服务器

使用之前配置好的 ssh 连接,如何创建参考Jenkins插件安装

一键构建

保存后,点击 立即构建 就会运行。

脚本自动/持续部署

以下为/work/project/warToTomcat.sh的脚本内容,根据提示更改后,进行调试直至成功

#!/bin/bash#-----------使用说明-----------#
#Author: bai5775@outlook.com
#v1 2021.04.28
#1.备份war包
#2.停止、删除docker容器
#3.删除旧docker镜像
#4.创建Dockerfile文件
#5.构建新docker镜像
#6.运行docker容器# 操作/项目路径(Dockerfile存放的路径)
BASE_PATH=/work/project
# 源war路径
SOURCE_PATH=/mydata/jenkins_home/workspace/tomcat-demo/target
# 打包后war名字
SERVER_NAME=sprintboot_tomcat_demo-0.0.1-SNAPSHOT
# docker 镜像/容器名字
DOCKER_NAME=demo
# 获取容器id
CID=$(docker ps | grep "$DOCKER_NAME" | awk '{print $1}')
# 获取镜像id
IID=$(docker images | grep "$DOCKER_NAME" | awk '{print $3}')
# 获取时间
DATE=`date +%Y%m%d%H%M`
# 镜像构建作者标识
AUTHOR=bai5775@outlook.com# 创建构建docker镜像文件
function createDockerfile() {echo "检测docker构建文件 $BASE_PATH/$DOCKER_NAME/Dockerfile 是否存在"if [ ! -f "$BASE_PATH/$DOCKER_NAME/Dockerfile" ]; thenecho "from tomcat
MAINTAINER $AUTHOR
RUN rm -rf /usr/local/tomcat/webapps/*
COPY $DOCKER_NAME.war   /usr/local/tomcat/webapps
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone" > $BASE_PATH/$DOCKER_NAME/Dockerfileecho "创建构建文件 $BASE_PATH/$DOCKER_NAME/Dockerfile 成功,内容为"cat $BASE_PATH/$DOCKER_NAME/Dockerfileelse echo "构建文件 $BASE_PATH/$DOCKER_NAME/Dockerfile 存在"fi
}# 将最新的war包移动到项目环境
function transfer(){echo "检测项目文件夹$BASE_PATH/$DOCKER_NAME是否存在"if [ ! -d "$BASE_PATH/$DOCKER_NAME" ]; thenmkdir -p $BASE_PATH/$DOCKER_NAMEecho "$BASE_PATH/$DOCKER_NAME文件夹创建完成"elseecho "$BASE_PATH/$DOCKER_NAME文件夹已经存在"fiecho "最新的war包 $SOURCE_PATH/$SERVER_NAME.war 迁移至项目路径 $BASE_PATH/$DOCKER_NAME ...."cp $SOURCE_PATH/$SERVER_NAME.war $BASE_PATH/$DOCKER_NAMEmv $BASE_PATH/$DOCKER_NAME/$SERVER_NAME.war $BASE_PATH/$DOCKER_NAME/$DOCKER_NAME.war echo "迁移完成"
}# 备份原先的war包
function backup(){echo "检测项目文件夹$BASE_PATH/backup/$DOCKER_NAME是否存在"if [ ! -d "$BASE_PATH/backup/$DOCKER_NAME" ];thenmkdir -p $BASE_PATH/backup/$DOCKER_NAMEecho "$BASE_PATH/backup/$DOCKER_NAME文件夹创建完成"elseecho "$BASE_PATH/backup/$DOCKER_NAME文件夹已经存在"fiif [ -f "$BASE_PATH/$DOCKER_NAME.war" ]; thenecho "$DOCKER_NAME.war 备份..."mv $BASE_PATH/$DOCKER_NAME.war $BASE_PATH/$DOCKER_NAME-$DATE.warmv $BASE_PATH/$DOCKER_NAME-$DATE.war $BASE_PATH/backup/$DOCKER_NAMEecho "备份 $DOCKER_NAME.war 完成"elseecho "$BASE_PATH/$DOCKER_NAME.war不存在,跳过备份"fi
}# 构建docker镜像
function build(){if [ -n "$IID" ]; thenecho "存在$DOCKER_NAME镜像,IID=$IID"if [ -n "$CID" ]; thenecho "存在正在运行的$DOCKER_NAME容器,CID=$CID"docker stop $DOCKER_NAMEdocker rm $DOCKER_NAMEecho "停止并删除$DOCKER_NAME容器,CID=$CID"fidocker rmi $DOCKER_NAMEecho "删除docker $DOCKER_NAME镜像"ficd $BASE_PATH/$DOCKER_NAMEecho "进入$BASE_PATH/$DOCKER_NAME目录,开始构建镜像"docker build -t $DOCKER_NAME .echo "构建镜像完成"
}# 运行docker容器
function run(){docker run --name $DOCKER_NAME -d -p 8082:8080 $DOCKER_NAMEecho "$DOCKER_NAME容器 运行完成"echo "检测运行情况"CID=$(docker ps | grep "$DOCKER_NAME" | awk '{print $1}')if [ -n "$CID" ]; thenecho "容器$DOCKER_NAME 运行成功"elseecho "容器$DOCKER_NAME 运行失败"fi
}function main(){backuptransfercreateDockerfilebuildrun
}# 入口
main

自动/持续部署Docker 的tomcat web项目(二)相关推荐

  1. 自动/持续部署Docker 的tomcat web项目(一)

    自动/持续部署Docker 的tomcat web项目 docker安装tomcat 拉取Tomcat镜像 查看镜像 启动tomcat镜像 参数说明 查看正在运行的容器 部署web项目 编辑Docke ...

  2. MyEclipse+Tomcat web项目改名

    2019独角兽企业重金招聘Python工程师标准>>> MyEclipse+Tomcat web项目改名 工程名称原来为old,发布到tomcat webapps下后为old, 右键 ...

  3. 关于部署传统的Dynamic Web项目

    现在大部分都是采用maven构建的项目,但是偶尔也会遇到一些较老的项目,采用的是传统的动态Web项目. 我最近碰到这样一个项目,项目用的jar包都放在了WEB-INF/lib目录下.之前的人采用的部署 ...

  4. IDEA热部署基于maven的web项目

    第一步:首先先创建web项目 按照向导一步一步完成项目创建,我创建的示例项目为hotdeploddemo 第二步:设置项目的web资源 下图中的路径要修改正确,指向src/main/webapp/WE ...

  5. docker 搭建Tomcat web 简单示例过程

    本文内容为分布式系统课程中所做的一个作业内容,具体示例过程没有全部分享到文中,仅供参考. (1)以公共仓库的Tomcat镜像为基础镜像进行容器创建,拉取镜像命令:docker pull tomcat. ...

  6. LAMP环境中如何重新部署一个Yii2.0 web项目

    使用Yii2.0 framework开发的项目,使用Github进行版本控制,现在要把这个项目部署到一个新的电脑/系统中: (1)安装LAMP (2)在/var/www/html目录下执行 git c ...

  7. 聊聊 Web 项目二维码生成的最佳姿势

    在设计和实现的过程之后,你永远不知道部署上去的程序会已什么样的姿势运行. 本篇借一次生成二维码逻辑的不同实现,阐述 Web 项目中二维码生成的正确姿势. 文中如有批量,欢迎各位看客老爷拍砖.试运行前5 ...

  8. CentOS6.x下,tomcat - web项目部署

    1. 安装tomcat tomcat安装方法:http://www.cnblogs.com/vurtne-lu/p/6478440.html 2. 配置tomcat 修改server.xml文件 &l ...

  9. 一个tomcat部署俩个java web项目

    2.发布的时候可以发布成war包,用项目名称右键export,选择项目名称,还有发布的路径,即tomcat下的路径,参考http://zhidao.baidu.com/link?url=imOu0Uu ...

最新文章

  1. 50个查询系列-第二个查询
  2. JavaScript学习笔记(五)
  3. python读取指定字节长度的文本
  4. WIN32下(非MFC)自编TRACE
  5. 入门机器学习,这一步必不可少!
  6. centos7根目录root扩容操作记录
  7. zblog主题OL免费清爽资讯博客主题
  8. Tomcat安装配置与基础使用
  9. 编译原理完整学习笔记(七):优化代码
  10. cass怎么多级放坡_cass土方计算考虑放坡
  11. Visual Studio 2022配置GAMP出现 LNK2019无法解析外部符号_imp_timeGetTime@0
  12. TABLEAU教程2
  13. 使用Python的pandas库操作Excel
  14. 计算机求百钱买百鸡问题采用,5.5 百钱买百鸡问题
  15. 微信支付报错提示“商户号该产品权限未开通,请前往商户平台产品中心检查后重试...
  16. 配置Exchange Server 2010多种邮件客户端收发电子邮件
  17. 八字易经算法之用JAVA实现 地藏十神排法
  18. android源码大放送啦(实战开发必备)
  19. STM32F10x_模拟I2C读写EEPROM(2)(切换SDA方向 + 读ACK位 + 完整代码)
  20. 力扣算法学习计划打卡:第七天

热门文章

  1. ffmpeg——vs集成ffmpeg相关开发
  2. 详解CentOS7安装配置vsftp搭建FTP
  3. Markdown——编辑器语法——字体、字号与颜色
  4. 【AI视野·今日CV 计算机视觉论文速览 第221期】Thu, 17 Jun 2021
  5. JupyterNotebook配置远程登录
  6. Kubernetes-ReplicationController(RC)(四)
  7. python 列表数据类型 200221
  8. mysql-练习的数据准备
  9. (一)Rational Rose 2007 下载安装
  10. 新手零基础入门小程序之万达电影