Docker コンテナーでデータ API ビルダーを実行する
データ API ビルダー (DAB) は、コンテナー イメージとして Microsoft Container Registry に発行されます。 Docker ホストは、コンテナー イメージをプルダウンし、最小限の構成で DAB を実行できます。 このガイドでは、コンテナー イメージとローカル構成ファイルを使用して、追加のツールをインストールすることなく、DAB をすばやくホストして実行します。
前提条件
- Docker
- データベース クライアント (SQL Server Management Studio、Azure Data Studio など)
- クライアントがインストールされていない場合は、Azure Data Studio をインストールします
サンプル データの作成
この短いガイドでは、数行のデータを含む単純なテーブルで、Docker コンテナーで DAB を使用する方法を示すことができます。 さらに簡略化するために、Docker コンテナー イメージで linux 用のSQL Serverを使用します。
コンテナー イメージをプルします
mcr.microsoft.com/mssql/server:2022-latest
。docker pull mcr.microsoft.com/mssql/server:2022-latest
ポートを発行し
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
重要
これは、このガイドの単純な架空のパスワードです。 実際には、異なる認証メカニズムを使用し、理想的には別のアカウントを使用します。
任意のクライアントまたはツールを使用して SQL サーバーに接続します。 接続文字列は、
Server=localhost,1433;User Id=sa;Password=<your-password>;TrustServerCertificate=true;
です。という名前
Library
の新しいデータベースがまだ存在しない場合は、Createします。IF NOT EXISTS(SELECT name FROM sys.databases WHERE name = 'Library') BEGIN CREATE DATABASE Library; END GO USE Library
、および 列を使用して という名前
Books
のテーブルをyear
id
title
Createします。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
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
単純な
SELECT *
クエリを使用してデータをテストします。SELECT * FROM dbo.Books
構成ファイルの作成
前の手順で作成したテーブルにマップされる構成ファイルをCreateします。 この構成ファイルでは、REST エンドポイントと GraphQL エンドポイントを実際のデータにマップする方法を DAB に説明します。
dab-config.json
という名前でファイルを作成します。ヒント
これは、構成ファイルの既定のファイル名です。 既定のファイル名を使用すると、コンテナーの実行時に構成ファイルを指定する必要がなくなります。
この 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 が構成ファイルを読み取ることができるようにディレクトリをマウントします。
Docker コンテナー イメージを
mcr.microsoft.com/azure-databases/data-api-builder
プルします。docker pull mcr.microsoft.com/azure-databases/data-api-builder
ポートを発行するコンテナーを
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
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 経由でサーバーに接続するように強制して、要求をコンテナーに転送する前に通信チャネルが暗号化されるようにすることもできます。