使用 Docker 支持以任何语言部署容器化应用

Azure 开发人员 CLI (azd) 支持 Docker 作为语言,允许你定义使用 Dockerfile 构建和部署的服务。 如果你的应用是用 azd 没有内置支持的语言(例如 Go、Rust、Ruby、PHP 或 Kotlin)编写的,则可以使用 Docker 作为语言生成并将其部署到Azure。 通过将 Docker 指定为语言,可以完全控制容器化过程,使其非常适合:

  • Go、Rust、Ruby、PHP、Kotlin 和其他语言,无需内置 azd 支持
  • Polyglot 应用程序(例如,使用Python和 Node.js的服务)
  • 想要减少本地依赖项以运行模板的方案
  • 具有自定义 OS 或运行时要求的工作负荷
  • 将基于 Docker 的现有项目迁移到 Azure

例如,如果你有一个以 Go 编写的应用,并且想要使用 azd 将其部署到Azure 容器应用,则可以为 Go 服务定义 Dockerfile 并配置 azd 以使用它。

在 azure.yaml 中将 Docker 配置为语言

若要将 Docker 用于 Go 应用、Rust 应用或任何其他服务,请将language属性dockerazure.yaml设置为文件中,并指定 Dockerfile 的路径:

services:
  myservice:
    project: ./src/myservice
    language: docker
    docker:
      path: ./Dockerfile

使用此配置, azd 使用指定的 Dockerfile 来生成和部署服务。 此方法适用于可容器化的任何语言或运行时。

示例方案

hello-azd初学者模板演示如何将 Docker 用作与远程生成结合使用的语言。 在 azure.yaml 文件中,模板设置 language: docker 并指定 remoteBuild: true:

metadata:
  template: hello-azd-dotnet
name: azd-starter
services:
  web:
    project: ./src
    language: docker
    host: containerapp
    docker:
      path: ./Dockerfile
      remoteBuild: true

此配置允许用户运行模板并在 Azure 容器注册表中生成容器映像,即使它们未在本地安装 .NET 或 Docker。 生成过程完全在云中处理,使开发人员无需设置本地依赖项或生成工具即可轻松入门。

通过利用远程生成, hello-azd 该模板可确保所有用户(无论其本地环境如何)都一致且简化的体验。

后续步骤