离线部署方案
离线部署方案
背景
医院等客户的信息系统通常运行于内网环境,公司内部或云上的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