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