Data API Builder uitvoeren in een Docker-container
Data API Builder (DAB) wordt als een containerinstallatiekopieën gepubliceerd naar Microsoft Container Registry. Elke Docker-host kan de containerinstallatiekopie verwijderen en DAB uitvoeren met minimale configuratie. In deze handleiding wordt gebruikgemaakt van de containerinstallatiekopie en een lokaal configuratiebestand om DAB snel te hosten en uit te voeren zonder extra hulpprogramma's te hoeven installeren.
Vereisten
- Docker
- Een databaseclient (SQL Server Management Studio, Azure Data Studio, enzovoort)
- Als u geen client hebt geïnstalleerd, installeert u Azure Data Studio
Voorbeeldgegevens maken
Voor deze korte handleiding is een eenvoudige tabel met enkele rijen met gegevens voldoende om te laten zien hoe u DAB gebruikt in een Docker-container. Ter vereenvoudiging gebruiken we SQL Server voor Linux in een Docker-containerinstallatiekopieën.
Haal de
mcr.microsoft.com/mssql/server:2022-latest
containerinstallatiekopie op.docker pull mcr.microsoft.com/mssql/server:2022-latest
Voer de containerinstallatiekopieën uit die de
1433
poort publiceren en hetsa
accountwachtwoord instellen op een uniek wachtwoord dat u in deze handleiding gebruikt.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
Belangrijk
Dit is een eenvoudig wachtwoord voor deze handleiding. In de praktijk zou u een ander verificatiemechanisme en idealiter een ander account gebruiken.
Maak verbinding met de SQL-server met behulp van de client of het hulpprogramma van uw voorkeur. De verbindingsreeks is
Server=localhost,1433;User Id=sa;Password=<your-password>;TrustServerCertificate=true;
.Creatie een nieuwe database met de naam
Library
als deze nog niet bestaat.IF NOT EXISTS(SELECT name FROM sys.databases WHERE name = 'Library') BEGIN CREATE DATABASE Library; END GO USE Library
Creatie een tabel met de naam
Books
,id
title
,year
enpages
kolommen.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
Voeg vier rijen met voorbeeldboeken in de
Books
tabel in.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
Test uw gegevens met een eenvoudige
SELECT *
query.SELECT * FROM dbo.Books
Een configuratiebestand maken
Creatie een configuratiebestand dat is toegewezen aan de tabel die u in de vorige stappen hebt gemaakt. In dit configuratiebestand wordt aan DAB beschreven hoe u REST- en GraphQL-eindpunten toewijst aan uw werkelijke gegevens.
Maak een bestand met de naam
dab-config.json
.Tip
Dit is de standaardbestandsnaam voor configuratiebestanden. Door de standaardbestandsnaam te gebruiken, voorkomt u dat u het configuratiebestand moet opgeven bij het uitvoeren van de container.
Voeg deze JSON-inhoud toe aan uw bestand. Met deze configuratie wordt één entiteit met de naam
book
gemaakt die is toegewezen aan de bestaandedbo.Books
tabel.{ "$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" } ] } } }
De Docker-containerinstallatiekopie ophalen en uitvoeren
Voer DAB uit met behulp van de Docker-containerinstallatiekopie die wordt gehost op Microsoft Container Registry. Wanneer u de containerinstallatiekopieën uitvoert, koppelt u een map, zodat DAB het configuratiebestand kan lezen.
Haal de
mcr.microsoft.com/azure-databases/data-api-builder
Docker-containerinstallatiekopie op.docker pull mcr.microsoft.com/azure-databases/data-api-builder
Voer de container uit om de
5000
poort te publiceren en hetdab-config.json
bestand te koppelen.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
Gebruik een webbrowser om naar te
http://localhost:5000/api/book
navigeren. De uitvoer moet een JSON-matrix van boekitems van het REST API-eindpunt zijn.{ "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 } ] }
Notitie
Deze handleiding maakt gebruik van een HTTP-verbinding. Wanneer u een Data API Builder-container uitvoert in Docker, ziet u dat alleen het HTTP-eindpunt is toegewezen. Als u wilt dat uw Docker-container HTTPS ondersteunt voor lokale ontwikkeling, moet u uw eigen SSL/TLS-certificaat en persoonlijke sleutelbestanden opgeven die vereist zijn voor SSL/TLS-versleuteling en de HTTPS-poort beschikbaar maken. Een omgekeerde proxy kan ook worden gebruikt om af te dwingen dat clients verbinding maken met uw server via HTTPS om ervoor te zorgen dat het communicatiekanaal wordt versleuteld voordat de aanvraag naar uw container wordt doorgestuurd.