- Linux 主机(推荐)
- Docker 20.10+(若采用容器部署)
- 服务可访问 MySQL 与 Redis
- 已准备
bin/configs/prod.json
先从模板生成生产配置:
cp bin/configs/local.json.default bin/configs/prod.jsonbin/configs/prod.json 只是模板,发布前必须替换所有占位值。
现在启动阶段会对已启用的数据库和 Redis 连接做 fail-fast 校验;如果仍保留模板占位值或缺少必需字段,服务会直接拒绝启动。
重点检查 bin/configs/prod.json:
system.run_mode(release)system.http_portsystem.jwt_secretsystem.admin.jwt_secret(推荐单独配置;为空时会回退到system.jwt_secret)system.route_prefixdatabases[*]redis[*]log
RUN_ENV=prod:加载bin/configs/prod.jsonAPP_NAME:可选运行时覆盖
示例:
export RUN_ENV=prod
export APP_NAME=dudu-admin-apimake build
RUN_ENV=prod ./bin/dudu-admin-api推荐配合:
systemdsupervisord- 容器编排运行时
构建镜像:
make docker-build仓库现在通过 .dockerignore 排除了本地配置、临时产物以及本地工作区元数据,避免这些内容进入 Docker build context。
运行容器:
RUN_ENV=prod make docker-run默认行为(来自 Makefile):
- 容器名:
dudu-admin-api - 配置挂载:
${PWD}/bin/configs:/bin/configs - 端口映射:
8080:8080
当前仓库默认未提交 docker-compose.yml。
若团队使用 Compose,建议在独立运维仓库或本地运维目录维护对应文件。
外部健康检查:
API_PREFIX="${API_PREFIX:-dudu-admin-api}"
curl -i "http://127.0.0.1:8080/${API_PREFIX}/external/ping"内部健康检查:
API_PREFIX="${API_PREFIX:-dudu-admin-api}"
curl -i "http://127.0.0.1:8080/${API_PREFIX}/internal/ping"若你自定义了 system.route_prefix,执行命令前先把 API_PREFIX 设置为对应的生效值。
- 通过
log.driver=file与log.path启用文件日志 - 后台管理路由保留
SaveOperationRecord操作日志记录 - 配置
monitor.panic_robot与notify做异常告警
system.jwt_secret与后台 OAuth/Passkey 等密钥使用高强度值- 限制 MySQL/Redis 的网络暴露范围
- 配置文件与日志目录设置最小权限
- 敏感请求/响应字段在操作日志中应脱敏或不落盘
- 数据库备份(日备 + 保留策略)
bin/configs备份并纳入安全的版本管理- 发布前在预发环境做一次恢复演练