diff --git a/docker-compose/.env b/docker-compose/.env new file mode 100644 index 00000000..97dab57d --- /dev/null +++ b/docker-compose/.env @@ -0,0 +1,46 @@ +# 程序运行时使用的目录 +TIMEZONE=Asia/Shanghai +RUN_DATA_DIR=../data +SPRING_PROFILES_ACTIVE=prod + +#NACOS 配置 +NACOS_PORT_HTTP=18498 + +# mysql数据库配置 +MYSQL_PASSWORD=vp@sst0909@mysql +MYSQL_PORT=13316 + +# redis配置 +REDIS_PASSWORD=vp-sst0909-admin +REDIS_PORT_HTTP=16399 + +# minio 配置 +MINIO_USER=admin +MINIO_PASSWORD=vp@sst0909@minio +MINIO_PORT=19000 +MINIO_CONSOLE_PORT=19001 + +# paddle-speech 配置 +PADDLE_SPEECH_PORT=18090 + +# 智能问答配置 +VP_QA_PORT=8711 + +#nebula 配置 +NEBULA_GRAPH_PORT=9669 + +#nacos端口 +NACOS_NAMESPACE=prod + +# 后端服务暴露端口 +PATIENT_WEB_PORT=8899 +PATIENT_NACOS_SERVER_IP=virtual-patient-nacos +MANAGE_WEB_PORT=8891 +GRAPH_WEB_PORT=8892 + + +# nginx 代理配置 +UPSTREAM_WEB_SERVERS=virtual-patient-web:8899 +UPSTREAM_MANAGE_SERVERS=virtual-patient-manage:8891 +UPSTREAM_GRAPH_SERVERS=virtual-patient-graph:8892 +NGINX_HTTPS_PORT=443 \ No newline at end of file diff --git a/docker-compose/README.md b/docker-compose/README.md new file mode 100644 index 00000000..29d91350 --- /dev/null +++ b/docker-compose/README.md @@ -0,0 +1,70 @@ +# 虚拟病人服务部署文档 + + +## 镜像列表 +| 镜像名 | 镜像版本 | 镜像文件 | 描述 | +|------------------------|------------------------------|-------------------------------------|------------------------------------| +| virtual-patient-nginx | 1.1.0 | images/virtual-patient-nginx.tar.gz |前端nginx服务 | +| virtual-patient-web | 2.0.0 | images/virtual-patient-web.tar.gz | 虚拟病人前台系统 | +| virtual-patient-manage | 2.0.0 | images/virtual-patient-manage.tar.gz |虚拟病人后端管理系统 | +| virtual-patient-graph | 2.0.0 | images/virtual-patient-graph.tar.gz |虚拟病人Graph知识图谱系统 | +| nacos | v2.3.2 | images/vp-nacos.tar.gz |nacos配置中心 | +| mysql | 5.7 | images/vp-mysql.tar.gz |mysql数据库 | +| redis | 7.2.0-v10 | images/vp-redis.tar.gz |redis数据库 | +| minio | RELEASE.2023-10-25T06-33-25Z | images/vp-minio.tar.gz |minio对象存储服务 | +| paddlespeech-dev | 1.1.0 | images/vp-paddlespeech.tar.gz |语义识别服务 | +| nebula | v3.6.0 | images/nebula.v3.6.0.tar.gz |nebula图谱引擎 | +| ollama | 无版本要求 | 复用现场 |语义识别服务(使用llama3-chinese:8b模型)使用现场服务 | +| ~~sadtalker_image~~ | v1 | 无 |数字人形象生成服务 | + + +## 加载镜像 +> 根据现场情况确定镜像是否存在,如果存在可以不进行加载。 +```shell + docker load -i xxxx (镜像包文件) +``` + + +# 修改配置文件(非必要) +> 可通过修改docker-compose目录下的.env文件进行修改配置。配置修改后请同步修改nacos中的配置文件。 + + +## 启动服务 +- 进入docker-compose目录下执行命令 +```shell +docker compose up -d +``` + +## 修改nacos中ollama配置 +- 登录nacos控制台,点击左侧菜单栏配置列表,点击编辑配置,修改配置文件中的 ollama现场的环境。 +- 需要修改的配置文件为:vvirtual-patient-web.yml、virtual-patient-manage.yml + +## 重新启动服务 +- 进入docker-compose目录下执行命令 +```shell +docker compose restart +``` + + +# 其他命令 + +## 查看运行状态 +- 进入docker-compose目录下执行命令 +```shell +docker compose ps +``` + +## 停止docker-compose +- 进入docker-compose目录下执行命令 +```shell +docker compose stop +``` + +## 卸载服务(会删除容器) +- 进入docker-compose目录下执行命令 +```shell +docker compose down +``` + +# 访问服务 +- 访问https://IP:{NGINX_HTTPS_PORT}/#/login 默认管理账号密码:vp@admin#/aSb3QrcqemdOCXf 用户账号需要自行注册 \ No newline at end of file diff --git a/docker-compose/docker-compose-base.yml b/docker-compose/docker-compose-base.yml new file mode 100644 index 00000000..b923a8b7 --- /dev/null +++ b/docker-compose/docker-compose-base.yml @@ -0,0 +1,90 @@ +services: + mysql: + image: mysql:5.7 + container_name: vp-mysql-compose + environment: + - MYSQL_ROOT_PASSWORD=${MYSQL_PASSWORD} + - TZ=${TIMEZONE} + command: + --max_connections=100 + --character-set-server=utf8mb4 + --collation-server=utf8mb4_general_ci + --default-authentication-plugin=mysql_native_password + --tls_version="TLSv1.2,TLSv1.3" + ports: + - ${MYSQL_PORT}:3306 + volumes: + - ${RUN_DATA_DIR}/mysql/data:/var/lib/mysql + - ${RUN_DATA_DIR}/initdb/:/docker-entrypoint-initdb.d/ + networks: + - virtual-patient-network + healthcheck: + test: ["CMD", "mysqladmin" ,"ping", "-uroot", "-p${MYSQL_PASSWORD}"] + interval: 10s + timeout: 10s + retries: 3 + start_period: 40s + restart: always + + minio: + image: quay.io/minio/minio:RELEASE.2023-10-25T06-33-25Z + container_name: vp-minio-compose + command: server --console-address ":9001" /data + ports: + - ${MINIO_PORT}:9000 + - ${MINIO_CONSOLE_PORT}:9001 + environment: + - MINIO_ROOT_USER=${MINIO_USER} + - MINIO_ROOT_PASSWORD=${MINIO_PASSWORD} + - TZ=${TIMEZONE} + volumes: + - ${RUN_DATA_DIR}/minio/data:/data + networks: + - virtual-patient-network + restart: always + + redis: + image: redis/redis-stack-server:7.2.0-v10 + container_name: vp-redis-stack-compose + ports: + - ${REDIS_PORT_HTTP}:6379 + environment: + - REDIS_ARGS=--requirepass ${REDIS_PASSWORD} + volumes: + - ${RUN_DATA_DIR}/redis/conf/redis-stack.conf:/etc/redis-stack.conf + networks: + - virtual-patient-network + restart: always + + nacos: + image: nacos/nacos-server:v2.3.2 + container_name: virtual-patient-nacos + ports: + - ${NACOS_PORT_HTTP}:8848 + environment: + - MODE=standalone + volumes: + - ${RUN_DATA_DIR}/nacos/data/:/home/nacos/data + networks: + - virtual-patient-network + restart: always + + paddlespeech: + image: paddlespeech-dev:1.1.0 + container_name: vp-paddlespeech-compose + ports: + - ${PADDLE_SPEECH_PORT}:8090 + command: sh /paddlespeech.sh & + networks: + - virtual-patient-network + restart: always + virtual-patient-qa: + image: virtual-patient-qa:1.0.0 + container_name: vp-qa-compose + ports: + - ${VP_QA_PORT}:8000 + volumes: + - ${RUN_DATA_DIR}/virtual_patient_qa/:/data/vp/virtual_patient_qa/ + networks: + - virtual-patient-network + restart: always \ No newline at end of file diff --git a/docker-compose/docker-compose-nebula.yml b/docker-compose/docker-compose-nebula.yml new file mode 100644 index 00000000..89587014 --- /dev/null +++ b/docker-compose/docker-compose-nebula.yml @@ -0,0 +1,107 @@ +version: '3.4' +services: + metad0: + image: vesoft/nebula-metad:v3.6.0 + container_name: vp-nebula-metad-compose + environment: + USER: root + command: + - --meta_server_addrs=metad0:9559 + - --local_ip=metad0 + - --ws_ip=metad0 + - --port=9559 + - --ws_http_port=19559 + - --data_path=/data/meta + - --log_dir=/logs + - --v=0 + - --minloglevel=0 + healthcheck: + test: ["CMD", "curl", "-sf", "http://metad0:19559/status"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 20s + ports: + - 9559:9559 + - 19559:19559 + - 19560 + volumes: + - ${RUN_DATA_DIR}/nebula/meta0:/data/meta + - ${RUN_DATA_DIR}/nebula/log//meta0:/logs + networks: + - virtual-patient-network + restart: on-failure + cap_add: + - SYS_PTRACE + + storaged0: + image: vesoft/nebula-storaged:v3.6.0 + container_name: vp-nebula-storaged-compose + environment: + USER: root + TZ: "${TIMEZONE}" + command: + - --meta_server_addrs=metad0:9559 + - --local_ip=storaged0 + - --ws_ip=storaged0 + - --port=9779 + - --ws_http_port=19779 + - --data_path=/data/storage + - --log_dir=/logs + - --v=0 + - --minloglevel=0 + depends_on: + - metad0 + healthcheck: + test: ["CMD", "curl", "-sf", "http://storaged0:19779/status"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 20s + ports: + - 9779:9779 + - 19779:19779 + - 19780 + volumes: + - ${RUN_DATA_DIR}/nebula/data/storage0:/data/storage + - ${RUN_DATA_DIR}/nebula/log/storage0:/logs + networks: + - virtual-patient-network + restart: on-failure + cap_add: + - SYS_PTRACE + + graphd: + image: vesoft/nebula-graphd:v3.6.0 + container_name: vp-nebula-graphd-compose + environment: + USER: root + TZ: "${TIMEZONE}" + command: + - --meta_server_addrs=metad0:9559 + - --port=9669 + - --local_ip=graphd + - --ws_ip=graphd + - --ws_http_port=19669 + - --log_dir=/logs + - --v=0 + - --minloglevel=0 + depends_on: + - storaged0 + healthcheck: + test: ["CMD", "curl", "-sf", "http://graphd:19669/status"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 20s + ports: + - 9669:9669 + - 19669:19669 + - 19670 + volumes: + - ${RUN_DATA_DIR}/nebula/log/graph:/logs + networks: + - virtual-patient-network + restart: on-failure + cap_add: + - SYS_PTRACE \ No newline at end of file diff --git a/docker-compose/docker-compose.yml b/docker-compose/docker-compose.yml new file mode 100644 index 00000000..6e2b130c --- /dev/null +++ b/docker-compose/docker-compose.yml @@ -0,0 +1,101 @@ +include: + - path: ./docker-compose-base.yml + - path: ./docker-compose-nebula.yml + env_file: ./.env + +services: + virtual-patient-web: + depends_on: + mysql: + condition: service_started + nacos: + condition: service_started + image: virtual-patient-web:2.0.0 + container_name: virtual-patient-web-compose + ports: + - ${PATIENT_WEB_PORT}:8899 + volumes: + - ${RUN_DATA_DIR}/virtual-patient-web/:/data/vp/ + command: + --spring.profiles.active=${SPRING_PROFILES_ACTIVE} + --spring.cloud.nacos.config.server-addr=virtual-patient-nacos:8848 + --spring.cloud.nacos.config.namespace=${NACOS_NAMESPACE} + --spring.cloud.nacos.discovery.server-addr=virtual-patient-nacos:8848 + --spring.cloud.nacos.discovery.namespace=${NACOS_NAMESPACE} + environment: + - TZ=${TIMEZONE} + networks: + - virtual-patient-network + restart: always + virtual-patient-manage: + depends_on: + mysql: + condition: service_started + nacos: + condition: service_started + image: virtual-patient-manage:2.0.0 + container_name: virtual-patient-manage-compose + ports: + - ${MANAGE_WEB_PORT}:8891 + volumes: + - ${RUN_DATA_DIR}/virtual-patient-manage/:/data/vp/ + command: + --spring.profiles.active=${SPRING_PROFILES_ACTIVE} + --spring.cloud.nacos.config.server-addr=virtual-patient-nacos:8848 + --spring.cloud.nacos.config.namespace=${NACOS_NAMESPACE} + --spring.cloud.nacos.discovery.server-addr=virtual-patient-nacos:8848 + --spring.cloud.nacos.discovery.namespace=${NACOS_NAMESPACE} + environment: + - TZ=${TIMEZONE} + networks: + - virtual-patient-network + restart: always + virtual-patient-graph: + depends_on: + mysql: + condition: service_started + nacos: + condition: service_started + image: virtual-patient-graph:2.0.0 + container_name: virtual-patient-graph-compose + ports: + - ${GRAPH_WEB_PORT}:8892 + volumes: + - ${RUN_DATA_DIR}/virtual-patient-graph/:/data/vp/ + command: + --spring.profiles.active=${SPRING_PROFILES_ACTIVE} + --spring.cloud.nacos.config.server-addr=virtual-patient-nacos:8848 + --spring.cloud.nacos.config.namespace=${NACOS_NAMESPACE} + --spring.cloud.nacos.discovery.server-addr=virtual-patient-nacos:8848 + --spring.cloud.nacos.discovery.namespace=${NACOS_NAMESPACE} + environment: + - TZ=${TIMEZONE} + networks: + - virtual-patient-network + restart: always + virtual-patient-nginx: + depends_on: + virtual-patient-web: + condition: service_started + virtual-patient-manage: + condition: service_started + virtual-patient-graph: + condition: service_started + image: virtual-patient-nginx:1.1.0 + container_name: virtual-patient-nginx-compose + ports: + - ${NGINX_HTTPS_PORT}:443 + volumes: + - ${RUN_DATA_DIR}/html/:/usr/share/nginx/html/ + environment: + - TZ=${TIMEZONE} + - UPSTREAM_WEB_SERVERS=${UPSTREAM_WEB_SERVERS} + - UPSTREAM_MANAGE_SERVERS=${UPSTREAM_MANAGE_SERVERS} + - UPSTREAM_GRAPH_SERVERS=${UPSTREAM_GRAPH_SERVERS} + networks: + - virtual-patient-network + restart: always + +networks: + virtual-patient-network: + driver: bridge \ No newline at end of file