使用默认的 Compose Bridge 转换

Requires: Docker Desktop 4.43.0 and later

Compose Bridge 包含一个内置的转换功能,可以自动将您的 Compose 配置转换为一套 Kubernetes 清单文件。

基于您的 compose.yaml 文件,它会生成:

  • 一个 Namespace,以便所有您的资源都被隔离,不会与其他部署的资源发生冲突。
  • 一个 ConfigMap,其中为您的 Compose 应用程序中的每个 config 资源都包含一个条目。
  • 为应用程序服务生成 Deployments。这可以确保在 Kubernetes 集群中维护指定数量的应用程序实例。
  • 为您的服务暴露的端口生成 Services,用于服务间通信。
  • 为您的服务发布的端口生成 Services,其类型为 LoadBalancer,以便 Docker Desktop 也在主机上暴露相同的端口。
  • Network policies 用于复制在您的 compose.yaml 文件中定义的网络拓扑。
  • 为您的卷生成 PersistentVolumeClaims,使用 hostpath 存储类,以便 Docker Desktop 管理卷的创建。
  • Secrets 包含经过编码的机密信息。这专为测试环境中的本地使用而设计。

它还提供了一个专用于 Docker Desktop 的 Kustomize overlay,其中包含:

  • Loadbalancer 用于需要在主机上暴露端口的服务。
  • 一个 PersistentVolumeClaim,用于使用 Docker Desktop 的存储供应器 desktop-storage-provisioner 来更有效地处理卷的供应。
  • 一个 Kustomization.yaml 文件,用于将所有资源链接在一起。

如果您的 Compose 文件为某个服务定义了 models 部分,Compose Bridge 会自动配置您的部署,以便您的服务可以通过 Docker Model Runner 定位并使用其模型。

对于每个声明的模型,该转换会注入两个环境变量:

  • <MODELNAME>_URL:Docker Model Runner 提供该模型的端点
  • <MODELNAME>_MODEL:模型的名称或标识符

您可以选择使用 endpoint_varmodel_var 来自定义这些变量名。

默认转换会生成两种不同的 overlay - 一种用于使用本地 Docker Model Runner 实例的 Docker Desktop,另一种是 model-runner overlay,其中包含在 pod 中部署 Docker Model Runner 所需的所有相关 Kubernetes 资源。

环境 Endpoint
Docker Desktop http://host.docker.internal:12434/engines/v1/
Kubernetes http://model-runner/engines/v1/

更多详情,请参阅 使用 Model Runner

使用默认的 Compose Bridge 转换

要使用默认转换转换您的 Compose 文件:

$ docker compose bridge convert

Compose 会在当前目录中查找 compose.yaml 文件并生成 Kubernetes 清单文件。

示例输出:

$ docker compose -f compose.yaml bridge convert
Kubernetes resource backend-deployment.yaml created
Kubernetes resource frontend-deployment.yaml created
Kubernetes resource backend-expose.yaml created
Kubernetes resource frontend-expose.yaml created
Kubernetes resource 0-my-project-namespace.yaml created
Kubernetes resource default-network-policy.yaml created
Kubernetes resource backend-service.yaml created
Kubernetes resource frontend-service.yaml created
Kubernetes resource kustomization.yaml created
Kubernetes resource backend-deployment.yaml created
Kubernetes resource frontend-deployment.yaml created
Kubernetes resource backend-service.yaml created
Kubernetes resource frontend-service.yaml created
Kubernetes resource kustomization.yaml created
Kubernetes resource model-runner-configmap.yaml created
Kubernetes resource model-runner-deployment.yaml created
Kubernetes resource model-runner-service.yaml created
Kubernetes resource model-runner-volume-claim.yaml created
Kubernetes resource kustomization.yaml created

所有生成的文件都存储在您项目的 /out 目录中。

部署生成的清单文件

Important

在部署您的 Compose Bridge 转换之前,请确保您已在 Docker Desktop 中 启用 Kubernetes

清单文件生成后,将它们部署到本地 Kubernetes 集群:

$ kubectl apply -k out/overlays/desktop/
Tip

您可以从 Compose 文件查看器转换并部署您的 Compose 项目到 Kubernetes 集群。

请确保您已登录 Docker 账户,在 容器 视图中导航到您的容器,然后在右上角选择 查看配置,再选择 转换并部署到 Kubernetes

其他命令

转换位于另一个目录中的 compose.yaml 文件:

$ docker compose -f <path-to-file>/compose.yaml bridge convert

要查看所有可用的标志,请运行:

$ docker compose bridge convert --help

接下来做什么?