# 虚拟病人服务部署文档 ## 需要部署的服务列表 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 ``` ## 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=123456 mysql:5.7 # **启用网络环境服务,生产环境请使用** docker run -d -p 3306:3306 -v /var/lib/mysql:/var/lib/mysql --name virtual-patient-mysql -e MYSQL_ROOT_PASSWORD=123456 --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 # **启用网络环境服务,生产环境请使用** docker run --name virtual-patient-manage -p 8891:8891 -v /data/vp:/data/vp --network virtual-patient-network -d virtual-patient-manage --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 ~~~