1. Docker 部署
推荐服务器配置
以下配置用于单机部署全部基础服务和 7 个后端服务。
| 项目 | 推荐配置 |
|---|---|
| 操作系统 | Linux 64 位,Debian / Ubuntu |
| CPU | 4 核及以上 |
| 内存 | 16 GB 及以上 |
| 磁盘 | 至少 40 GB 可用空间,数据量增长时扩容 |
| 网络 | 可访问 Docker 镜像仓库和 Maven Central |
| 部署工具 | Docker Engine、Buildx、Compose v2、Python 3、curl |
业务服务在容器内使用 Java 21,宿主机无需安装 Java、Maven。完成首次准备后,只需执行:
bash builds/script/docker/deploy.sh deploy一、目录说明
所有命令在 mesh-platform 后端项目根目录执行,源码提前放到服务器,脚本不拉取或切换 Git 分支。
mesh-platform/
├── pom.xml
├── supports/ # 网关、认证、用户和流程服务源码
├── services/ # APP、CRM、AI 服务源码
└── builds/
├── data/
│ ├── sql/ # 六份业务数据库初始化脚本
│ └── nacos/
│ └── nacos_config.zip
├── web/ # 前端产物,包含 index.html
├── server/ # init 自动复制的 Docker 构建用 JAR
└── script/docker/
├── deploy.sh
├── docker-compose.yml
├── server/Dockerfile
├── elasticsearch/Dockerfile
└── volumes/ # 启动后生成的持久化目录| 路径 | 准备方式 |
|---|---|
builds/data/sql/ | 随项目提供 mesh_ai、mesh_app、mesh_bpm、mesh_crm、mesh_uaa、mesh_upms 六份 SQL |
builds/data/nacos/nacos_config.zip | 随项目提供,脚本自动导入 |
builds/web/ | 放入前端生产构建产物,接口前缀使用 /pro-api |
builds/server/ | 脚本自动生成,无需手动复制 JAR |
builds/script/docker/volumes/ | 持久化数据和生成的 Nginx 配置,更新时保留 |
| ES 数据卷 | 由 Compose 管理,更新时保留 |
若缺少前端产物,在前端仓库执行 pnpm install --frozen-lockfile && pnpm run build:prod,将 dist/ 里面的文件复制到后端 builds/web/。
二、首次准备
1. 安装工具
按 Docker 官方安装指南 安装 Docker Engine、Buildx 和 Compose v2,确保当前用户能够执行 Docker 命令。Debian / Ubuntu 补充安装:
sudo apt-get update
sudo apt-get install -y python3 curl
docker info >/dev/null && docker compose version2. 设置 ES 内核参数
printf 'vm.max_map_count=262144\n' | sudo tee /etc/sysctl.d/99-mesh-es.conf
sudo sysctl --system3. 核对 Compose 配置
直接编辑 builds/script/docker/docker-compose.yml,不需要在终端输入 read、export 或额外指定 MCP 地址。
| 配置内容 | 修改位置 | 要求 |
|---|---|---|
| MySQL 密码 | mysql 的 MYSQL_ROOT_PASSWORD、各业务服务的 MESH_DATABASE_PASSWORD | 两处使用相同密码 |
| Redis 密码 | redis 的 REDIS_PASSWORD、各业务服务的 SPRING_DATA_REDIS_PASSWORD | 两处使用相同密码 |
| 前端端口 | nginx-ui 的 ports | 左侧为服务器访问端口,右侧与 Nginx 监听端口一致 |
| 网络 | networks.mesh-network.ipam 及各服务静态 IP | 默认 172.22.0.0/24,不要与已有网络冲突 |
| MCP 地址 | 由部署脚本导入 Nacos 时处理 | 使用 CRM 容器服务名,端口与实际 CRM 配置一致 |
Compose 现有密码采用带默认值的表达式。首次部署时,可将所有 ${MYSQL_PASSWORD:-root} 替换为自己的 MySQL 密码,将所有 ${REDIS_PASSWORD:-123456} 替换为自己的 Redis 密码,保留各字段原有的 YAML 结构。这样密码直接由配置文件提供。已有数据库修改密码时,需要同时修改数据库账户密码,不能只改 Compose。
4. 核对端口
业务服务的 HTTP、WebSocket 端口统一在 Nacos 中配置,可按部署环境调整,以实际发布的配置为准。Docker 部署还需同步核对:
- Compose 的
ports使用“服务器端口:容器端口”,容器端口与服务实际监听端口一致。 - 业务镜像的
build.args.APP_PORT同时用于 Java 启动参数和健康检查,会覆盖 Nacos 中的 HTTP 端口;调整时必须一起修改并重新构建业务镜像。 - deploy.sh 中的 Nginx 代理模板和 MCP 配置导入地址,应与网关、CRM 的实际端口一致。
MySQL、Redis、ES、Nacos 等基础服务的监听和映射端口在对应服务配置及 Compose 中设置,业务连接地址同步更新。防火墙按实际前端访问端口放行,基础服务仅向可信内网开放。
默认 Nacos 未开启鉴权,数据库和配置中心不要直接对公网开放。同机已有部署时,还需检查固定容器名称是否冲突。
三、一键部署
bash builds/script/docker/deploy.sh deploy执行顺序:编译 JAR → 准备 SQL、Nginx 和 JAR → 启动基础服务 → 导入 Nacos 配置 → 启动后端 → 启动前端。
基础服务版本为 MySQL 8.0.32、Redis 7.2.4、Elasticsearch 9.5.1(含 analysis-icu)、Nacos 2.3.2。Compose 根据健康检查等待依赖就绪,CRM 在 APP 和 ES 就绪后初始化索引。
完成后访问 http://服务器IP/。修改过前端映射端口时,在地址后加对应端口。
四、检查部署结果
以下访问地址仅为示例,请按实际前端、ES 映射端口调整。
docker compose -p mesh-platform -f builds/script/docker/docker-compose.yml ps
curl -fsS http://127.0.0.1/pro-api/actuator/health| 检查项 | 预期结果 |
|---|---|
| 前端 | 页面正常加载 |
| 7 个后端容器 | 状态为 healthy |
| 网关健康接口 | 返回 UP |
| ES 索引 | 当前发布数据初始化为 17 个索引,并包含字段映射 |
查看 CRM 日志与 ES 索引:
docker compose -p mesh-platform -f builds/script/docker/docker-compose.yml logs --tail=100 mesh-crm
curl -fsS 'http://127.0.0.1:9200/_cat/indices?v'五、更新与常用操作
统一使用 bash builds/script/docker/deploy.sh 参数。
| 参数 | 作用 |
|---|---|
deploy | 编译并部署;更新源码后再次执行 |
init | 已有 Maven 产物时,准备配置及 JAR、启动基础服务并导入 Nacos |
server | 构建业务镜像并启动前后端 |
nginx | 启动前端 |
stop | 停止服务,保留数据 |
rm | 删除已停止的容器,保留持久化数据 |
MySQL 只在空数据目录首次启动时导入 SQL。更新时保留持久化目录和 ES 数据卷;旧版本 ES 数据须按支持的升级路径迁移。init / deploy 会重新导入 Nacos 配置,请先保留控制台修改的配置。任务中心默认不启用,需要时另行准备任务库并开启对应配置。
六、常见问题
| 现象 | 排查位置 |
|---|---|
| 镜像或依赖下载失败 | 检查镜像仓库、Maven Central 网络访问 |
| Maven 镜像下载失败,但本机已安装 Java 21 和 Maven | 将 deploy.sh 中 BUILD_LOCAL 的默认值由 0 改为 1,仍使用相同 deploy 命令 |
| 前端 502 | 检查网关实际监听端口与 Nginx 代理是否一致 |
| 数据库连接失败 | 核对 Compose 中基础服务、业务服务的密码是否一致 |
| Nacos 配置丢失 | 检查配置包是否存在,命名空间 ID 是否为 pro |
| ES 无法启动 | 检查内存、内核参数、插件和数据版本兼容性 |
下一篇:2. Shell 部署。
