将数据 API 生成器部署到 Azure 容器实例

部署指南序列中“发布”的当前位置图示。

部署指南序列图,包括以下位置:概述、计划、准备、发布、监视和优化。 当前“发布”位置已突出显示。

只需使用配置文件即可将数据 API 生成器快速部署到 Azure,无需自定义代码。 本指南包括将数据 API 生成器容器映像从 Docker 托管为 Azure 容器实例中的容器的步骤。

在本指南中,逐步讲解如何生成数据 API 生成器配置文件、在 Azure 文件中托管文件,然后将该文件装载到 Azure 容器实例中的容器。

先决条件

生成配置文件

首先,生成数据 API 生成器 (DAB) 配置文件以连接到现有数据库。 稍后将此文件与最终容器一起使用。

  1. 在本地计算机上创建一个空目录来存储配置文件。

  2. 使用 dab init.. 初始化新的基本配置文件。 在初始化时至少使用以下设置。

    设置 价值
    数据库类型 选择受支持的数据库类型。
    连接字符串 使用 @env() 函数引用 DATABASE_CONNECTION_STRING 环境变量。
    dab init --database-type "<database-type>" --connection-string "@env('DATABASE_CONNECTION_STRING')"
    

    重要

    某些数据库类型需要初始化时的其他配置设置。

  3. 将至少一个数据库实体添加到配置中。 使用dab add命令来配置实体。 配置每个实体以允许匿名用户的所有权限。 dab add对您的实体重复您想要的次数。

    dab add "<entity-name>" --source "<schema>.<table>" --permissions "anonymous:*"
    
  4. 打开并查看 dab-config.json 文件的内容。 稍后在本指南中使用此文件。

Azure 文件中的主机配置

接下来,将配置文件上传到在 Azure 文件中创建的文件共享。 此文件共享最终作为卷装载到最终容器。

  1. 登录到 Azure 门户(https://portal.azure.com)。

  2. 创建新的资源组。 你将使用此资源组来获取本指南中的所有新资源。

    Azure 门户中“创建资源组”页的“基本信息”选项卡的屏幕截图。

    小窍门

    建议命名资源组 msdocs-dab-aci。 本指南中的所有屏幕截图都使用此名称。

  3. 创建 Azure 存储帐户。 使用这些设置配置帐户。

    设置 价值
    资源组 选择之前创建的资源组
    存储帐户名称 输入一个唯一且全局适用的名称
    区域 选择 Azure 区域
    性能 选择“标准”
    冗余 选择“本地冗余存储(LRS)”
    启用存储帐户密钥访问 选择 “已启用”

    Azure 门户中“创建存储帐户”页的“高级”选项卡的屏幕截图。

  4. 导航到 Azure 门户中的新存储帐户。

  5. 在资源菜单的“数据存储”部分选择“文件共享”。 然后,从命令栏中选择 “文件共享 ”,以在存储帐户中创建新共享。 使用以下设置来配置新的文件共享。

    设置 价值
    名称 输入 config
    访问层 选择 “热”
    启用备份 请勿选择

    Azure 门户中“文件共享”资源菜单和命令栏选项的屏幕截图。

  6. dab-config.json 和其他任何必需的文件上传到共享。 使用命令栏中的 “上传 ”选项打开 “上传文件 ”对话框。 选择这两个文件,然后选择“ 上传”。

    Azure 门户中“上传文件”对话框的屏幕截图。

  7. 在资源菜单的“安全性 + 网络”部分选择“访问密钥”。 然后,记录此页面中的存储帐户名称和密钥值。 本指南稍后将使用这些值。

    Azure 门户中存储帐户中的“访问密钥”页的屏幕截图。

创建基础容器实例

最后,使用 Azure 容器实例在 Azure 中创建容器。 此容器托管带有配置文件的数据API构建器映像,以连接到您的数据库。

重要

目前,使用装载卷创建容器实例的唯一方法是使用 Azure CLI。

  1. 使用 az container create 创建 Azure 容器实例资源。 使用这些设置配置资源。

    设置 价值
    资源组 使用之前创建的资源组
    容器名称 输入一个唯一且全局适用的名称
    区域 使用与存储帐户相同的区域
    SKU 使用 标准
    图像类型 使用 公共
    图像 输入 mcr.microsoft.com/azure-databases/data-api-builder:latest
    OS 类型 使用 Linux
    网络类型 使用 公共
    网络端口 输入 5000
    DNS 名称标签 输入全局唯一标签
    环境变量 输入DATABASE_CONNECTION_STRING和数据库的连接字符串。
    az container create \
        --resource-group "<resource-group-name>" \
        --name "<unique-container-instance-name>" \
        --image "mcr.microsoft.com/azure-databases/data-api-builder:latest" \
        --location "<region>" \
        --sku "Standard" \
        --os-type "Linux" \
        --ip-address "public" \
        --ports "5000" \
        --dns-name-label "<unique-dns-label>" \
        --environment-variables "DATABASE_CONNECTION_STRING=<database-connection-string>" \
        --azure-file-volume-mount-path "/cfg" \
        --azure-file-volume-account-name "<storage-account-name>" \
        --azure-file-volume-account-key "<storage-account-key>" \
        --azure-file-volume-share-name "config" \
        --command-line "dotnet Azure.DataApiBuilder.Service.dll --ConfigFileName /cfg/dab-config.json"
        --
    

    小窍门

    建议使用不包含授权密钥的连接字符串。 请改用托管标识和基于角色的访问控制来管理数据库和主机之间的访问。 有关详细信息,请参阅 使用托管标识的 Azure 服务

  2. 使用 az container show 查询新容器实例的完全限定域名(FQDN)。 然后,浏览到容器实例的网站。

    az container show \
        --resource-group "<resource-group-name>" \
        --name "<unique-container-instance-name>" \
        --query "join('://', ['https', ipAddress.fqdn])" \
        --output "tsv"
    
  3. 观察指示 DAB 容器正在运行且状态 正常的响应。

    {
        "status": "healthy",
        "version": "1.1.7",
        "app-name": "dab_oss_1.1.7"
    }
    

    注释

    版本号和名称因数据 API 生成器的当前版本而异。 此时,无法导航到任何 API 终结点。 装载 DAB 配置文件后,这些终结点将可用。

  4. 导航到当前正在运行的应用程序的 /api/swagger 路径。 使用 Swagger UI 为其中一个实体发出 HTTP GET 请求。

清理资源

不再需要示例应用程序或资源时,请删除相应的部署和所有资源。

  1. 使用 Azure 门户导航到 资源组

  2. 命令栏中,选择“ 删除”。

后续步骤