Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Построитель API данных (DAB) публикуется как образ контейнера в реестре контейнеров Майкрософт. Любой хост Docker может загрузить образ контейнера и запустить DAB с минимальной настройкой. В этом руководстве используется образ контейнера и локальный файл конфигурации для быстрого размещения и запуска DAB без необходимости установки дополнительных средств.
Необходимые условия
Создание примера набора данных
В этом кратком руководстве достаточно простой таблицы с несколькими строками данных, чтобы продемонстрировать, как использовать DAB в контейнере Docker. Чтобы упростить работу, мы используем SQL Server для Linux в образе контейнера Docker.
Извлеките образ контейнера
mcr.microsoft.com/mssql/server:2022-latest.docker pull mcr.microsoft.com/mssql/server:2022-latestЗапустите образ контейнера, публикуя
1433порт и установив для учетной записи уникальный пароль, который вы будете использовать в этом руководстве.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;.Создайте новую базу данных с именем
Library, если она еще не существует.IF NOT EXISTS(SELECT name FROM sys.databases WHERE name = 'Library') BEGIN CREATE DATABASE Library; END GO USE LibraryСоздайте таблицу с именем
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
Создание файла конфигурации
Создайте файл конфигурации, который сопоставляется с таблицей, созданной на предыдущих шагах. Этот файл конфигурации описывает 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-config.json, а затем запустите образ локально.
Создайте Dockerfile в той же папке, что и
dab-config.json.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:1Используйте веб-браузер для перехода на
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-подключение. При запуске контейнера Data API Builder в Docker видно, что сопоставлена только конечная точка HTTP. Если вы хотите, чтобы контейнер Docker поддерживал HTTPS для локальной разработки, необходимо предоставить собственный SSL/TLS-сертификат и файлы закрытого ключа, необходимые для шифрования SSL/TLS и предоставить порт HTTPS. Обратный прокси-сервер также можно использовать для принудительного подключения клиентов к серверу через HTTPS, чтобы убедиться, что канал связи зашифрован перед пересылкой запроса в контейнер.
Определение порта
Построитель API данных определяет, какой HTTP-порт используется для внутренних операций (проверки работоспособности, внутренние вызовы HTTP) с помощью этого приоритета:
| Priority | Переменная среды | Примечания |
|---|---|---|
| 1 | ASPNETCORE_URLS |
Анализирует первый порт из списка URL-адресов (например, http://*:8080). |
| 2 | ASPNETCORE_HTTP_PORTS |
переменная контейнера .NET 8+ Использует первый указанный порт. |
| 3 | DEFAULT_PORT |
Резервный вариант для DAB. Не распознаётся в .NET или Контейнеры приложений Azure. |
| 4 | (не задано) | По умолчанию используется порт 5000. |
Если переменная задана, но содержит недопустимое значение, DAB переходит к следующему параметру.
| Сценарий | Используемый порт |
|---|---|
ASPNETCORE_URLS=http://*:8080 |
8080 |
ASPNETCORE_HTTP_PORTS=7071 |
7071 |
DEFAULT_PORT=6000 |
6000 |
| Нет набора переменных среды | 5000 |
Замечание
DEFAULT_PORT — это переменная среды, зависяющая от DAB. .NET, Контейнеры приложений Azure и другие платформы размещения не распознают его. Используйте его только в качестве резервного варианта для пользовательских сценариев развертывания.
Поддержка платформы
Образы контейнеров DAB создаются только для x86-64 (amd64). В настоящее время ARM64 не поддерживается.