Ausführen des Daten-API-Generators in einem Docker-Container
Data API Builder (DAB) wird als Containerimage in der Microsoft Container Registry veröffentlicht. Jeder Docker-Host kann das Containerimage abrufen und DAB mit minimaler Konfiguration ausführen. In diesem Leitfaden wird das Containerimage und eine lokale Konfigurationsdatei verwendet, um DAB schnell zu hosten und auszuführen, ohne dass zusätzliche Tools installiert werden müssen.
Voraussetzungen
- Docker
- Ein Datenbankclient (SQL Server Management Studio, Azure Data Studio usw.)
- Wenn Sie keinen Client installiert haben, installieren Sie Azure Data Studio.
Erstellen von Beispieldaten
Für diese kurze Anleitung reicht eine einfache Tabelle mit wenigen Datenzeilen aus, um die Verwendung von DAB in einem Docker-Container zu veranschaulichen. Um die Dinge weiter zu vereinfachen, verwenden wir SQL Server für Linux in einem Docker-Containerimage.
Ziehen Sie das
mcr.microsoft.com/mssql/server:2022-latest
Containerimage.docker pull mcr.microsoft.com/mssql/server:2022-latest
Führen Sie das Containerimage aus, um den
1433
Port zu veröffentlichen und dassa
Kontokennwort auf ein eindeutiges Kennwort festzulegen, das Sie in diesem Handbuch verwenden.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
Wichtig
Dies ist ein einfaches fiktives Kennwort für diesen Leitfaden. In der realen Welt würden Sie einen anderen Authentifizierungsmechanismus und idealerweise ein anderes Konto verwenden.
Stellen Sie mithilfe Ihres bevorzugten Clients oder Tools eine Verbindung mit dem SQL Server her. Die Verbindungszeichenfolge lautet
Server=localhost,1433;User Id=sa;Password=<your-password>;TrustServerCertificate=true;
.Create eine neue Datenbank namens,
Library
sofern sie noch nicht vorhanden ist.IF NOT EXISTS(SELECT name FROM sys.databases WHERE name = 'Library') BEGIN CREATE DATABASE Library; END GO USE Library
Create eine Tabelle mit den
Books
Spalten ,title
,year
undpages
aus.id
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
Fügen Sie vier Beispielbuchzeilen in die
Books
Tabelle ein.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
Testen Sie Ihre Daten mit einer einfachen
SELECT *
Abfrage.SELECT * FROM dbo.Books
Erstellen einer Konfigurationsdatei
Create eine Konfigurationsdatei, die der tabelle zugeordnet ist, die in den vorherigen Schritten erstellt wurde. In dieser Konfigurationsdatei wird für DAB beschrieben, wie Sie Ihren tatsächlichen Daten REST- und GraphQL-Endpunkte zuordnen.
Erstelle eine Datei mit dem Namen
dab-config.json
.Tipp
Dies ist der Standarddateiname für Konfigurationsdateien. Wenn Sie den Standarddateinamen verwenden, vermeiden Sie beim Ausführen des Containers die Konfigurationsdatei anzugeben.
Fügen Sie diesen JSON-Inhalt ihrer Datei hinzu. Diese Konfiguration erstellt eine einzelne Entität namens,
book
die der vorhandenendbo.Books
Tabelle zugeordnet ist.{ "$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" } ] } } }
Abrufen und Ausführen des Docker-Containerimages
Führen Sie DAB mithilfe des Docker-Containerimages aus, das in Microsoft Container Registry gehostet wird. Stellen Sie beim Ausführen des Containerimages ein Verzeichnis bereit, damit DAB die Konfigurationsdatei lesen kann.
Ziehen Sie das Docker-Containerimage
mcr.microsoft.com/azure-databases/data-api-builder
.docker pull mcr.microsoft.com/azure-databases/data-api-builder
Führen Sie den Container aus, um den
5000
Port zu veröffentlichen, und binden Sie diedab-config.json
Datei an.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
Navigieren Sie mit einem Webbrowser zu
http://localhost:5000/api/book
. Die Ausgabe sollte ein JSON-Array von Buchelementen aus dem REST-API-Endpunkt sein.{ "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 } ] }
Hinweis
In diesem Leitfaden wird eine HTTP-Verbindung verwendet. Wenn Sie einen Data API Builder-Container in Docker ausführen, sehen Sie, dass nur der HTTP-Endpunkt zugeordnet ist. Wenn Ihr Docker-Container HTTPS für die lokale Entwicklung unterstützen soll, müssen Sie Ihr eigenes SSL/TLS-Zertifikat und private Schlüsseldateien bereitstellen, die für die SSL/TLS-Verschlüsselung erforderlich sind, und den HTTPS-Port verfügbar machen. Ein Reverseproxy kann auch verwendet werden, um zu erzwingen, dass Clients eine Verbindung mit Ihrem Server über HTTPS herstellen, um sicherzustellen, dass der Kommunikationskanal verschlüsselt ist, bevor die Anforderung an Ihren Container weitergeleitet wird.