Köra Data API Builder i en Docker-container
Data API Builder (DAB) publiceras som en containeravbildning till Microsoft Container Registry. Alla Docker-värdar kan hämta containeravbildningen och köra DAB med minimal konfiguration. Den här guiden använder containeravbildningen och en lokal konfigurationsfil för att snabbt vara värd för och köra DAB utan att behöva installera några extra verktyg.
Förutsättningar
- Docker
- En databasklient (SQL Server Management Studio, Azure Data Studio osv.)
- Om du inte har en klient installerad installerar du Azure Data Studio
Skapa exempeldata
I den här korta guiden räcker det med en enkel tabell med några rader med data för att demonstrera hur du använder DAB i en Docker-container. För att förenkla saker och ting ytterligare använder vi SQL Server för Linux i en Docker-containeravbildning.
Hämta containeravbildningen
mcr.microsoft.com/mssql/server:2022-latest
.docker pull mcr.microsoft.com/mssql/server:2022-latest
Kör containeravbildningen
1433
och publicera porten och angesa
kontots lösenord till ett unikt lösenord som du använder i den här guiden.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
Viktigt
Det här är ett enkelt fiktivt lösenord för den här guiden. I verkligheten skulle du använda en annan autentiseringsmekanism och helst ett annat konto.
Anslut till SQL-servern med den klient eller det verktyg du föredrar. Anslutningssträng är
Server=localhost,1433;User Id=sa;Password=<your-password>;TrustServerCertificate=true;
.Skapa en ny databas med namnet
Library
om den inte redan finns.IF NOT EXISTS(SELECT name FROM sys.databases WHERE name = 'Library') BEGIN CREATE DATABASE Library; END GO USE Library
Skapa en tabell med namnet
Books
medid
kolumnerna ,title
, och .pages
year
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
Infoga fyra exempelboksrader i
Books
tabellen.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
Testa dina data med en enkel
SELECT *
fråga.SELECT * FROM dbo.Books
Skapa konfigurationsfilen
Skapa en konfigurationsfil som mappar till tabellen som skapades i föregående steg. Den här konfigurationsfilen beskriver för DAB hur du mappar REST- och GraphQL-slutpunkter till dina faktiska data.
Skapa en fil som heter
dab-config.json
.Tips
Detta är standardfilnamnet för konfigurationsfiler. Genom att använda standardfilnamnet undviker du att behöva ange konfigurationsfilen när du kör containern.
Lägg till det här JSON-innehållet i filen. Den här konfigurationen skapar en enda entitet med namnet
book
mappad till den befintligadbo.Books
tabellen.{ "$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" } ] } } }
Hämta och köra Docker-containeravbildningen
Kör DAB med dockercontaineravbildningen som finns i Microsoft Container Registry. När du kör containeravbildningen monterar du en katalog så att DAB kan läsa konfigurationsfilen.
Hämta Docker-containeravbildningen
mcr.microsoft.com/azure-databases/data-api-builder
.docker pull mcr.microsoft.com/azure-databases/data-api-builder
Kör containern som publicerar
5000
porten och bind montering avdab-config.json
filen.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
Använd en webbläsare för att navigera till
http://localhost:5000/api/book
. Utdata ska vara en JSON-matris med bokobjekt från REST API-slutpunkten.{ "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 } ] }
Anteckning
Den här guiden använder en HTTP-anslutning. När du kör en Data API Builder-container i Docker ser du att endast HTTP-slutpunkten är mappad. Om du vill att Docker-containern ska ha stöd för HTTPS för lokal utveckling måste du ange ett eget SSL/TLS-certifikat och privata nyckelfiler som krävs för SSL/TLS-kryptering och exponera HTTPS-porten. En omvänd proxy kan också användas för att framtvinga att klienter ansluter till servern via HTTPS för att säkerställa att kommunikationskanalen krypteras innan begäran vidarebefordras till containern.