# localbox部署 `chatapp3` 的线上部署已经迁移到 `hy-app-monitor`。这个目录只保留本地部署、本地构建、本地检查和本地联调能力。 ## 目录结构 ```text localbox部署/ ├── deploy.sh # 统一入口 ├── start_local_services.sh # 启动本地环境 ├── build_local_backend.sh # 构建本地 Java 后端 ├── restart_local_service.sh # 重启单个服务 ├── check_local_services.sh # 检查本地服务状态 ├── publish_local_nacos_configs.sh ├── local-services.compose.yml # 本地完整环境 compose ├── local-infra.compose.yml # 轻量基础设施 compose ├── local-infra/ # MySQL / RocketMQ 初始化文件 ├── .env.local # 本地环境变量 └── var/ # 本地缓存和构建产物(已忽略) ``` ## 前置条件 - macOS 已安装 Docker Desktop - 如需重新编译 Java,当前终端使用 `JDK 17` - 工作区中存在 `chatapp3-java` 和 `chatapp3-golang` - 目录根部 `.env.local` 已准备好本地配置 脚本会自动识别现有的 `../../chatapp3/chatapp3-java` 和 `../../chatapp3/chatapp3-golang`。如果本地目录不同,可以通过 `LIKEI_WORKSPACE_DIR`、`LIKEI_LOCAL_JAVA_REPO_DIR` 或 `LIKEI_LOCAL_GOLANG_REPO_DIR` 覆盖。 ## 快速开始 推荐统一从 `hy-app-monitor/localbox部署` 目录执行: ```bash ./deploy.sh start ``` `start` 默认只在本地 Java jar 缺失时构建。已有 jar 时会直接启动本地环境。 如果想强制重新构建再启动: ```bash ./deploy.sh start --rebuild ``` 如果只想启动、不检查和构建本地 Java jar: ```bash ./deploy.sh start --skip-build ``` 如果只起基础设施,不起业务服务: ```bash ./deploy.sh start --infra-only ``` 如果只想单独起轻量基础设施(MySQL + Redis): ```bash docker compose --env-file ./.env.local -f ./local-infra.compose.yml up -d ``` ## 常用命令 重新构建全部 Java 服务: ```bash ./deploy.sh build ``` 只构建指定服务: ```bash ./deploy.sh build auth live other ``` 检查全部本地服务状态: ```bash ./deploy.sh check ``` 重启单个服务: ```bash ./deploy.sh restart live ./deploy.sh restart golang ./deploy.sh restart mysql ./deploy.sh restart rocketmq ``` 重新构建并重启某个 Java 服务: ```bash ./deploy.sh restart --rebuild auth ./deploy.sh restart --rebuild live ``` 重新发布本地 Nacos 配置: ```bash ./deploy.sh publish-nacos ``` ## 启动流程 默认启动流程如下: 1. 安装 `chatapp3-java/maven_private` 私有 Maven 包到本地 Maven 仓库。 2. 本地 Java jar 缺失或显式传入 `--rebuild` 时,使用 `local` profile 构建本地 Java jar,默认 `JAVA_MAVEN_THREADS=1C` 开启 Maven reactor 并行。 3. 启动本地 MySQL、Redis、Mongo、Nacos、Zookeeper。 4. 当 `LIKEI_ROCKETMQ_LOCAL_DISABLE=false` 时,额外启动本地 RocketMQ。 5. 并发等待基础设施就绪后,发布本地 Nacos 配置。 6. 启动全部 Java 服务和 `chatapp3-golang`,并发等待端口就绪。 脚本会优先复用当前可用的 Docker Desktop daemon;如果 Docker Desktop 还没起来,会尝试自动拉起。 ## RocketMQ 开关 本地幸运礼物全链路默认可以启用 RocketMQ。开关在目录根部 `.env.local`: ```bash LIKEI_ROCKETMQ_LOCAL_DISABLE=false LIKEI_ROCKETMQ_ENDPOINT=rocketmq-proxy:8081 ``` 如果只想先把 `other` 跑起来、不走 MQ: ```bash LIKEI_ROCKETMQ_LOCAL_DISABLE=true ``` 脚本会自动给 `other` 补上 `RocketMQAutoConfiguration` 的排除参数。 ## 常用排查 查看 compose 状态: ```bash docker compose --env-file ./.env.local -f ./local-services.compose.yml ps ``` 查看服务日志: ```bash docker compose --env-file ./.env.local -f ./local-services.compose.yml logs -f live docker compose --env-file ./.env.local -f ./local-services.compose.yml logs -f golang ``` ## 本地端口 - `gateway`: `1100` - `auth`: `1000` - `wallet`: `2000` - `other`: `2400` - `live`: `2500` - `order`: `2600` - `console`: `2700` - `external`: `3000` - `visual-monitor`: `8000` - `scheduling`: `2800` - `golang`: `2900` - `nacos`: `8848` - `rocketmq namesrv`: `19876` - `rocketmq proxy http`: `18080` - `rocketmq proxy grpc`: `18081` - `mysql`: `13306` - `redis`: `16379` - `mongo`: `27018`