次の方法で共有


Docker コンテナーでデータ API ビルダーを実行する

データ API ビルダー (DAB) は、コンテナー イメージとして Microsoft Container Registry に発行されます。 Docker ホストは、コンテナー イメージをプルダウンし、最小限の構成で DAB を実行できます。 このガイドでは、コンテナー イメージとローカル構成ファイルを使用して、追加のツールをインストールすることなく、DAB をすばやくホストして実行します。

前提条件

サンプル データの作成

この短いガイドでは、数行のデータを含む単純なテーブルで、Docker コンテナーで DAB を使用する方法を示すことができます。 さらに簡略化するために、Docker コンテナー イメージで linux 用のSQL Serverを使用します。

  1. コンテナー イメージをプルします mcr.microsoft.com/mssql/server:2022-latest

    docker pull mcr.microsoft.com/mssql/server:2022-latest
    
  2. ポートを発行し 1433 、このガイド全体で使用する一意の sa パスワードにアカウント パスワードを設定するコンテナー イメージを実行します。

    docker run \
        --name mssql \
        --publish 1433:1433 \
        --detach \
        --env "ACCEPT_EULA=Y" \
        --env "MSSQL_SA_PASSWORD=<your-password>" \
        mcr.microsoft.com/mssql/server:2022-latest
    

    重要

    これは、このガイドの単純な架空のパスワードです。 実際には、異なる認証メカニズムを使用し、理想的には別のアカウントを使用します。

  3. 任意のクライアントまたはツールを使用して SQL サーバーに接続します。 接続文字列は、Server=localhost,1433;User Id=sa;Password=<your-password>;TrustServerCertificate=true; です。

  4. という名前Libraryの新しいデータベースがまだ存在しない場合は、Createします。

    IF NOT EXISTS(SELECT name FROM sys.databases WHERE name = 'Library')
    BEGIN
        CREATE DATABASE Library;
    END
    GO
    
    USE Library
    
  5. 、および 列を使用して という名前BooksのテーブルをyearidtitleCreateします。pages

    DROP TABLE IF EXISTS dbo.Books;
    
    CREATE TABLE dbo.Books
    (
        id int NOT NULL PRIMARY KEY,
        title nvarchar(1000) NOT NULL,
        [year] int null,
        [pages] int null
    )
    GO
    
  6. 4 つのサンプルブック行をテーブルに Books 挿入します。

    INSERT INTO dbo.Books VALUES
        (1000, 'Practical Azure SQL Database for Modern Developers', 2020, 326),
        (1001, 'SQL Server 2019 Revealed: Including Big Data Clusters and Machine Learning', 2019, 444),
        (1002, 'Azure SQL Revealed: A Guide to the Cloud for SQL Server Professionals', 2020, 528),
        (1003, 'SQL Server 2022 Revealed: A Hybrid Data Platform Powered by Security, Performance, and Availability', 2022, 506)
    GO
    
  7. 単純な SELECT * クエリを使用してデータをテストします。

    SELECT * FROM dbo.Books
    

構成ファイルの作成

前の手順で作成したテーブルにマップされる構成ファイルをCreateします。 この構成ファイルでは、REST エンドポイントと GraphQL エンドポイントを実際のデータにマップする方法を DAB に説明します。

  1. dab-config.json という名前でファイルを作成します。

    ヒント

    これは、構成ファイルの既定のファイル名です。 既定のファイル名を使用すると、コンテナーの実行時に構成ファイルを指定する必要がなくなります。

  2. この JSON コンテンツをファイルに追加します。 この構成では、既存dbo.Booksのテーブルにマップされた という名前bookの 1 つのエンティティが作成されます。

    {
      "$schema": "https://github.com/Azure/data-api-builder/releases/latest/download/dab.draft.schema.json",
      "data-source": {
        "database-type": "mssql",
        "connection-string": "Server=host.docker.internal\\mssql,1433;Initial Catalog=Library;User Id=sa;Password=<your-password>;TrustServerCertificate=true;"
      },
      "runtime": {
        "rest": {
          "enabled": true
        },
        "graphql": {
          "enabled": true
        }
      },
      "entities": {
        "book": {
          "source": "dbo.Books",
          "permissions": [
            {
              "actions": [
                "read"
              ],
              "role": "anonymous"
            }
          ]
        }
      }
    }
    

Docker コンテナー イメージをプルして実行する

Microsoft Container Registry でホストされている Docker コンテナー イメージを使用して DAB を実行します。 コンテナー イメージを実行する場合は、DAB が構成ファイルを読み取ることができるようにディレクトリをマウントします。

  1. Docker コンテナー イメージを mcr.microsoft.com/azure-databases/data-api-builder プルします。

    docker pull mcr.microsoft.com/azure-databases/data-api-builder
    
  2. ポートを発行するコンテナーを 5000 実行し、ファイルのマウントをバインドします dab-config.json

    docker run \
        --name dab \
        --publish 5000:5000 \
        --detach \
        --mount type=bind,source=$(pwd)/dab-config.json,target=/App/dab-config.json,readonly \
        mcr.microsoft.com/azure-databases/data-api-builder
    
  3. Web ブラウザーを使用して に移動します http://localhost:5000/api/book。 出力は、REST API エンドポイントからの書籍項目の JSON 配列である必要があります。

    {
      "value": [
        {
          "id": 1000,
          "title": "Practical Azure SQL Database for Modern Developers",
          "year": 2020,
          "pages": 326
        },
        {
          "id": 1001,
          "title": "SQL Server 2019 Revealed: Including Big Data Clusters and Machine Learning",
          "year": 2019,
          "pages": 444
        },
        {
          "id": 1002,
          "title": "Azure SQL Revealed: A Guide to the Cloud for SQL Server Professionals",
          "year": 2020,
          "pages": 528
        },
        {
          "id": 1003,
          "title": "SQL Server 2022 Revealed: A Hybrid Data Platform Powered by Security, Performance, and Availability",
          "year": 2022,
          "pages": 506
        }
      ]
    }
    

    注意

    このガイドでは、HTTP 接続を使用します。 Docker で Data API ビルダー コンテナーを実行すると、HTTP エンドポイントのみがマップされていることがわかります。 ローカル開発のために Docker コンテナーで HTTPS をサポートする場合は、SSL/TLS 暗号化に必要な独自の SSL/TLS 証明書と秘密キー ファイルを指定し、HTTPS ポートを公開する必要があります。 リバース プロキシを使用して、クライアントが HTTPS 経由でサーバーに接続するように強制して、要求をコンテナーに転送する前に通信チャネルが暗号化されるようにすることもできます。