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

本指南介绍如何使用使用Azure 容器注册表生成的自定义容器映像将数据 API 生成器(DAB)部署到Azure 容器实例。 容器实例提供了在Azure中运行容器的快速方法,而无需管理虚拟机或采用业务流程协调程序。

部署到Azure 容器实例后的总体体系结构的Diagram 已完成。

先决条件

生成配置文件

首先,生成数据 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 文件的内容。 稍后在本指南中使用此文件。

生成自定义容器映像

dab-config.json的位置生成包含/App/dab-config.json的自定义映像。 从包含 dab-config.json的文件夹中运行这些命令。

  1. 创建新的资源组。 在本指南中,使用此资源组处理所有新资源。

    小窍门

    建议命名资源组 msdocs-dab-aci

  2. 创建 Azure 容器注册表(ACR)并生成映像。

    az acr create \
        --resource-group "<resource-group-name>" \
        --name "<registry-name>" \
        --sku Basic \
        --admin-enabled true
    
    # Create a Dockerfile that embeds dab-config.json
    cat <<'EOF' > Dockerfile
    FROM mcr.microsoft.com/azure-databases/data-api-builder:latest
    COPY dab-config.json /App/dab-config.json
    EOF
    
    # Build and push the image
    az acr build \
        --registry "<registry-name>" \
        --image "dab:1" \
        .
    
  3. 记录注册表登录服务器(<registry-name>.azurecr.io)和镜像标签(dab:1)。 创建容器实例时,可以使用这些值。

  4. 获取注册表用户名和密码。

    az acr credential show \
        --name "<registry-name>" \
        --query "{username:username,password:passwords[0].value}"
    

创建容器实例

使用 Azure 容器实例和自定义映像在 Azure 中创建容器。

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

    设置 价值
    资源组 使用之前创建的资源组
    容器名称 输入一个唯一且全局适用的名称
    Region 使用与资源组相同的区域
    SKU 使用 标准
    图像 输入 <registry-name>.azurecr.io/dab:1
    OS 类型 使用 Linux
    网络类型 使用 公共
    网络端口 输入 5000
    DNS 名称标签 输入全局唯一标签
    环境变量 输入DATABASE_CONNECTION_STRING和数据库的连接字符串。
    az container create \
        --resource-group "<resource-group-name>" \
        --name "<unique-container-instance-name>" \
        --image "<registry-name>.azurecr.io/dab:1" \
        --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>" \
        --registry-login-server "<registry-name>.azurecr.io" \
        --registry-username "<registry-username>" \
        --registry-password "<registry-password>"
    

    小窍门

    建议使用不包含授权密钥的连接字符串。 请改用托管标识和基于角色的访问控制来管理数据库和主机之间的访问。 有关详细信息,请参阅 使用托管标识的 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 生成器的当前版本而异。

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

清理资源

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

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

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

后续步骤