You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
virtual-patient/docker/生产环境服务部署文档.md

272 lines
9.0 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 虚拟病人服务部署文档
## 需要部署的服务列表
1. 问诊系统
2. 后端管理系统
3. nginx前端服务
4. rasa对话服务
5. mysql数据库
6. paddlespeech语音文字转换服务
7. minio对象存储服务
8. redis服务
# 准备网络 如果是使用network模式则非必要
```shell
# 查看现有网络
docker network list
# 创建新网络
docker network create virtual-patient-network
```
## nacos服务部署
- 端口号8848
- 首次部署使用dockerfile的形式,后期更新直接docker restart就可以了
### 首次部署
~~~shell
# 拉取镜像
docker pull nacos/nacos-server:v1.4.5
# 运行容器
docker run -d -p 8848:8848 -e MODE=standalone -e NACOS_AUTH_IDENTITY_KEY=nacos -e NACOS_AUTH_IDENTITY_VALUE=nacos -v /data/nacos/:/home/nacos/data --name nacos --restart=always nacos/nacos-server:v1.4.5
# **启用网络环境服务,生产环境请使用**
# 生产环境端口号为18498
# 很奇怪,这里配置密码不生效,用nacos进去之后再手动改
docker run -d -p 18498:8848 -e MODE=standalone -e NACOS_AUTH_IDENTITY_KEY=nacos -e NACOS_AUTH_IDENTITY_VALUE='#Yaxin0504' -v /data/nacos/:/home/nacos/data --name nacos --network virtual-patient-network --restart=always nacos/nacos-server:v1.4.5
# 验证容器运行
docker ps | grep nacos
# 查看日志是否正常
docker logs -f nacos
~~~
## mysql数据库
- 启动mysql
~~~shell
# 首先创建本地文件夹
mkdir /var/lib/mysql
# 拉取镜像
docker pull mysql:5.7
# 启动服务
docker run -d -p 3306:3306 -v /var/lib/mysql:/var/lib/mysql --name vp-mysql -e MYSQL_ROOT_PASSWORD='#Yaxin0504' mysql:5.7
# **启用网络环境服务,生产环境请使用**
# 生产环境端口号为37088
docker run -d -p 37088:3306 -v /var/lib/mysql:/var/lib/mysql --name virtual-patient-mysql -e MYSQL_ROOT_PASSWORD='#Yaxin0504' --network virtual-patient-network mysql:5.7
~~~
- 执行数据库初始化脚本**建议使用可视化工具初始化数据**
```shell
docker cp mysql/virtual_patient_v2.0.0.sql virtual-patient-mysql:/home/virtual_patient_v2.0.0.sql
docker exec -it vp-mysql /bin/bash
mysql -uroot -p123456;
create database virtual_patient;
use virtual_patient;
source /home/virtual_patient_v2.0.0.sql;
```
## paddlespeech语音文字转换服务
~~~shell
# 进入paddlespeech文件夹依次执行命令
# 加载镜像
docker load -i virtual-patient-paddlespeech.tar.gz
# 验证镜像是否存在
docker images | grep virtual-patient-paddlespeech
# 运行容器
docker run --name virtual-patient-paddlespeech -p 8090:8090 -d virtual-patient-paddlespeech:1.0.0
# **启用网络环境服务,生产环境请使用**
docker run --name virtual-patient-paddlespeech -p 8090:8090 -d --network virtual-patient-network virtual-patient-paddlespeech:1.0.0
# 验证容器运行
docker ps | grep virtual-patient-paddlespeech
# 查看日志是否正常
docker logs -f virtual-patient-paddlespeech
~~~
## MINIO对象存储服务
~~~shell
# 首先创建文件夹
mkdir /data/vp/minio/data
# 拉最新版本
# docker pull minio/minio
# 导入镜像
docker load -i minio/virtual-patient-minio.tar.gz
# 启动
docker run -it --name minio -p 9002:9000 -p 9001:9001 -d \
-v /data/vp/minio/data:/data \
-e 'MINIO_ROOT_USER=admin' \
-e 'MINIO_ROOT_PASSWORD=12345678' \
virtual-patient-minio:1.0.0 server /data --console-address ":9001"
# **启用网络环境服务,生产环境请使用**
docker run -it --name virtual-patient-minio -p 9002:9000 -p 9001:9001 -d \
-v /data/minio:/data \
-e 'MINIO_ROOT_USER=admin' \
-e 'MINIO_ROOT_PASSWORD=12345678' \
--network virtual-patient-network \
virtual-patient-minio:1.0.0 server /data --console-address ":9001"
# 将文件mv到对应的文件夹
mv virtual-patient-bucket-prod /data/vp/minio/data
~~~
## redis服务
~~~shell
# 进入redis文件目录下
# 构建redis镜像
docker build -t virtual-patient-redis:1.0.0 .
# 查看镜像是否正确构建
docker images | grep virtual-patient-redis
# 启动redis容器
docker run --name virtual-patient-redis -p 6379:6379 -v /data/vp/redis/data:/data -d virtual-patient-redis:1.0.0
# **启用网络环境服务,生产环境请使用**
docker run --name virtual-patient-redis -p 6379:6379 -v /data/vp/redis/data:/data --network virtual-patient-network -d virtual-patient-redis:1.0.0
# 查看容器运行
docker ps | grep virtual-patient-redis
~~~
## RASA对话服务
### 首次部署
- 首次部署使用dockerfile的形式,后期更新直接docker restart就可以了
- 将代码包dockerfile中的virtual-patient-rasa-1.0-SNAPSHOT.jar拷贝到路径/data/vp下
~~~shell
# 加载镜像
docker load -i virtual-patient-rasa-manager.tar.gz
# 验证镜像是否存在
docker images | grep virtual-patient-rasa-manager
# 运行容器
docker run --name virtual-patient-rasa-manager -p 8990:8890 -d virtual-patient-rasa-manager:1.0.0
# **启用网络环境服务,生产环境请使用**
docker run --name virtual-patient-rasa-manager -p 8990:8890 -v /data/vp:/data/vp --network virtual-patient-network -d virtual-patient-rasa-manager:1.0.0 --spring.profiles.active=prod
# 验证容器运行
docker ps | grep virtual-patient-rasa-manager
# 查看日志是否正常
docker logs -f virtual-patient-rasa-manager
~~~
### 服务更新
- 将代码包virtual-patient-rasa-manage-1.0-SNAPSHOT.jar拷贝到路径/data/vp下
- 重启容器
~~~shell
docker restart virtual-patient-rasa-manage
~~~
## 问诊服务部署
### 首次部署
- 端口号8899
- 首次部署使用dockerfile的形式,后期更新直接docker restart就可以了
- 将代码包dockerfile中的virtual-patient-web-1.0-SNAPSHOT.jar拷贝到路径/data/vp下
~~~shell
# 进入virtual-patient-web文件夹依次执行命令
# 构建镜像
docker build -t virtual-patient-web:1.0.0 .
# 验证镜像是否存在
docker images | grep virtual-patient-web
# 运行容器
docker run --name virtual-patient-web -p 8899:8899 -d virtual-patient-web
# **启用网络环境服务,生产环境请使用**
docker run --name virtual-patient-web -p 8899:8899 -v /data/vp:/data/vp --network virtual-patient-network -d virtual-patient-web:1.0.0 --spring.profiles.active=prod
# 验证容器运行
docker ps | grep virtual-patient-web
# 查看日志是否正常
docker logs -f virtual-patient-web
~~~
### 服务更新
- 将代码包virtual-patient-manage-1.0-SNAPSHOT.jar拷贝到路径/data/vp下
- 重启容器
~~~shell
docker restart virtual-patient-web
~~~
## 后端管理系统部署
- 端口号8891
- 首次部署使用dockerfile的形式,后期更新直接docker restart就可以了
- 将代码包virtual-patient-manage-1.0-SNAPSHOT.jar拷贝到路径/data/vp下
### 首次部署
~~~shell
# 进入virtual-patient-manage文件夹依次执行命令
# 构建镜像
docker build -t virtual-patient-manage:1.0.0 .
# 验证镜像是否存在
docker images | grep virtual-patient-manage
# 运行容器
docker run --name virtual-patient-manage -p 8891:8891 -d virtual-patient-manage:1.0.0
# **启用网络环境服务,生产环境请使用**
docker run --name virtual-patient-manage -p 8891:8891 -v /data/vp:/data/vp --network virtual-patient-network -d virtual-patient-manage:1.0.0 --spring.profiles.active=prod
# 验证容器运行
docker ps | grep virtual-patient-manage
# 查看日志是否正常
docker logs -f virtual-patient-manage
~~~
### 服务更新
- 将代码包virtual-patient-manage-1.0-SNAPSHOT.jar拷贝到路径/data/vp下
- 重启容器
~~~shell
docker restart virtual-patient-manage
~~~
## Nginx前端服务
~~~shell
# 进入nginx文件夹依次执行命令
# 修改 conf.d文件目录下servers.conf.template文件中的$UPSTREAM_WEB_SERVERS$UPSTREAM_MANAGE_SERVERS
# 构建镜像
docker build -t virtual-patient-nginx:1.0.0 .
# 验证镜像是否存在
docker images | grep virtual-patient-nginx
# 运行容器
docker run --name virtual-patient-nginx -p 443:443 -d -e UPSTREAM_WEB_SERVERS={ip}:{port} -e UPSTREAM_MANAGE_SERVERS={ip}:{port} virtual-patient-nginx:1.0.0
# UPSTREAM_WEB_SERVERS:虚拟病人问诊系统服务的ip:port
# UPSTREAM_MANAGE_SERVERS:虚拟病人后端管理系统服务的ip:port
# **启用网络环境服务,生产环境请使用 不放80,只放https的443**
docker run --name virtual-patient-nginx -p 443:443 --network virtual-patient-network -v /data/vp/dist:/usr/share/nginx/html/dist -d -e UPSTREAM_WEB_SERVERS=virtual-patient-web:8899 -e UPSTREAM_MANAGE_SERVERS=virtual-patient-manage:8891 virtual-patient-nginx:1.0.0
# 验证容器运行
docker ps
# 查看日志是否正常
docker logs -f virtual-patient-nginx
~~~
### 服务更新
- 将前端代码包dist文件夹拷贝到路径/data/vp/下
- 重启容器
~~~shell
docker restart virtual-patient-nginx
~~~