將數據 API 產生器部署至 Azure 容器實例

本指南說明如何使用使用 Azure Container Registry 建置的自訂容器映像,將 Data API 建構器(DAB)部署到 Azure 容器執行個體。 容器執行個體 提供一種快速的方式,可以在 Azure 中運行容器,無需管理虛擬機器或採用編排器。

部署至Azure 容器執行個體後整體架構的示意圖已完成。

先決條件

建置組態檔

若要開始,請建置數據 API 產生器 (DAB) 組態檔,以連線到現有的資料庫。 此檔案稍後會與最終容器搭配使用。

  1. 在您的本機電腦上建立空的目錄來儲存組態檔。

  2. 使用 dab init初始化新的基底組態檔。 至少在初始化時使用下列設定。

    Setting 價值
    資料庫類型 選取支援的資料庫類型。
    連接字串 使用 @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 容器實例資源。 使用這些設定來設定資源。

    Setting 價值
    資源群組 使用您稍早建立的資源群組
    容器名稱 輸入全域唯一名稱
    區域 使用與資源群組相同的區域
    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"
    }
    

    備註

    版本號和名稱會依你目前的 Data API 建構器版本而有所不同。

  4. 流覽至目前執行中應用程式的 /api/swagger 路徑。 使用 Swagger UI 來發出其中一個實體的 HTTP GET 請求。

清理資源

當您不再需要範例應用程式或資源時,請移除對應的部署和所有資源。

  1. 使用 Azure 入口網站流覽至 資源群組。

  2. 在 命令列中,選取 [刪除]。

下一個步驟