81 lines
2.1 KiB
Markdown
81 lines
2.1 KiB
Markdown
# 广寒拓扑 NAS 容器手动部署
|
||
|
||
此部署包只用于更新 NAS 上现有的 `topology-api` 容器,不修改公网服务器的 Nginx 路由。
|
||
|
||
## 部署前
|
||
|
||
1. 备份 NAS 上当前拓扑项目目录和 `.env`。
|
||
2. 确认当前容器对外端口仍为 `38080`,容器内端口为 `8080`。
|
||
3. 将本压缩包解压到一个新目录。
|
||
4. 把现有生产 `.env` 复制到解压后的目录。部署包不包含任何凭据。
|
||
|
||
## 构建新镜像
|
||
|
||
在解压目录执行:
|
||
|
||
```bash
|
||
docker build --no-cache -t topology-api:20260721-1145 .
|
||
```
|
||
|
||
本次数据库布局数据已经写入现有拓扑数据库,正常情况下不需要再次运行 seed 脚本。
|
||
|
||
## 替换容器
|
||
|
||
以下命令假定:
|
||
|
||
- 当前容器名称为 `topology-api-2`;
|
||
- NAS 对外端口为 `38080`;
|
||
- 生产 `.env` 已复制到当前解压目录。
|
||
|
||
先停止并保留旧容器:
|
||
|
||
```bash
|
||
docker stop topology-api-2
|
||
docker rename topology-api-2 topology-api-2-backup-20260721
|
||
```
|
||
|
||
再启动新容器:
|
||
|
||
```bash
|
||
docker run -d \
|
||
--name topology-api-2 \
|
||
--restart unless-stopped \
|
||
--env-file .env \
|
||
-p 38080:8080 \
|
||
topology-api:20260721-1145
|
||
```
|
||
|
||
## 验证
|
||
|
||
```bash
|
||
curl -fsS http://127.0.0.1:38080/health
|
||
curl -fsS 'http://127.0.0.1:38080/api/v1/bases/guanghan/snapshot?mission=GHC-05'
|
||
curl -fsS 'http://127.0.0.1:38080/api/v1/bases/guanghan/snapshot?mission=GHC-06'
|
||
```
|
||
|
||
预期结果:
|
||
|
||
- GHC-05:`engineering_overview_v1`,画布宽度 `1900`。
|
||
- GHC-06:`engineering_overview_ghc06_v1`,画布宽度 `2900`。
|
||
- GHC-05 的吴刚三号位于居住舱二号北部。
|
||
- GHC-06 的吴刚二号位于实验舱东部。
|
||
|
||
公网验证地址:
|
||
|
||
```text
|
||
http://118.89.192.134:59100/topology/guanghan_topology_demo.html?mission=GHC-06
|
||
```
|
||
|
||
## 回滚
|
||
|
||
如果健康检查或页面验证失败,停止并移除新容器,然后恢复旧容器:
|
||
|
||
```bash
|
||
docker stop topology-api-2
|
||
docker rm topology-api-2
|
||
docker rename topology-api-2-backup-20260721 topology-api-2
|
||
docker start topology-api-2
|
||
```
|
||
|
||
确认新版本稳定运行后,旧容器可以继续保留一段时间。不要在首次验证前删除旧容器或旧镜像。
|