当前位置:首页 » 《我的小黑屋》 » 正文

东方通tongweb容器自动部署java应用程序

11 人参与  2024年05月01日 11:20  分类 : 《我的小黑屋》  评论

点击全文阅读


java应用程序部署到东方通tongweb服务中全自动化脚本,减少人工操作、降底出错机率。

实现方案:

        采用Docker 挂载目录部署方式,为不同java应用程序启动一个 tongweb docker 镜像,并 挂载当前java应用程序对应相关目录及tongweb配置。

脚本能力:
        自动化脚本实现war 包自动解压。
        支持应用配置文件与war包分离 (配置存放于war包同级目录下config目录)。
        不同java应用程序隔离互不应响。
        命令操作:resetup-重新部署、stop-停止、start-启动、restart-重启

以下是详细实现步骤

java spring boot应用打成wap包部署到东方通tongweb 实现自动化部署脚本。

1. mvn 打包排除 tomcat

<build>    <finalName>${project.name}</finalName>    <plugins>        <plugin>            <groupId>org.apache.maven.plugins</groupId>            <artifactId>maven-war-plugin</artifactId>            <configuration>                <packagingExcludes>                    WEB-INF/lib/spring-boot-starter-tomcat-*.jar,                    WEB-INF/lib/tomcat-embed-*.jar                </packagingExcludes>            </configuration>        </plugin>    </plugins></build>

2. 设定打包类型

    <packaging>war</packaging>

3. 准备tongweb7.0 docker 镜像

      /root/myproject/  #项目目录
      /root/myproject/tongweb  #是本地镜像包文件存放目录
      /root/myproject/myapp   #应用所在目录
      /root/myproject/myapp/package   #应用部署包所在目录


4. 准备脚本
   1) 启动镜像脚本 :
  /root/myproject/deploy-tongweb-by-docker.sh

#!/bin/shDOCKER_IMAGE="tongweb7:v1.0.0" #这里镜像名称 跟据实际名称版本做相应修改TongWebPost=$1 # TongWeb主机上对外开放的端口号CONTAINER_PORT=$2 # 容器内部端口号HOST_PORT=$3 # 应用在主机上对外开放的端口号AppName=$4 # 应用名称WebConfig=$5  # tongweb应用部署配置AppPath=$6  # 应用挂载原路径currentDir=$(dirname $0)if [ "${currentDir}" = "." ] ; then        currentDir=$(pwd)fiif [ "${currentDir}" = ".." ] ; then        currentDir=$(dirname $(pwd))fiHOST_IP=$(ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v 172.17.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:")echo 'HOST_IP='${HOST_IP}TongWebRoot=/app/tongweb/   #容器内 tongweb服务安装路径if [ -z "$(docker images -q ${DOCKER_IMAGE})" ]; then  docker load -i ${currentDir}/tongweb/tongweb7-v1.0.0.tar.gz  #这里是本地镜像包文件名称 跟据实际名称版本做相应修改  sleep 2sfiAppLogPath=$(dirname ${AppPath})/logs   #应用日志挂载路径 (容器内路径/data/logs/ 需按应用实际情况做修改)if [ ! -d "${AppLogPath}" ]; then  mkdir -p ${AppLogPath}fiif [ ! -d "${AppLogPath}/tongweb" ]; then  mkdir -p ${AppLogPath}/tongwebfi#如应用是nacos服务,必须指定环境变量 spring.cloud.nacos.discovery.ip 为主机IP#同一主机部署多应用时 可指定环境变量server.port替换应用内配置#容器内路径/data/logs/ 需按应用实际情况做修改#容器内路径/usr/share/tongweb/ 与tongweb.xml配置文件中的 web-app.location配置是相关联的。docker run -it -p ${TongWebPost}:9060 \               -p ${HOST_PORT}:${CONTAINER_PORT}  \               -d -v ${WebConfig}:${TongWebRoot}conf/tongweb.xml \               -v ${currentDir}/license.dat:${TongWebRoot}license.dat \               -v ${AppPath}:/usr/share/tongweb/ \               -v ${AppLogPath}:/data/logs/ \               -v ${AppLogPath}/tongweb:${TongWebRoot}/logs/ \               -m 4096M \               -e spring_cloud_nacos_discovery_ip=${HOST_IP} \               -e server_port=${CONTAINER_PORT} \               --name=${AppName} \               --entrypoint="${TongWebRoot}bin/startserver.sh" \               ${DOCKER_IMAGE}

2).准备tongweb应用部署配置文件模版

/root/myproject/myapp/tongweb_template.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><tongweb>    <auto-deploy enabled="true" jsp-compile="false" request-parameters-lost-validation="false" dir="${tongweb.base}/autodeploy" check-interval="3000" vs-name="server" app-secret-level="1"/>    <hot-deploy enabled="true" watched-resource="WEB-INF/web.xml,MATA-INF/application.xml"/>    <apps>        <web-app  name="console" original-location="${tongweb.upload}/console" location="${tongweb.sysapp}/console" context-root="/console" vs-names="admin" is-directory="true" enabled="true" description="console" deploy-order="1" object-type="sys" jsp-compile="false" request-parameters-lost-validation="false" dtd-validate="false" is-autodeploy="false" delegate="false"/>        <web-app  name="heimdall" original-location="${tongweb.upload}/heimdall" location="${tongweb.sysapp}/heimdall" context-root="/heimdall" vs-names="admin" is-directory="true" enabled="true" description="heimdall" deploy-order="1" object-type="sys" jsp-compile="false" request-parameters-lost-validation="false" dtd-validate="false" is-autodeploy="false" delegate="false"/>        <web-app  name="sysweb" original-location="${tongweb.upload}/sysweb" location="${tongweb.sysapp}/sysweb" context-root="/sysweb" vs-names="admin" is-directory="true" enabled="true" description="sysweb" deploy-order="1" object-type="sys" jsp-compile="false" request-parameters-lost-validation="false" dtd-validate="false" is-autodeploy="false" delegate="false"/>        <web-app  name="%APP_NAME%" original-location="/usr/share/tongweb/webroot" location="/usr/share/tongweb/

点击全文阅读


本文链接:http://zhangshiyu.com/post/102585.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1