跳至主要內容

离线部署方案


离线部署方案

背景

医院等客户的信息系统通常运行于内网环境,公司内部或云上的CD(持续部署)工具无法直接连接医院内网环境,所以为了运行已发布的软件,需要特殊的的方式来进行部署。主要有以下场景:

  • 场景1:医院客户现场定制开发,经允许的话可以在客户内网搭建CI/CD环境,进行持续集成和部署,具体可以参考DevOps文档相关内容;
  • 场景2:非现场开发的情况,则需要使用离线部署到方式,本文档下面将详细阐述该部署方式。

离线部署方案

本方案以HOS门户系统后端服务为示例,简单讲解离线自动部署的方案,示例中相关文件、脚本内容等只保留必要的内容,需要根据实际项目进行修改。

1. 标准方式部署

1.1 准备应用服务文件

即打好的Jar包(我们采用内置tomcat),可以通过持续集成平台打包或手动打包,HOS门户系统Jar包为:hos-portal-system.jar

1.2 准备服务启动脚本

#!/bin/bash
#startup.sh
#安装依赖服务,比如mysql,详细步骤参考运维文档的Mysql安装
rpm -ivh mysql*.rpm
...
#启动应用服务
nohup java -jar hos-portal.jar &

1.3 准备打包脚本

#!/bin/bash
#build.sh
#准备好mysql、应用服务相关文件
#压缩打包
zip -r hos.zip ./*

1.4 打包

#执行打包脚本
sh build.sh

1.5 拷贝到离线环境并执行

#首先将打好的安装包通过U盘等方式拷贝到客户内网服务器
#解压安装包
unzip hos.zip
#修改应用服务的配置文件内网,将数据库等配置信息替换为实际配置
#执行启动脚本
sh startup.sh

2. 容器方式部署

示例使用docker/docker-compose方式离线自动部署应用。

2.1 准备应用服务文件

即打好的Jar包(我们采用内置tomcat),可以通过持续集成平台打包或手动打包,HOS门户系统Jar包为:hos-portal-system.jar

2.2 准备容器配置文件

  • Dockerfile:用于生成容器镜像
#基于镜像
FROM openjdk:8
#设置工作目录
WORKDIR /app
#将war包添加至工作目录并解压
COPY hos-portal-system.jar /app
#对外声明暴露端口
EXPOSE 8080
#输出一个构建成功的字符
CMD ["java","-jar","hos-portal-system.jar"]
  • docker-compose.yml:用于启动容器
version: "3"
services:
 hos-portal:
   image: hos-portal:1.0
   container_name: hos-portal
   ports:
     - 8080:8080
 hos-mysql:
   image: mysql:8.0.34
   container_name: hos-mysql
   ports:
     - 3360:3306
   environment:
     MYSQL_ROOT_PASSWORD: "123456"
   volumes:
     - ./data:/var/lib/mysql

2.3 准备服务启动脚本

#!/bin/bash
#startup.sh
#安装docker:事先准备好docker/docker-compose离线安装包、服务配置文件
tar zxf docker-20.10.23.tgz
cp docker/* docker-compose /usr/bin/
chmod +x docker-compose
cp docker.socket docker.service containerd.service /etc/systemd/system/
systemctl daemon-reload
systemctl start docker
systemctl enable docker

#导入镜像文件
docker load < hos-portal.tar
docker load < hos-mysql.tar

#启动服务
docker-compose up -d

2.4 准备打包脚本

#!/bin/bash
#build.sh
#生成镜像,进入Dockerfile目录
docker build -t hos-portal:1.0 .
#镜像导出tar包
docker save -o hos-portal.tar hos-portal:1.0
docker save -o hos-mysql.tar mysql:8.0.34
#创建目录
mkdir hos
cp hos-portal.tar hos/
cp hos-mysql.tar hos/
cp startup.sh hos/
cp docker-compose.yml hos/

#压缩目录
cd hos/
zip -r hos.zip ./*

2.5 打包

#执行打包脚本
sh build.sh

2.6 拷贝到离线环境并执行

#首先将打好的安装包通过U盘等方式拷贝到客户内网服务器
#解压安装包
unzip hos.zip
#修改应用服务的配置文件内网,将数据库等配置信息替换为实际配置
#执行启动脚本
sh startup.sh