新增了客户端打包成sdk的功能和服务端docker镜像打包的功能,并修复了一些问题
This commit is contained in:
@@ -0,0 +1,196 @@
|
||||
# 服务端 Docker 镜像交付说明
|
||||
|
||||
这份说明用于把 SimCAE 自动升级/崩溃上报服务端交付给开发组或部署人员。
|
||||
|
||||
## 1. 要不要给开发组发 Docker 镜像
|
||||
|
||||
分两种情况:
|
||||
|
||||
- 如果开发组只负责接入客户端 SDK,通常不需要给他们镜像,只需要给一个已经部署好的测试服务地址、token、License 和 SDK 文档。
|
||||
- 如果开发组需要本地完整联调,建议给他们一个服务端 Docker 部署包。部署包不要只有一个镜像,还要包含 docker-compose.image.yml、.env 示例、keys 目录说明。
|
||||
|
||||
## 2. 服务端包含哪些容器
|
||||
|
||||
当前服务端不是单容器,而是三个服务:
|
||||
|
||||
- api:FastAPI 服务,提供升级接口、后台页面、Manifest 签名、崩溃上报接口。
|
||||
- minio:对象存储,用于保存版本文件。
|
||||
- minio-init:启动时自动创建 MinIO bucket。
|
||||
|
||||
所以交付时推荐给 Docker Compose 部署包。
|
||||
|
||||
## 3. 构建服务端镜像
|
||||
|
||||
在项目根目录执行,注意 Dockerfile 的构建上下文必须是项目根目录,因为镜像会复制 server 代码和 client/admin.html。
|
||||
|
||||
```powershell
|
||||
cd C:\Users\admin\Desktop
|
||||
|
||||
docker build `
|
||||
-t simcae-update-server:0.1.0 `
|
||||
-f server\Dockerfile `
|
||||
.
|
||||
```
|
||||
|
||||
验证镜像:
|
||||
|
||||
```powershell
|
||||
docker images simcae-update-server
|
||||
```
|
||||
|
||||
## 4. 导出镜像给别人
|
||||
|
||||
如果接收方机器可以访问 Docker Hub,只导出 api 镜像即可:
|
||||
|
||||
```powershell
|
||||
docker save `
|
||||
-o simcae-update-server_0.1.0.tar `
|
||||
simcae-update-server:0.1.0
|
||||
```
|
||||
|
||||
如果接收方机器不能联网,建议把 api、minio、minio-init 使用的三个镜像一起导出:
|
||||
|
||||
```powershell
|
||||
docker pull minio/minio:RELEASE.2025-04-22T22-12-26Z
|
||||
docker pull minio/mc:RELEASE.2025-04-16T18-13-26Z
|
||||
|
||||
docker save `
|
||||
-o simcae-server-all-images_0.1.0.tar `
|
||||
simcae-update-server:0.1.0 `
|
||||
minio/minio:RELEASE.2025-04-22T22-12-26Z `
|
||||
minio/mc:RELEASE.2025-04-16T18-13-26Z
|
||||
```
|
||||
|
||||
建议交付目录:
|
||||
|
||||
```text
|
||||
SimCAEServerDockerPackage/
|
||||
simcae-update-server_0.1.0.tar
|
||||
docker-compose.image.yml
|
||||
.env.example
|
||||
keys/
|
||||
manifest_private_key.pem
|
||||
README.md
|
||||
```
|
||||
|
||||
注意:manifest_private_key.pem 是服务端签 Manifest 的私钥。客户端 SDK 中的 manifest_public_key.pem 必须和它匹配。
|
||||
|
||||
|
||||
## 4.1 推荐:在 Ubuntu 上使用离线打包脚本
|
||||
|
||||
如果接收方服务器不能联网,推荐直接使用 Ubuntu/bash 脚本生成完整离线包。脚本会完成:构建 api 镜像、拉取 MinIO 镜像、导出三张镜像、复制 docker-compose.yml、复制 .env.example、复制 keys、生成快速启动说明,并压缩成 tar.gz。
|
||||
|
||||
在当前 Ubuntu 机器上执行:
|
||||
|
||||
```bash
|
||||
cd /path/to/project/server
|
||||
|
||||
bash ./package-offline-server.sh \
|
||||
--version 0.1.0 \
|
||||
--output-dir ./dist/SimCAEServerDockerPackage
|
||||
```
|
||||
|
||||
生成结果:
|
||||
|
||||
```text
|
||||
server/dist/SimCAEServerDockerPackage/
|
||||
images/
|
||||
simcae-server-all-images_0.1.0.tar
|
||||
keys/
|
||||
manifest_private_key.pem
|
||||
manifest_public_key.pem
|
||||
docker-compose.yml
|
||||
.env.example
|
||||
README.md
|
||||
QUICK_START.md
|
||||
load-images.sh
|
||||
|
||||
server/dist/SimCAEServerDockerPackage.tar.gz
|
||||
```
|
||||
|
||||
把 `SimCAEServerDockerPackage.tar.gz` 拷贝到离线服务器即可。
|
||||
|
||||
如果是在 Windows 机器上打包,也可以使用 `package-offline-server.ps1`,但 Ubuntu 服务端主流程建议使用 `package-offline-server.sh`。
|
||||
|
||||
## 5. 离线 Ubuntu 服务器如何运行
|
||||
|
||||
接收方服务器需要提前安装好 Docker Engine 和 Docker Compose plugin。离线包拷过去后执行:
|
||||
|
||||
```bash
|
||||
tar -xzf SimCAEServerDockerPackage.tar.gz
|
||||
cd SimCAEServerDockerPackage
|
||||
|
||||
bash ./load-images.sh
|
||||
nano .env
|
||||
```
|
||||
|
||||
`.env.example` 里已经填好一组可直接试跑的默认 token 和 MinIO 账号。你通常只需要先改服务器地址:
|
||||
|
||||
```text
|
||||
MINIO_PUBLIC_ENDPOINT=http://服务器IP:9000
|
||||
```
|
||||
|
||||
正式部署时,建议同时修改这些默认值,避免所有环境共用同一套公开示例密码:
|
||||
|
||||
```text
|
||||
CLIENT_API_TOKEN=客户端 API token,对应客户端 app_config.json 的 client_token
|
||||
ADMIN_TOKEN=后台管理员 token,网页登录时填这个值
|
||||
CRASH_REPORT_TOKEN=崩溃上传 token
|
||||
CRASH_SYMBOL_TOKEN=符号包上传 token
|
||||
MINIO_ACCESS_KEY=MinIO 用户名
|
||||
MINIO_SECRET_KEY=MinIO 密码
|
||||
```
|
||||
|
||||
如果你在网页里点击“更改令牌”,新令牌只会在当前服务进程中立即生效。为了让服务重启后仍然使用新令牌,请同步修改 `.env` 里的 `ADMIN_TOKEN`,然后执行 `docker compose restart api`。
|
||||
|
||||
启动:
|
||||
|
||||
```bash
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
查看状态:
|
||||
|
||||
```bash
|
||||
docker compose ps
|
||||
```
|
||||
|
||||
查看日志:
|
||||
|
||||
```bash
|
||||
docker compose logs -f api
|
||||
```
|
||||
|
||||
访问:
|
||||
|
||||
```text
|
||||
后台/API: http://服务器IP:8000/
|
||||
MinIO 控制台: http://服务器IP:9001/
|
||||
```
|
||||
|
||||
如果服务器开启了防火墙,至少放行:
|
||||
|
||||
```text
|
||||
8000 后台/API
|
||||
9000 客户端下载升级文件
|
||||
9001 MinIO 控制台,可按需限制访问
|
||||
```
|
||||
|
||||
## 6. 客户端 SDK 需要哪些服务端信息
|
||||
|
||||
发给客户端开发组的信息通常是:
|
||||
|
||||
```text
|
||||
api_base_url=http://服务器IP:8000
|
||||
client_token=CLIENT_API_TOKEN 的值
|
||||
license_key=后台创建的 License
|
||||
manifest_public_key.pem=与服务端 manifest_private_key.pem 匹配的公钥
|
||||
crash_report_token=CRASH_REPORT_TOKEN 的值,如果接入崩溃上报
|
||||
```
|
||||
|
||||
## 7. 生产部署提醒
|
||||
|
||||
- 不要把生产私钥和 token 发到无关人员手里。
|
||||
- 正式环境需要备份 runtime、minio_data、keys。
|
||||
- 对外开放端口至少包括 8000 和 9000;9001 是 MinIO 控制台,生产环境可限制访问。
|
||||
- 修改服务端签名私钥后,必须重新生成客户端 manifest_public_key.pem,并重新打 SDK/客户端包。
|
||||
Reference in New Issue
Block a user