次の方法で共有


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

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

前提条件

サンプル データの作成

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

  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 という名前の新しいデータベースを作成します。

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

    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. Books テーブルに 4 つのサンプル ブック行を挿入します。

    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
    

構成ファイルを作成する

前の手順で作成したテーブルにマップする構成ファイルを作成します。 この構成ファイルでは、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. mcr.microsoft.com/azure-databases/data-api-builder Docker コンテナー イメージをプルします。

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