跳到主要内容

部署 API

微服务 API 支持 Docker Compose 和源码脚本两种部署方式。生产环境推荐使用 Docker Compose;源码脚本适合开发、测试以及需要直接调试 JAR 的环境。

部署前请先完成“部署中间件”,并确认 MySQL、Redis、RabbitMQ、Elasticsearch、Nacos、Seata、Sentinel 和 XXL-JOB 均正常运行。

一、检查 Nacos 配置​

登录 Nacos 控制台,确认当前环境所需配置已经导入。重点检查以下内容:

  • MySQL、Redis、RabbitMQ 和 Elasticsearch 的连接地址、账号及密码。
  • Seata 服务地址和事务分组。
  • Sentinel Dashboard 地址。
  • XXL-JOB 地址和访问令牌。
  • 各业务服务配置与当前部署环境一致。

配置中的主机地址必须能够从 API 的实际运行环境访问。Docker 部署时应使用 Compose 网络中的服务名称,不要填写 127.0.0.1。

二、Docker Compose 部署​

1. 获取部署工程​

cd /opt
git clone https://codeup.aliyun.com/shoptnt/product/bbc/microservice/deploy.git --branch 8.0 deploy
cd deploy

私有仓库需要当前服务器具有对应代码读取权限。不要把代码仓库账号、密码或访问令牌写入部署文档和脚本。

2. 登录 Harbor​

业务镜像存放在私有 Harbor。首次部署或登录凭据失效时执行:

bash deploy.sh login

按照提示输入 Harbor 账号和密码。凭据由 Docker 保存在当前部署用户的凭据存储中,不写入部署仓库。

3. 启动 API​

中间件已经启动后,执行:

bash deploy.sh service

脚本会拉取并启动当前产品的全部微服务。网关默认对外提供 8001 端口,其他业务服务仅通过 Docker 网络通信,不需要单独暴露端口。

4. 验证服务​

查看容器状态:

bash deploy.sh status

查看网关日志:

bash deploy.sh logs service gateway-service

然后登录 Nacos 控制台,在“服务管理 → 服务列表”中确认所有业务服务均已注册。至少应包含:

system-service
member-service
goods-service
trade-service
statistics-service
distribution-service
payment-service
promotion-service
consumer
gateway-service

如有服务未启动,先查看该服务日志,不要只根据网关是否能够访问判断全部服务状态。

5. 常用操作​

# 打开交互式部署菜单
bash deploy.sh

# 查看全部状态
bash deploy.sh status

# 查看指定服务日志
bash deploy.sh logs service goods-service

# 停止全部容器,保留数据目录
bash deploy.sh down

更新镜像时,运行 bash deploy.sh,进入 Service 管理,选择“拉取镜像并重启全部服务”或指定服务。这样可以明确控制本次更新范围。

三、源码脚本部署​

源码方式要求服务器已经安装 JDK 21、Maven、Git,并且能够访问 Maven 依赖仓库和 Nacos。未安装时,请先完成基础环境配置。

1. 获取源码​

mkdir -p /opt/source
cd /opt/source
git clone https://codeup.aliyun.com/shoptnt/product/bbc/microservice/microservice.git --branch 8.0 microservice
cd microservice

2. 配置并首次启动​

start.sh 默认把运行文件放到 /opt/server。先设置 Nacos 地址和账号,再以隐藏输入方式读取密码,避免密码出现在 Shell 历史记录中:

export NACOS_ADDR=192.168.1.10:8848
export NACOS_USERNAME=nacos
read -rsp 'Nacos password: ' NACOS_PASSWORD && echo
export NACOS_PASSWORD

bash start.sh install
unset NACOS_PASSWORD

请将示例 Nacos 地址替换为实际地址。首次执行会编译全部模块、复制可执行 JAR,并按依赖顺序启动全部微服务。

3. 运维命令​

# 打开交互式运维菜单
bash start.sh

# 查看全部服务状态
bash start.sh status

# 重启一个或多个服务
bash start.sh restart goods-service trade-service

# 查看指定服务日志
bash start.sh logs gateway-service

# 停止全部服务
bash start.sh stop

修改 Nacos 中支持动态刷新的业务配置后通常不需要重启;数据源、端口、注册中心地址等启动期配置发生变化时,应重启受影响的服务。

四、部署检查​

部署完成后至少检查:

  1. 所有微服务进程或容器均处于运行状态。
  2. 所有服务均已注册到正确的 Nacos namespace 和 group。
  3. 网关可以访问,且没有持续出现 Redis、数据库、Seata 或 RabbitMQ 连接异常。
  4. Sentinel Dashboard 能看到业务服务和请求资源。
  5. 服务日志中没有持续重试、认证失败或配置缺失错误。

生产环境不要继续使用示例密码。MySQL、Redis、RabbitMQ、Nacos、Seata、XXL-JOB 和 Harbor 的凭据都应在交付时单独设置并妥善保存。