本文档描述与 测试环境(sit/test) 并行运行的 开发环境 的设计、部署与日常运维。配置脚本位于仓库 docs/devops/dev/。
| 环境 | Git 分支 | Spring Profile | 宿主机 Java 目录 | 说明 |
|---|---|---|---|---|
| 测试 sit | sit |
test |
/docker/java |
现有联调 / 测试 |
| 开发 deve | deve |
dev |
/deve/java |
本环境 |
开发环境目标:
gateway + store + secondjava-dev 容器联调flowchart TB
subgraph host["测试机 120.26.186.130"]
subgraph mw["/docker/middleware 共用"]
MySQL[(MySQL 30001)]
Nacos[Nacos 8848]
RMQ[RocketMQ]
XXL[xxl-job-admin 30019]
RedisTest[redis 30002]
Jenkins[Jenkins 30003]
Nginx[Nginx 80/443]
end
subgraph mwdev["/docker/middleware-dev 增补"]
RedisDev[redis-dev 20022]
end
subgraph test["/docker/java 测试"]
GWt[gateway :8000 profile=test]
end
subgraph dev["/deve/java 开发"]
GWd[gateway-dev :28000 profile=dev]
end
end
GWt --> Nacos
GWd --> Nacos
GWt --> RedisTest
GWd --> RedisDev
GWt --> MySQL
GWd --> MySQL
Jenkins --> dev
Nginx --> GWt
Nginx --> GWd
| 资源 | 测试 | 开发 | 隔离方式 |
|---|---|---|---|
| MySQL 实例 | 共用 mysql:3306 |
共用 | 不同 database(dev 库) |
| Nacos | namespace acd615de-… |
public / dev 命名空间 | bootstrap-test.yml vs bootstrap-dev.yml |
| Redis | redis-6.0.8 30002 |
redis-dev 20022 |
独立实例 + 独立数据目录 |
| RocketMQ | 共用 | 共用 | consumer group / topic 前缀在 Nacos 区分 |
| xxl-job-admin | 共用 30019 |
共用 | 执行器 appname + 回调端口 区分 |
| Java 容器 | gateway… |
gateway-dev… |
独立 compose、端口 28xxx |
| 日志 | /docker/java/logs |
/deve/java/logs |
独立目录 |
/docker/middleware/ # 测试中间件(已有)
/docker/middleware-dev/ # 开发增补中间件(redis-dev)
/docker/java/ # 测试 Java 服务
/deve/java/ # 开发 Java 服务(compose + jar + logs)
首次部署建议从仓库复制:
# 开发 Java
mkdir -p /deve/java
cp docs/devops/dev/java/docker-compose.yml /deve/java/
mkdir -p /deve/java/gateway /deve/java/store /deve/java/second \
/deve/java/store-platform /deve/java/lawyer /deve/java/job /deve/java/dining \
/deve/java/logs/gateway /deve/java/logs/store ...
# 开发 Redis
mkdir -p /docker/middleware-dev
cp -r docs/devops/dev/middleware/* /docker/middleware-dev/
| 路径 | 说明 |
|---|---|
docs/devops/dev/Introduction.md |
本文档 |
docs/devops/dev/java/docker-compose.yml |
7 个 Java 微服务 compose |
docs/devops/dev/java/Jenkinsfile |
Jenkins 流水线(Pipeline from SCM) |
docs/devops/dev/middleware/docker-compose.yml |
redis-dev |
docs/devops/dev/middleware/redis-dev/conf/redis.conf |
dev Redis 配置 |
| 服务 | 容器名 | compose 服务名 | 宿主机端口 | 容器端口 | Profile |
|---|---|---|---|---|---|
| gateway | gateway-dev |
gateway |
28000 | 8000 | dev |
| store | store-dev |
store |
28004 | 30004 | dev |
| second | second-dev |
second |
28005 | 30005 | dev |
| store-platform | store-platform-dev |
store-platform |
28006 | 30006 | dev |
| lawyer | lawyer-dev |
lawyer |
28007 | 30007 | dev |
| job | job-dev |
job |
28008 / 28018 | 30008 / 9999 | dev |
| dining | dining-dev |
dining |
28014 | 30014 | dev |
对比测试环境:gateway 8000,store 30004,job 回调 30018。
| 组件 | 宿主机端口 | 容器内访问(app-network) |
|---|---|---|
| redis-dev | 20022 | redis-dev:6379 |
| MySQL(共用) | 30001 | mysql:3306 |
| Nacos(共用) | 8848 | nacos-2.5.2:8848 |
| xxl-job-admin(共用) | 30019 | xxl-job-admin:8080 |
docker network inspect app-network # 须已存在(middleware 创建)
cd /docker/middleware-dev
docker compose up -d
docker exec redis-dev redis-cli -a Alien123456 ping
日常最小集(约 2~2.5GB 额外内存):
cd /deve/java
docker compose up -d gateway store second
全量:
cd /deve/java
docker compose up -d
在 /docker/middleware/docker-compose.yml 的 jenkins 服务中增加:
volumes:
- /deve/java:/deve/java # dev 部署目录
# 已有:../java:/app_deploy、docker.sock 等
spring.profiles.active=dev 读取 bootstrap-dev.yml(默认 public 命名空间,与 test 的 acd615de-… 分离)。
在 dev 命名空间 common.yml(及 alien-job 等)中确认:
spring:
datasource:
url: jdbc:mysql://mysql:3306/<dev库名>?...
redis:
host: redis-dev
port: 6379
password: Alien123456
xxl:
job:
admin:
addresses: http://xxl-job-admin:8080/xxl-job-admin
accessToken: default_token
executor:
appname: alien-job-dev # 与 test 的 alien-job 区分
ip: 120.26.186.130
port: 28018 # 宿主机映射端口(非容器内 9999)
logpath: /app/logs
RocketMQ:为 dev 配置独立 consumer.group 前缀,避免与 test 抢消费。
共用 一个 xxl-job-admin(30019),通过 执行器 隔离:
| 项 | test (job) |
dev (job-dev) |
|---|---|---|
| executor.appname | alien-job |
alien-job-dev |
| 回调地址 | 120.26.186.130:30018 |
120.26.186.130:28018 |
| 业务库 | test 库 | dev 库(profile=dev) |
控制台操作:
alien-job 与 alien-job-dev 均 在线alien-job-dev 执行器;test 任务绑定 alien-job验证:
curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:28018/
curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:30018/
| 项 | 值 |
|---|---|
| 类型 | Pipeline script from SCM |
| 仓库 | http://8.152.195.41:3000/alien/alien_cloud |
| 默认分支 | */deve |
| Script Path | docs/devops/dev/java/Jenkinsfile |
保存后执行一次构建以注册参数。
| 参数 | 默认 | 说明 |
|---|---|---|
GIT_BRANCH |
deve |
可改分支 |
STOP_ALL |
false |
为 true 时先 docker compose stop 全部 dev 服务 |
DEPLOY_gateway |
true | |
DEPLOY_store |
true | |
DEPLOY_second |
true | |
DEPLOY_store_platform |
false | |
DEPLOY_lawyer |
false | |
DEPLOY_job |
false | |
DEPLOY_dining |
false |
规则:
STOP_ALL=true 时 必须勾选 gatewayCheckout → [Stop All] → Maven(-pl 勾选模块 -am) → 拷贝 jar 到 /deve/java → compose up -d + restart| sit | deve |
|---|---|
| 脚本写在 Job 内 | SCM Jenkinsfile |
分支 sit |
参数 GIT_BRANCH,默认 deve |
| 全量构建部署 | 按需模块 |
/app_deploy + docker restart |
/deve/java + docker compose |
基于测试机 docker stats(7 个 test Java 合计约 5.6GB RSS,宿主机约 10GB 可用):
| 策略 | 服务 | 大约额外内存 |
|---|---|---|
| 日常推荐 | gateway + store + second | ~2~2.5 GB |
| 全链路 | 7 个 Java | ~4.5~5.5 GB |
dev compose 默认:mem_limit 800M(store 700M),-Xmx384m。store-dev 为最重模块,若 OOM 可适当提高 mem_limit 或 -Xmx。
# 查看 dev 容器状态
cd /deve/java && docker compose ps
# 查看内存
docker stats --no-stream gateway-dev store-dev job-dev --format "table {{.Name}}\t{{.MemUsage}}\t{{.MemPerc}}"
# 重启单个服务
cd /deve/java && docker compose restart store
# 停止全部 dev Java(不影响 test)
cd /deve/java && docker compose stop
# 日志
tail -f /deve/java/logs/store/alien-store/*.log
docker logs -f store-dev --tail 200
# 健康检查
curl -s http://127.0.0.1:28000/actuator/health
tar -czf /tmp/alien-store-logs-$(date +%Y%m%d-%H%M%S).tar.gz \
-C /deve/java/logs/store alien-store
不启动服务器 Java 容器时,可本地起单个服务并连 dev 中间件:
| 配置项 | 值 |
|---|---|
spring.profiles.active |
dev |
| MySQL | 120.26.186.130:30001,dev 库 |
| Redis | 120.26.186.130:20022,密码 Alien123456 |
| Nacos | 120.26.186.130:8848,dev 命名空间 |
勿使用 test 的 Nacos namespace,避免注册到 test 服务发现。
在现有 nginx-1.28 的 conf.d 中增加 dev 入口(示例):
upstream dev_gateway { server 127.0.0.1:28000; }
server {
listen 443 ssl;
server_name dev.ailien.shop;
location / {
proxy_pass http://dev_gateway;
}
}
静态资源建议独立目录,例如 /docker/middleware/nginx/html-dev。
| 现象 | 可能原因 | 处理 |
|---|---|---|
| dev 请求打到 test 服务 | Profile 仍为 test 或 Nacos namespace 错误 |
确认 -Dspring.profiles.active=dev |
| Redis 认证失败 | Nacos 未配 password | common.yml 补 Alien123456 |
| xxl-job 回调失败 | executor.port 写成 9999 | 宿主机侧应为 28018 |
| Jenkins 部署 jar 失败 | 未挂载 /deve/java |
检查 jenkins volumes |
| 新 jar 不生效 | 仅 up -d 未 restart |
流水线已 up -d + restart;手工同理 |
STOP_ALL 后网关不通 |
未勾选 gateway | 勾选 DEPLOY_gateway |
| 构建参数无复选框 | Job 有旧的手动参数冲突 | 删除 Job 内重复参数,重新保存 Job |
| 日期 | 说明 |
|---|---|
| 2026-06 | 初版:dev Java compose、redis-dev、Jenkinsfile、本文档 |
配置变更请同步更新仓库 docs/devops/dev/ 下对应文件,再部署到服务器。