跳到主要内容

使用 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.ymldocker-compose.yaml 文件。
  • Compose 文件引用的配置文件、脚本文件、初始化文件等。
  • Compose 文件中通过相对路径引用的文件或目录。
  • 如项目依赖 .envenv_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

创建应用

  1. 登录 Rainbond 控制台,进入目标团队。
  2. 点击 新建应用,选择 Docker Compose
  3. 填写应用信息:
    • 名称:应用的中文显示名称。
    • 英文名称:应用的英文标识,建议使用小写字母、数字和中划线。
  4. 上传 Docker Compose 项目压缩包。
  5. 如 Compose 文件不在项目根目录,在 Compose 文件路径 中填写相对路径。
  6. 如果 Compose 中使用了私有镜像,点击页面提示中的 填写账号密码,补充镜像仓库认证信息。
  7. 点击 确认创建

提交后,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}、默认值表达式或外部环境变量,创建前建议将关键变量整理为明确值,或确保相关 .envenv_file 文件已随项目包上传。

创建后请检查组件环境变量是否符合预期;未解析或不适合固化在 Compose 文件中的变量,可以在组件详情页手动补充。

创建后配置

应用创建完成后,建议按以下顺序完成检查和调整:

  1. 在应用拓扑图中确认所有组件都已创建。
  2. 进入有状态组件,检查持久化目录是否正确。
  3. 进入 Web/API 组件,检查端口是否需要开启对外服务。
  4. 检查组件环境变量,补齐未解析或需要按环境调整的配置。
  5. 检查组件依赖关系,确认启动顺序和连接信息正确。
  6. 启动应用,查看构建日志、事件和运行日志。
  7. 应用运行正常后,根据需要配置网关访问、自动构建、健康检查和资源限制。

常见问题

为什么页面提示网络配置将被忽略?

Rainbond 平台会统一管理组件网络。Compose 中的 networks 不会按原样创建,但组件仍可在 Rainbond 应用内通过平台提供的内部访问能力互相连接。

为什么带 profiles 的服务也会被部署?

Rainbond 创建应用时会完整解析 Compose 中的服务定义,不按本地 docker compose --profile 的方式选择性启动。上传前请保留需要部署的服务,移除不需要的服务。

配置文件显示待上传怎么办?

确认压缩包中包含该挂载路径对应的源文件或目录。如果文件未随压缩包上传,请在页面中补充上传,或重新打包项目后再次创建。

镜像拉取失败怎么办?

检查镜像地址和版本是否正确,并确认 Rainbond 集群节点能够访问该镜像仓库。私有镜像需要在创建页面填写正确的仓库账号密码。

组件启动失败怎么办?

进入组件详情页查看事件和日志。优先检查环境变量、配置文件挂载、持久化目录、启动命令和依赖服务是否正常。