Запуск построителя API данных в контейнере Docker
Построитель API данных (DAB) публикуется в реестре контейнеров Майкрософт в виде образа контейнера. Любой узел Docker может извлечь образ контейнера и запустить DAB с минимальной конфигурацией. В этом руководстве используются образ контейнера и локальный файл конфигурации для быстрого размещения и запуска DAB без необходимости установки дополнительных средств.
Предварительные требования
- Docker
- Клиент базы данных (SQL Server Management Studio, Azure Data Studio и т. д.)
- Если у вас не установлен клиент, установите Azure Data Studio.
Создание примера набора данных
В этом кратком руководстве достаточно простой таблицы с несколькими строками данных, чтобы продемонстрировать, как использовать DAB в контейнере Docker. Чтобы упростить работу, мы используем SQL Server для Linux в образе контейнера Docker.
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 с помощью предпочитаемого клиента или средства. Используйте следующую строку подключения:
Server=localhost,1433;User Id=sa;Password=<your-password>;TrustServerCertificate=true;
.Create новую базу данных с именем
Library
, если она еще не существует.IF NOT EXISTS(SELECT name FROM sys.databases WHERE name = 'Library') BEGIN CREATE DATABASE Library; END GO USE Library
Create таблицу
Books
со столбцами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 ) GO
Вставьте в таблицу
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 файл конфигурации, который сопоставляется с таблицей, созданной на предыдущих шагах. В этом файле конфигурации dab описывается, как сопоставить конечные точки REST и GraphQL с фактическими данными.
Создайте файл с именем
dab-config.json
.Совет
Это имя файла по умолчанию для файлов конфигурации. Используя имя файла по умолчанию, можно избежать необходимости указывать файл конфигурации при запуске контейнера.
Добавьте это содержимое JSON в файл. Эта конфигурация создает одну сущность с именем
book
, сопоставленную с существующейdbo.Books
таблицей.{ "$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 с помощью образа контейнера Docker, размещенного в Реестре контейнеров Майкрософт. При запуске образа контейнера подключите каталог, чтобы DAB смог прочитать файл конфигурации.
mcr.microsoft.com/azure-databases/data-api-builder
Извлеките образ контейнера Docker.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
Используйте веб-браузер для перехода по адресу
http://localhost:5000/api/book
. Выходные данные должны быть массивом JSON элементов книги из конечной точки REST API.{ "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-подключение. При запуске контейнера построителя API данных в Docker вы увидите, что сопоставлена только конечная точка HTTP. Если вы хотите, чтобы контейнер Docker поддерживал HTTPS для локальной разработки, необходимо предоставить собственный SSL/TLS-сертификат и файлы закрытого ключа, необходимые для шифрования SSL/TLS, и предоставить порт HTTPS. Обратный прокси-сервер также можно использовать для принудительного подключения клиентов к серверу по протоколу HTTPS, чтобы обеспечить шифрование канала связи перед перенаправлением запроса в контейнер.