Golang 项目部署
本篇文档介绍如何在 Rainbond 平台上通过源代码部署 Golang 项目。
项目识别
Rainbond 会按以下规则识别 Golang 项目:
go.mod:源码根目录存在此文件,识别为 Golang 项目
支持的项目类型
Rainbond 当前不会像 Node.js 那样按 Gin、Echo、Fiber 等框架做单独识别,核心是项目能否被 Go buildpack 编译为可执行文件。
| 项目类型 | 说明 |
|---|---|
| 单模块项目 | 根目录存在 go.mod,默认构建当前模块 |
| 多入口项目 | 可通过构建目标参数指定要编译的 main 包 |
| 私有模块项目 | 可通过 GOPROXY 和 GOPRIVATE 配置私有依赖拉取 |
构建参数
在组件的 构建源 页面或构建环境变量中,可以配置以下常用参数:
| 参数 | 说明 | 默认值 |
|---|---|---|
| Go 版本 | 指定 Go 运行时版本 | 自动识别,未识别时为 1.25 |
| 模块代理 | Go Modules 代理地址 | https://goproxy.cn |
| 私有模块 | 私有模块匹配规则 | 空 |
| 构建目标 | 指定需要编译的 main 包或包路径 | 空则自动识别 |
| 构建参数 | 透传给 go build 的 flags | 空 |
| 链接参数 | 透传给 go build -ldflags | 空 |
| 启动方式 | 默认或自定义 | 默认 |
支持的 Go 版本
1.24、1.25
其中平台默认版本为 1.25。
模块代理默认值
Rainbond 在源码识别阶段会为 Golang 项目默认注入国内代理:
- GOPROXY:
https://goproxy.cn
如果项目依赖私有仓库,建议同时配置 GOPRIVATE,并确保构建环境能够访问对应的 Git 服务或模块代理。
多入口项目示例
如果项目有多个 main 包,可以通过构建目标指定入口,例如:
./cmd/manage-server
启动命令
如果需要自定义启动命令,可以通过以下任一方式提供:
- 在源码根目录添加
Procfile - 在源码构建参数中选择自定义启动方式并填写启动命令
例如:
web: ./your-binary
单模块项目部署
部署步骤
- 进入目标团队,点击 新建应用
- 选择 从源码构建
- 按表单填写:
- 组件名称
- 组件英文名称
- 仓库地址
- 子目录路径
- 代码版本
- 点击 确认创建
- Rainbond 自动识别为 Golang 项目
- 保持默认构建目标为空,直接构建并部署
示例仓库:
| 配置项 | 内容 |
|---|---|
| 仓库地址 | https://gitee.com/rainbond/sourcecode-examples.git |
| 代码分支 | master |
| 子目录 | go/single-module |
多入口项目部署
部署步骤
- 进入目标团队,点击 新建应用
- 选择 从源码构建
- 按表单填写:
- 组件名称
- 组件英文名称
- 仓库地址
- 子目录路径
- 代码版本
- 点击 确认创建
- Rainbond 自动识别为 Golang 项目
- 在构建源中填写正确的
构建目标,必要时确认自定义启动命令 - 构建并部署
示例仓库:
| 配置项 | 内容 |
|---|---|
| 仓库地址 | https://gitee.com/rainbond/sourcecode-examples.git |
| 代码分支 | master |
| 子目录 | go/multi-module |
对于这个多入口示例,通常需要根据实际要运行的 main 包填写 构建目标。如果默认启动方式不符合预期,再通过 Procfile 或页面中的自定义启动命令覆盖。