Chatapp testbox
Single-node test environment for chatapp Java services, Go API, cron worker, and local infra.
Public API entry:
https://jvapi-test.haiyihy.com
What runs here
- MySQL 8.0
- Redis 7
- MongoDB 7
- Nacos standalone, namespace
RedCircleServiceTest - RocketMQ namesrv/broker/proxy
- Java: auth, gateway, external, console, other, live, wallet, order
- Go: chatapp3-golang API
- Cron: chatapp-cron week-star worker
- Admin: chatapp3-admin at
https://yumi-test-admin.haiyihy.com - Caddy for HTTPS reverse proxy to gateway
First deployment
Make sure SSH works first:
ssh root@43.165.195.39 'hostname'
Then trigger a git-based deploy:
cd /Users/hy/Documents/haiyi/hy-app-monitor
bash testbox/scripts/deploy-from-git.sh root@43.165.195.39
The script only SSHes to the testbox. The server pulls these git repositories, installs Docker on the testbox, starts infra, imports Nacos configs, applies MySQL baseline files, builds images, and starts apps:
git@gitea.haiyihy.com:hy/hy-app-monitor.git
git@gitea.haiyihy.com:hy/chatapp3-java.git
git@gitea.haiyihy.com:hy/chatapp3-golang.git
git@gitea.haiyihy.com:hy/chatapp-cron.git
git@gitea.haiyihy.com:hy/chatapp3-admin.git
After first deployment, you can run the deploy directly on the server:
ssh root@43.165.195.39 'bash /opt/chatapp-test/scripts/deploy-from-git-remote.sh'
The runtime .env stays on the server at /opt/chatapp-test/.env; git deploys
do not overwrite it.
新同学日常部署
场景:你改了某个 Java 服务或 chatapp3-admin,想在测试环境看效果。
1. 先把代码提交推送
测试机只从 Git 拉代码,不依赖你本机目录。所以本机改完以后,必须先提交并推到对应仓库。
Java 服务:
cd /path/to/chatapp3-java
git status
git add <changed-files>
git commit -m "your change message"
git push origin main
Admin 前端:
cd /path/to/chatapp3-admin
git status
git add <changed-files>
git commit -m "your change message"
git push origin main
如果同时改了部署脚本、Caddy、测试环境配置模板,则还需要推 hy-app-monitor:
cd /path/to/hy-app-monitor
git status
git add testbox/<changed-files>
git commit -m "your change message"
git push origin main
2. 最推荐:一键拉取并全量部署
这是新人最稳的方式。脚本会在测试机上拉取最新 Git 代码,合并缺失的 .env 默认项,导入 Nacos 配置,构建 Java/Go/cron/admin 镜像,并重启应用。
ssh root@43.165.195.39 'bash /opt/chatapp-test/scripts/deploy-from-git-remote.sh'
部署完成后看状态:
ssh root@43.165.195.39 '
cd /opt/chatapp-test &&
docker compose --env-file .env -f docker-compose.infra.yml -f docker-compose.apps.yml ps
'
常用访问地址:
App/API: https://jvapi-test.haiyihy.com
Admin: https://yumi-test-admin.haiyihy.com
测试 admin 当前内置账号:
账号:admin
密码:admin
3. 改 Java 服务后怎么看日志
服务名和容器名对应关系:
rc-auth -> auth -> chatapp-test-auth
rc-gateway -> gateway -> chatapp-test-gateway
rc-service-console -> console -> chatapp-test-console
rc-service-other -> other -> chatapp-test-other
rc-service-live -> live -> chatapp-test-live
rc-service-wallet -> wallet -> chatapp-test-wallet
rc-service-order -> order -> chatapp-test-order
rc-service-external -> external -> chatapp-test-external
chatapp3-golang -> golang -> chatapp-test-golang
chatapp-cron -> chatapp-cron
chatapp3-admin -> admin -> chatapp-test-admin
查看某个服务日志:
ssh root@43.165.195.39 '
cd /opt/chatapp-test &&
docker compose --env-file .env -f docker-compose.infra.yml -f docker-compose.apps.yml logs -f --tail=200 order
'
把上面的 order 换成 other、wallet、console、admin 等即可。
4. 进阶:只部署一个 Java 服务
日常建议先用一键全量部署。确实只想快速验证某个 Java 服务时,可以在测试机上手动做单服务部署。
下面以 order 为例:
ssh root@43.165.195.39 '
set -e
cd /opt/chatapp-test/sources/chatapp3-java
git fetch --prune origin main
git checkout -B main origin/main
git reset --hard origin/main
if [ -x ./ci/install-private-maven.sh ]; then
./ci/install-private-maven.sh
fi
mvn -Ptest -T 1C -pl rc-service/rc-service-order/order-start -am -Dmaven.test.skip=true package
cd /opt/chatapp-test
python3 scripts/import-nacos-configs.py
docker compose --env-file .env -f docker-compose.infra.yml -f docker-compose.apps.yml build order
docker compose --env-file .env -f docker-compose.infra.yml -f docker-compose.apps.yml up -d order
'
常用 Java 服务的 Maven 模块:
auth rc-auth
gateway rc-gateway
external rc-service/rc-service-external/external-start
console rc-service/rc-service-console/console-start
other rc-service/rc-service-other/other-start
live rc-service/rc-service-live/live-start
wallet rc-service/rc-service-wallet/wallet-start
order rc-service/rc-service-order/order-start
如果改的是 gateway 路由或 Nacos 配置,记得执行 python3 scripts/import-nacos-configs.py 后重启 gateway。
5. 进阶:只部署 admin 前端
Admin 的接口地址由测试机 /opt/chatapp-test/.env 控制:
TESTBOX_ADMIN_API_BASE_URL=https://yumi-test-admin.haiyihy.com/console
单独部署 admin:
ssh root@43.165.195.39 '
set -e
cd /opt/chatapp-test/sources/chatapp3-admin
git fetch --prune origin main
git checkout -B main origin/main
git reset --hard origin/main
cd /opt/chatapp-test
docker build \
-f docker/chatapp3-admin.Dockerfile \
--build-arg ADMIN_API_BASE_URL="$(python3 scripts/env-value.py .env TESTBOX_ADMIN_API_BASE_URL https://yumi-test-admin.haiyihy.com/console)" \
--build-arg ADMIN_OSS_URL="$(python3 scripts/env-value.py .env TESTBOX_ADMIN_OSS_URL "")" \
-t chatapp-test/admin:testbox \
/opt/chatapp-test/sources/chatapp3-admin
docker compose --env-file .env -f docker-compose.infra.yml -f docker-compose.apps.yml up -d admin caddy
'
6. 常见判断
- 页面没变化:先确认代码已经
git push origin main,再确认测试机仓库已经拉到最新git rev-parse --short HEAD。 - Java 接口 404:检查 gateway 路由、服务 context-path、Caddy 代理目标。
- Admin 能打开但接口 401:先确认
/console/**是 admin 域名直连console服务,不要走 appgateway。 - 日志里出现
*.prod.svc.cluster.local:说明 Java Feign 地址没有被测试环境变量覆盖;检查/opt/chatapp-test/.env里的FEIGN_*_URL,然后重启相关 Java 服务。 - 服务启动慢:Java 服务重启后 1-3 分钟内
health: starting正常,等健康检查变成healthy再验证。 - 只改数据库数据:不用部署代码,直接连测试 MySQL;但基础数据脚本要沉淀到
testbox/mysql/baseline/或业务仓库 SQL 目录。
MySQL baseline
Java services need real schema and base config rows. Put sanitized SQL files in:
testbox/mysql/baseline/
They are applied in lexical order. Recommended:
10-schema.sql
20-base-data.sql
The deploy script then applies Go migrations from chatapp3-golang/migrations
and Java incremental SQL from chatapp3-java/sql.
Runtime commands on the server
cd /opt/chatapp-test
docker compose --env-file .env -f docker-compose.infra.yml -f docker-compose.apps.yml ps
docker compose --env-file .env -f docker-compose.infra.yml -f docker-compose.apps.yml logs -f gateway
docker compose --env-file .env -f docker-compose.infra.yml -f docker-compose.apps.yml restart other
Local-only infra ports on the server:
127.0.0.1:3306 MySQL
127.0.0.1:6379 Redis
127.0.0.1:27017 Mongo
127.0.0.1:8848 Nacos
127.0.0.1:8081 RocketMQ proxy
Only 80/443 are intended to be public.