f169afc1bc
新增「其他部署方式」分组,共 5 页: - 方式对比与选型:5 种方式对照、服务依赖表、服务间通信易错点 - 二进制部署:各服务 Go 版本/CGO/构建目录/产物名对照表, admin-svr 需 CGO 的说明,交叉编译限制,systemd unit 模板, 静态前端交给 nginx,升级回滚流程 - 自建镜像:各仓 Dockerfile 位置与构建上下文、构建参数、 镜像命名规则、批量构建脚本、常见问题 - 分离部署:中间件独立,业务机精简 compose,配置改为外部地址 - 离线部署:镜像导出导入、校验、内网镜像仓库方案 同时记录一个实际阻塞:openapi/app/admin-ui 共 5 个 Dockerfile 的 FROM 仍指向私有镜像仓库,外部环境无法构建,页内给出替换方法。
65 lines
2.3 KiB
Markdown
65 lines
2.3 KiB
Markdown
---
|
|
title: 其他部署方式
|
|
description: 二进制部署、自建镜像、分离部署与离线部署
|
|
outline: deep
|
|
---
|
|
|
|
# 其他部署方式
|
|
|
|
[启动与验证](install) 描述的是 **Docker Compose 单机部署**,也是推荐方式。本组文档覆盖其他场景。
|
|
|
|
## 方式对比
|
|
|
|
| 方式 | 适用场景 | 复杂度 | 参考 |
|
|
| --- | --- | --- | --- |
|
|
| **单机 Compose**(推荐) | 试用、中小规模生产 | 低 | [启动与验证](install) |
|
|
| **二进制部署** | 不能装 Docker,或需纳入 systemd 体系 | 中 | [二进制部署](binary) |
|
|
| **自建镜像** | 需改代码、加依赖、适配私有基础镜像 | 中 | [自建镜像](build-image) |
|
|
| **分离部署** | 数据库走云托管,或中间件已有独立集群 | 中 | [分离部署](split) |
|
|
| **离线部署** | 服务器无法访问镜像仓库 | 中 | [离线部署](offline) |
|
|
|
|
## 服务依赖关系
|
|
|
|
选择部署方式前需了解各服务依赖哪些组件:
|
|
|
|
| 服务 | 依赖 |
|
|
| --- | --- |
|
|
| admin-svr | MySQL、Redis、RabbitMQ |
|
|
| openapi | MySQL、Redis、RabbitMQ |
|
|
| worker-svr | MySQL、Redis、RabbitMQ |
|
|
| app-server | MySQL、Redis |
|
|
| upstream-chan | MySQL、Redis、Consul |
|
|
| upstream-proxy | MySQL、Redis、Consul |
|
|
| admin-ui | admin-svr(反向代理) |
|
|
| nginx | admin-ui、openapi、app-web、docs |
|
|
| sms | 无 |
|
|
| docs | 无 |
|
|
| onelink-mock | 无 |
|
|
|
|
## 通用前提
|
|
|
|
无论哪种方式,这三项不变:
|
|
|
|
1. **配置文件必须能被服务读到**——容器部署时挂载到 `/app/config`,二进制部署时放在工作目录的 `config/`
|
|
2. **`JWT_SIGNING_KEY` 在 admin-svr、openapi、app-server 三处必须一致**
|
|
3. **数据库需先完成初始化**——`schema/` 脚本按顺序执行一次
|
|
|
|
## 服务间通信方式
|
|
|
|
配置文件里通过**服务名**互访,例如:
|
|
|
|
```yaml
|
|
database:
|
|
default:
|
|
link: "mysql:u_iotlcm:...@tcp(mysql:3306)/db_iotlcm"
|
|
upstream:
|
|
proxy:
|
|
address: "upstream-proxy:8510"
|
|
```
|
|
|
|
这些名称在单机 Compose 中由 Docker 网络解析。**切换到二进制部署或分离部署时必须改为实际地址**(`127.0.0.1` 或内网 IP),这是最容易遗漏的一步。
|
|
|
|
::: danger 最常见的部署失败原因
|
|
只改了数据库地址,忘了改 `upstream-proxy:8510`、`upstream-chan:8110` 这类服务名。症状是服务能启动、数据库也通,但批次执行、智能诊断全部超时。
|
|
:::
|