feat: 添加多语言客户端 Docker 支持

- 新增 .NET 客户端 SDK 和 demo 项目
- 添加 Go/Node.js/Python/.NET/SpringBoot2 的 Dockerfile
- Go demo 支持从环境变量读取配置
- 创建 README_DOCKERFILE.md 文档说明 Docker 使用方法
- 更新根目录 README.md 标记 .NET 客户端为已支持
This commit is contained in:
2026-06-14 21:07:35 +08:00
parent 18b8c4c18b
commit 82523b9236
19 changed files with 820 additions and 11 deletions
+152
View File
@@ -0,0 +1,152 @@
# Kenaito Config Center 客户端 Docker 部署指南
本文档说明如何使用 Dockerfile 构建和测试各语言客户端 demo。
## 前置条件
- Docker 已安装
- 配置中心服务端已启动(默认 `http://localhost:8080`)
- 已在管理后台创建对应应用和环境
## 快速构建
在项目根目录执行:
```bash
# Go 客户端
docker build -f Dockerfile.go -t kenaito-conf-go-demo .
# Node.js 客户端
docker build -f Dockerfile.nodejs -t kenaito-conf-nodejs-demo .
# Python 客户端
docker build -f Dockerfile.python -t kenaito-conf-python-demo .
# .NET 客户端
docker build -f Dockerfile.dotnet -t kenaito-conf-dotnet-demo .
# Spring Boot 2 客户端
docker build -f Dockerfile.springboot2 -t kenaito-conf-springboot2-demo .
```
## 运行测试
### Go 客户端
```bash
docker run -it --rm \
-e KENAITO_BASE_URL=http://host.docker.internal:8080 \
-e KENAITO_APP_NAME=kenaito-springboot-demo \
-e KENAITO_ENV=daily \
kenaito-conf-go-demo
```
### Node.js 客户端
```bash
docker run -d --rm --name nodejs-demo \
-p 8083:8083 \
-e KENAITO_BASE_URL=http://host.docker.internal:8080 \
-e KENAITO_APP_NAME=kenaito-springboot-demo \
-e KENAITO_ENV=daily \
kenaito-conf-nodejs-demo
# 查看日志
docker logs -f nodejs-demo
# 测试接口
curl http://localhost:8083/
curl http://localhost:8083/health
# 停止
docker stop nodejs-demo
```
### Python 客户端
```bash
docker run -d --rm --name python-demo \
-p 8082:8082 \
-e KENAITO_BASE_URL=http://host.docker.internal:8080 \
-e KENAITO_APP_NAME=kenaito-springboot-demo \
-e KENAITO_ENV=daily \
kenaito-conf-python-demo
# 查看日志
docker logs -f python-demo
# 测试接口
curl http://localhost:8082/
curl http://localhost:8082/health
# 停止
docker stop python-demo
```
### .NET 客户端
```bash
docker run -it --rm \
-e KENAITO_BASE_URL=http://host.docker.internal:8080 \
-e KENAITO_APP_NAME=kenaito-springboot-demo \
-e KENAITO_ENV=daily \
kenaito-conf-dotnet-demo
```
### Spring Boot 2 客户端
```bash
docker run -d --rm --name springboot2-demo \
-p 8081:8081 \
-e KENAITO_BASE_URL=http://host.docker.internal:8080 \
-e KENAITO_APP_NAME=kenaito-springboot-demo \
-e KENAITO_ENV=daily \
kenaito-conf-springboot2-demo
# 查看日志
docker logs -f springboot2-demo
# 测试接口
curl http://localhost:8081/
curl http://localhost:8081/health
# 停止
docker stop springboot2-demo
```
## 环境变量说明
| 变量名 | 说明 | 默认值 |
|--------|------|--------|
| `KENAITO_BASE_URL` | 配置中心地址 | `http://localhost:8080` |
| `KENAITO_APP_NAME` | 应用名称 | `kenaito-springboot-demo` |
| `KENAITO_ENV` | 环境标识 | `daily` |
| `KENAITO_VERSION` | 配置版本 | `latest` |
| `KENAITO_TOKEN` | 应用 Token | 空 |
| `KENAITO_SYNC_INTERVAL` | 同步间隔(秒) | `10` |
| `KENAITO_CACHE_DIR` | 缓存目录 | `.` |
## 注意事项
1. **host.docker.internal**:容器内访问宿主机服务时使用 `host.docker.internal:8080`,Linux 系统可能需要添加 `--add-host host.docker.internal:host-gateway`
2. **网络模式**:如果配置中心也运行在 Docker 中,建议使用自定义网络:
```bash
docker network create kenaito-net
docker run --network kenaito-net --name kenaito-server ...
docker run --network kenaito-net -e KENAITO_BASE_URL=http://kenaito-server:8080 ...
```
3. **配置缓存**:各客户端会在运行目录生成 `config-cache.json` 文件,容器重启后可从缓存加载配置
4. **日志查看**:
- Go/.NET:直接输出到 stdout
- Node.js/Python/Spring Boot:使用各自日志框架
## 测试配置变更
1. 启动客户端容器
2. 在管理后台修改对应应用的配置
3. 等待同步间隔(默认 10 秒)
4. 观察客户端日志是否输出配置变更
5. 访问 HTTP 接口验证配置是否更新(Node.js/Python/Spring Boot)