使用提供商服務

要求: 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 新增新提供商型別的擴充套件機制。

參考