Eseguire il generatore di API dati in un contenitore Docker
Il generatore di API dati (DAB) viene pubblicato come immagine del contenitore nel Registro Contenitori Microsoft. Qualsiasi host Docker può eseguire il pull verso il basso dell'immagine del contenitore ed eseguire DAB con una configurazione minima. Questa guida usa l'immagine del contenitore e un file di configurazione locale per ospitare ed eseguire rapidamente DAB senza la necessità di installare strumenti aggiuntivi.
Prerequisiti
- Docker
- Un client di database (SQL Server Management Studio, Azure Data Studio e così via)
- Se non è installato un client, installare Azure Data Studio
Creare dati di esempio
Per questa breve guida, una tabella semplice con poche righe di dati è sufficiente per illustrare come usare DAB in un contenitore Docker. Per semplificare ulteriormente le operazioni, viene usato SQL Server per Linux in un'immagine del contenitore Docker.
Eseguire il pull dell'immagine del
mcr.microsoft.com/mssql/server:2022-latest
contenitore.docker pull mcr.microsoft.com/mssql/server:2022-latest
Eseguire l'immagine del contenitore che pubblica la
1433
porta e impostare lasa
password dell'account su una password univoca usata in questa guida.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
Importante
Si tratta di una semplice password fittizia per questa guida. Nel mondo reale si userebbe un meccanismo di autenticazione diverso e idealmente un account diverso.
Connettersi al server SQL usando il client o lo strumento preferito. La stringa di connessione è
Server=localhost,1433;User Id=sa;Password=<your-password>;TrustServerCertificate=true;
.Create un nuovo database denominato
Library
se non esiste già.IF NOT EXISTS(SELECT name FROM sys.databases WHERE name = 'Library') BEGIN CREATE DATABASE Library; END GO USE Library
Create una tabella denominata
Books
conid
colonne ,title
,year
epages
.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
Inserire quattro righe di libri di esempio nella
Books
tabella.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
Testare i dati con una query semplice
SELECT *
.SELECT * FROM dbo.Books
Creare il file di configurazione
Create un file di configurazione mappato alla tabella creata nei passaggi precedenti. Questo file di configurazione descrive a DAB come eseguire il mapping degli endpoint REST e GraphQL ai dati effettivi.
Creare un file denominato
dab-config.json
.Suggerimento
Si tratta del nome file predefinito per i file di configurazione. Usando il nome file predefinito, evitare di dover specificare il file di configurazione durante l'esecuzione del contenitore.
Aggiungere questo contenuto JSON al file. Questa configurazione crea una singola entità denominata
book
mappata alla tabella esistentedbo.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" } ] } } }
Eseguire il pull ed eseguire l'immagine del contenitore Docker
Eseguire DAB usando l'immagine del contenitore Docker ospitata in Registro Contenitori Microsoft. Quando si esegue l'immagine del contenitore, montare una directory in modo che DAB possa leggere il file di configurazione.
Eseguire il pull dell'immagine del
mcr.microsoft.com/azure-databases/data-api-builder
contenitore Docker.docker pull mcr.microsoft.com/azure-databases/data-api-builder
Eseguire il contenitore che pubblica la
5000
porta e associare il montaggio deldab-config.json
file.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
Usare un Web browser per passare a
http://localhost:5000/api/book
. L'output deve essere una matrice JSON di elementi del libro dall'endpoint dell'API REST.{ "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 } ] }
Nota
Questa guida usa una connessione HTTP. Quando si esegue un contenitore di Generatore API dati in Docker, si noterà che viene eseguito il mapping solo dell'endpoint HTTP. Se si vuole che il contenitore Docker supporti HTTPS per lo sviluppo locale, è necessario fornire il proprio certificato SSL/TLS e i file di chiave privata necessari per la crittografia SSL/TLS ed esporre la porta HTTPS. È anche possibile usare un proxy inverso per imporre che i client si connettano al server tramite HTTPS per assicurarsi che il canale di comunicazione sia crittografato prima di inoltrare la richiesta al contenitore.