使用 Docker Compose 部署
Rainbond 支持通过上传 Docker Compose 项目包创建应用。平台会解析 docker-compose.yml 中的服务定义,并将服务转换为 Rainbond 组件,同时识别镜像、端口、环境变量、存储挂载、配置文件和组件启动顺序等信息。
本文档介绍 Docker Compose 创建应用的准备方式、创建流程、解析结果确认方法和常见限制。
适用场景
- 已有 Docker Compose 项目,希望迁移到 Rainbond 统一部署和运维。
- 应用由多个服务组成,例如 Web、API、Worker、数据库、缓存、对象存储等。
- 希望通过一次上传,将 Compose 中的多个服务批量创建为同一个 Rainbond 应用下的组件。
Docker Compose 创建应用会将 Compose 配置转换为 Rainbond 应用模型。平台不会直接以 docker compose up 的方式运行项目,部分 Compose 配置会被忽略或转换为 Rainbond 中的等价配置。
准备 Docker Compose 项目包
将 Docker Compose 项目目录打包为 .zip、.tar 或 .tgz 格式,压缩包中应包含以下内容:
docker-compose.yml或docker-compose.yaml文件。- Compose 文件引用的配置文件、脚本文件、初始化文件等。
- Compose 文件中通过相对路径引用 的文件或目录。
- 如项目依赖
.env、env_file等环境变量文件,建议一并打包,并在创建后检查变量是否已按预期解析。
示例目录结构:
main/
├── docker-compose.yml
├── .env
├── nginx/
│ ├── nginx.conf.template
│ └── proxy.conf.template
├── sandbox/
│ └── config.yaml
└── volumes/
如果 docker-compose.yml 不在压缩包根目录,需要在创建页面填写 Compose 文件路径,路径为压缩包内的相对路径,例如 deploy/docker-compose.yml。
创建应用
- 登录 Rainbond 控制台,进入目标团队。
- 点击 新建应用,选择 Docker Compose。
- 填写应用信息:
- 名称:应用的中文显示名称。
- 英文名称:应用的英文标识,建议使用小写字母、数字和中划线。
- 上传 Docker Compose 项目压缩包。
- 如 Compose 文件不在项目根目录,在 Compose 文件路径 中填写相对路径。
- 如果 Compose 中使用了私有镜像,点击页面提示中的 填写账号密码,补充镜像仓库认证信息。
- 点击 确 认创建。
提交后,Rainbond 会进入部署源检测阶段,并开始解析 Compose 配置。
确认解析结果
解析完成后,页面会展示识别到的服务、配置文件和功能限制提示。建议重点检查以下内容:
| 检查项 | 说明 |
|---|---|
| 服务数量 | 确认 Compose 中需要部署的服务都已识别为组件。 |
| 镜像名称 | 检查镜像地址、镜像版本和私有仓库认证是否正确。 |
| 端口信息 | 确认需要对外访问或组件间访问的端口已被识别。 |
| 持久化目录 | 确认数据库、缓存、对象存储等有状态服务的数据目录已被识别。 |
| 配置文件 | 检查配置文件挂载路径和上传状态,确保必要文件为 已上传。 |
| 功能限制 | 阅读 需留意 列表,确认被忽略的配置不会影响应用运行。 |
如果页面显示部分配置文件为 待上传,需要根据页面提示补充上传对应文件后再继续创建。
支持的常见配置
Rainbond 会尽量从 Compose 配置中提取组件创建所需的信息,常见映射关系如下:
| Compose 配置 | Rainbond 中的处理方式 |
|---|---|
services | 每个服务转换为一个 Rainbond 组件。 |
image | 作为组件镜像来源。 |
ports | 转换为组件端口配置。 |
environment | 转换为组件环境变量。 |
volumes | 根据挂载目标转换为持久化目录或配置文件挂载。 |
depends_on | 保留服务启动顺序。 |
command / entrypoint | 转换为组件启动命令。 |
使用 Docker Compose 创建的组件主要从 Compose 配置中获取属性。创建后仍可以在组件详情页继续调整端口、环境变量、存储、健康检查、依赖关系等运行配置。
需留意的功能限制
Docker Compose 中部分配置与 Rainbond 平台的应用模型不完全一致,创建时会在页面展示 功能限制 或 需留意 提示。常见情况如下:
networks 配置会被忽略
Rainbond 会自动管理组件之间的网络连接,因此 Compose 中的 networks 配置会被忽略。
如果服务之间需要互相访问,请在应用创建完成后,通过组件依赖、环境变量或内部访问地址完成连接配置。
profiles 配置会被忽略
Compose 中的 profiles 用于控制本地启动哪些服务。Rainbond 创建应用时会按完整服务列表解析,带有 profiles 的服务也会被部署。
如果某些服务不需要部署,建议在上传前从 Compose 文件中移除,或创建后在拓扑图中删除对应组件。
depends_on 的健康检查条件会被忽略
Compose 支持在 depends_on 中配置 condition: service_healthy。Rainbond 会保留服务启动顺序,但不会把该健康检查条件直接转换为组件依赖条件。
如果服务启动依赖数据库、缓存等组件完全就绪,建议在应用创建后为组件配置健康检查,或在业务启动脚本中增加等待逻辑。
build 构建无法自动部署
如果服务使用 build 构建镜像,Rainbond 无法仅凭 Compose 配置自动完成本地构建和部署。需要先将该服务构建成镜 像并推送到可访问的镜像仓库,再在 Compose 文件中为该服务指定 image。
示例:
services:
web:
image: registry.example.com/demo/web:v1.0.0
动态变量需要确认解析结果
Compose 文件中如果大量使用 ${VARIABLE}、默认值表达式或外部环境变量,创建前建议将关键变量整理为明确值,或确保相关 .env、env_file 文件已随项目包上传。
创建后请检查组件环境变量是否符合预期;未解析或不适合固化在 Compose 文件中的变量,可以在组件详情页手动补充。
创建后配置
应用创建完成后,建议按以下顺序完成检查和调整:
- 在应用拓扑图中确认所有组件都已创建。
- 进入有状态组件,检查持久化目录是否正确。
- 进入 Web/API 组件,检查端口是否需要开启对外服务。
- 检查组件环境变量,补齐未解析或需要按环境调整的配置。
- 检查组件依赖关系,确认启动顺序和连接信息正确。
- 启动应用,查看构建日志、事件和运行日志。
- 应用运行正常后,根据需要配置网关访问、自动构建、健康检查和资源限制。