共用方式為


將數據 API 產生器部署至 Azure Container Apps

在部署指南序列中的當前位置(‘發布’)的示意圖。

部署指南順序的圖表,包括這些位置,依序排列:概觀、計劃、準備、發佈、監視和優化。 「發佈」位置目前已突出顯示。

先決條件

建置組態檔

若要開始,請建置數據 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-aca。 本指南中的所有螢幕快照都會使用此名稱。

  3. 建立 Azure 記憶體帳戶。 使用這些設定來設定帳戶。

    設定 價值
    資源群組 選取您稍早建立的資源群組
    記憶體帳戶名稱 輸入全域唯一名稱
    區域 選取 Azure 區域
    效能 選擇 標準
    備援 選取 本地冗餘儲存 (LRS)
    啟用記憶體帳戶金鑰存取 選擇已啟用

    Azure 入口網站中 [建立記憶體帳戶] 頁面 [進階] 索引卷標的螢幕快照。

  4. 導覽到 Azure 入口網站中的新儲存帳戶。

  5. 在資源功能表的 [數據記憶體] 區段中,選取 [檔案共用]。 然後,從命令行選取 [檔案共用],以在記憶體帳戶中建立新的共用。 使用下列設定來設定新的檔案共用。

    設定 價值
    名稱 輸入 config
    存取層 選擇 熱門
    啟用備份 請勿選取

    Azure 入口網站中 [檔案分享] 資源功能表和命令行選項的螢幕快照。

  6. dab-config.json 和任何其他必要檔案上傳至共用。 使用命令行中的 [上傳] 選項,開啟 [上傳檔案] 對話框。 選取這兩個檔案,然後選取 上傳

    Azure 入口網站中 [上傳檔案] 對話框的螢幕快照。

  7. 在資源功能表的 [安全性 + 網络] 區段中,選取 [存取密鑰]。 然後,記錄此頁面上的 儲存帳戶名稱金鑰值。 您稍後將在本指南中使用這些值。

    Azure 入口網站中記憶體帳戶內 [存取密鑰] 頁面的螢幕快照。

建立基底容器應用程式

現在,使用 Azure Container Apps 在 Azure 中建立容器。 此容器會裝載沒有設定的數據 API 產生器映像。

  1. 建立 Azure Container Apps 資源。 在建立應用程式資源的過程中,您必須建立環境。 使用這些設定來設定這兩個資源。

    資源 設定 價值
    環境 環境名稱 輸入全域唯一名稱
    環境 環境類型 僅選取 [取用]
    環境 日誌目的地 選取 [不要儲存記錄]
    應用程式 資源群組 選取您稍早建立的資源群組
    應用程式 記憶體帳戶名稱 輸入全域唯一名稱
    應用程式 區域 選取與記憶體帳戶相同的區域
    應用程式 使用快速入門映像 不要選擇
    應用程式 影像來源 選取 Docker Hub 或其他註冊表
    應用程式 影像類型 選取 公用
    應用程式 註冊登入伺服器 輸入 mcr.microsoft.com
    應用程式 映像與標籤 輸入 azure-databases/data-api-builder:latest
    應用程式 環境變數 - 名稱 輸入 DATABASE_CONNECTION_STRING
    應用程式 環境變數 - 值 輸入資料庫的連接字串。
    應用程式 Ingress 確定已選取 [已啟用]
    應用程式 輸入流量 選擇接受來自任何地方的流量
    應用程式 用戶端憑證模式 選取 [忽略]
    應用程式 輸入類型 選取 HTTP
    應用程式 目標連接埠 輸入 5000

    Azure 入口網站中 [建立容器應用程式] 頁面 [容器] 索引標籤的螢幕快照。

    Azure 入口網站中 [建立容器應用程式環境] 頁面 [基本] 索引標籤的螢幕快照。

    小提示

    我們建議使用不包含授權金鑰的連接字串。 請改用受控識別和角色型訪問控制來管理資料庫與主機之間的存取權。 如需詳細資訊,請參閱 使用受控識別的 Azure 服務

  2. 在 Azure 入口網站中瀏覽至新的容器應用程式。

  3. 使用 [基本資訊] 區段中的 [應用程式 URL] 欄位,流覽至容器應用程式的網站。 觀察回應,指出 DAB 容器正在運行,且狀態 正常

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

    備註

    版本號碼和名稱會根據您的目前數據 API 產生器版本而有所不同。 此時,您無法巡覽至任何 API 端點。 掛接 DAB 組態檔之後,即可使用這些端點。

掛接組態檔

最後,將組態檔從 Azure 檔案共用掛接至容器應用程式。 此步驟可讓數據 API 產生器使用組態檔來連線到您的資料庫。

  1. 使用 Azure 入口網站流覽至先前在本指南中建立的容器環境。

  2. 在資源功能表的 [設定] 區段中,選取 [Azure 檔案]。 然後,從命令行選取 [ 新增 ],將現有的檔案共用新增至容器環境。 使用下列設定來設定新的檔案共用。 然後 儲存 新的檔案共享組態。

    設定 價值
    名稱 輸入 config-share
    記憶體帳戶名稱 本指南稍早記錄的記憶體帳戶名稱。
    儲存體帳戶金鑰 本指南稍早記錄的記憶體帳戶金鑰。
    檔案共用 輸入 config
    存取模式 選取 [只讀]

    Azure 入口網站內資源功能表中 [Azure 檔案] 選項的螢幕快照。

  3. 在 Azure 入口網站中再次流覽至容器應用程式。

  4. 在資源功能表的 [應用程式] 區段中,選取 [修訂和複本]。 然後,從命令行選取 [建立新修訂],以開始為容器應用程式設定新修訂的程式。

  5. 流覽至 [磁碟區] 區段,然後選取 [新增] 選項。 使用下列設定來設定新的磁碟區。 設定磁碟區之後,請將磁碟區新增至容器修訂。

    設定 價值
    磁碟區類型 選擇 Azure 檔案磁碟區
    名稱 輸入 config-volume
    檔案共用 輸入 config

    Azure 入口網站中 [建立新磁碟區] 區段的螢幕快照。

  6. 流覽至 [容器] 區段,選取單一目前的容器,然後選取 [ 編輯 ] 選項。 使用下列設定來為容器配置兩個掛載點。 儲存您的變更。

    設定 價值
    磁碟區名稱 輸入 config-volume
    裝載路徑 輸入 /App/dab-config.json
    子路徑 輸入 dab-config.json
    設定 價值
    磁碟區名稱 輸入 config-volume
    裝載路徑 輸入 /App/schema.graphql
    子路徑 輸入 schema.graphql

    Azure 入口網站中 [新增磁碟區掛接] 區段的螢幕快照。

  7. 選取 [建立 ] 以使用您指定的磁碟區掛接來建立新的修訂。 等待修訂完成部署。

  8. 使用 [基本資訊] 區段中的 [應用程式 URL] 欄位,再次流覽至容器應用程式的網站。 觀察回應仍然表示 DAB 容器狀況 良好

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

清理資源

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

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

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

後續步驟