使用提供商服务

要求: Docker Compose 2.36.0 及更高版本

Docker Compose 支持提供商服务,允许与生命周期由第三方组件而非 Compose 本身管理的服务集成。
此功能使您能够定义和利用特定于平台的各种服务,而无需手动设置或直接进行生命周期管理。

什么是提供商服务?

提供商服务是 Compose 中一种特殊类型的服务,它代表平台功能而非容器。它们允许您声明对应用程序所需的特定平台功能的依赖。

当您在 Compose 文件中定义提供商服务时,Compose 会与平台协作以预置和配置请求的功能,使其可供您的应用程序服务使用。

使用提供商服务

要在 Compose 文件中使用提供商服务,您需要

  1. 使用 provider 属性定义服务
  2. 指定要使用的提供商 type
  3. 配置任何特定于提供商的选项
  4. 声明您的应用程序服务对提供商服务的依赖

这是一个基本示例

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,其中包含访问预置资源的 URL
  • DATABASE_TOKEN,其中包含身份验证令牌
  • 其他特定于提供商的变量

然后,您的应用程序可以使用这些环境变量与预置资源进行交互。

提供商类型

提供商服务中的 type 字段引用以下之一的名称:

  1. Docker CLI 插件(例如,docker-model
  2. 用户 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

插件或二进制文件负责:

  1. 解释提供商服务中提供的选项
  2. 预置请求的功能
  3. 返回有关如何访问预置资源的信息

然后,此信息作为环境变量传递给依赖服务。

提示

如果您在 Compose 中使用 AI 模型,请改用models 顶级元素

使用提供商服务的好处

在 Compose 应用程序中使用提供商服务具有以下几个优势:

  1. 简化配置:您无需手动配置和管理平台功能
  2. 声明式方法:您可以在一个地方声明所有应用程序的依赖项
  3. 一致的工作流程:您可以使用相同的 Compose 命令管理整个应用程序,包括平台功能

创建自己的提供商

如果您想创建自己的提供商以使用自定义功能扩展 Compose,您可以实现一个注册提供商类型的 Compose 插件。

有关如何创建和实现自己的提供商的详细信息,请参阅Compose 扩展文档
本指南解释了允许您向 Compose 添加新提供商类型的扩展机制。

参考

© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.