使用提供商服务
Docker Compose 支持提供商服务,允许与生命周期由第三方组件而非 Compose 本身管理的服务集成。
此功能使您能够定义和利用特定于平台的各种服务,而无需手动设置或直接进行生命周期管理。
什么是提供商服务?
提供商服务是 Compose 中一种特殊类型的服务,它代表平台功能而非容器。它们允许您声明对应用程序所需的特定平台功能的依赖。
当您在 Compose 文件中定义提供商服务时,Compose 会与平台协作以预置和配置请求的功能,使其可供您的应用程序服务使用。
使用提供商服务
要在 Compose 文件中使用提供商服务,您需要
- 使用
provider属性定义服务 - 指定要使用的提供商
type - 配置任何特定于提供商的选项
- 声明您的应用程序服务对提供商服务的依赖
这是一个基本示例
services:
database:
provider:
type: awesomecloud
options:
type: mysql
foo: bar
app:
image: myapp
depends_on:
- database请注意 database 服务中专门的 provider 属性。此属性指定该服务由提供商管理,并允许您定义特定于该提供商类型的选项。
app 服务中的 depends_on 属性指定它依赖于 database 服务。这意味着 database 服务将在 app 服务之前启动,从而允许提供商信息注入到 app 服务中。
工作原理
在执行 docker compose up 命令期间,Compose 会识别依赖于提供商的服务,并与它们协作以预置请求的功能。然后,提供商将预置资源访问信息填充到 Compose 模型中。
此信息通过环境变量传递给声明依赖提供商服务的服务。这些变量的命名约定是
<<PROVIDER_SERVICE_NAME>>_<<VARIABLE_NAME>>例如,如果您的提供商服务名为 database,您的应用程序服务可能会收到以下环境变量:
DATABASE_URL,其中包含访问预置资源的 URLDATABASE_TOKEN,其中包含身份验证令牌- 其他特定于提供商的变量
然后,您的应用程序可以使用这些环境变量与预置资源进行交互。
提供商类型
提供商服务中的 type 字段引用以下之一的名称:
- Docker CLI 插件(例如,
docker-model) - 用户 PATH 中可用的二进制文件
当 Compose 遇到提供商服务时,它会查找具有指定名称的插件或二进制文件来处理请求功能的预置。
例如,如果您指定 type: model,Compose 将在 PATH 中查找名为 docker-model 的 Docker CLI 插件或名为 model 的二进制文件。
services:
ai-runner:
provider:
type: model # Looks for docker-model plugin or model binary
options:
model: ai/example-model插件或二进制文件负责:
- 解释提供商服务中提供的选项
- 预置请求的功能
- 返回有关如何访问预置资源的信息
然后,此信息作为环境变量传递给依赖服务。
提示如果您在 Compose 中使用 AI 模型,请改用
models顶级元素。
使用提供商服务的好处
在 Compose 应用程序中使用提供商服务具有以下几个优势:
- 简化配置:您无需手动配置和管理平台功能
- 声明式方法:您可以在一个地方声明所有应用程序的依赖项
- 一致的工作流程:您可以使用相同的 Compose 命令管理整个应用程序,包括平台功能
创建自己的提供商
如果您想创建自己的提供商以使用自定义功能扩展 Compose,您可以实现一个注册提供商类型的 Compose 插件。
有关如何创建和实现自己的提供商的详细信息,请参阅Compose 扩展文档。
本指南解释了允许您向 Compose 添加新提供商类型的扩展机制。