Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der Daten-API-Generator (DAB) wird als Containerimage in der Microsoft-Containerregistrierung veröffentlicht. Jeder Docker-Host kann das Containerimage herunterziehen und DAB mit minimaler Konfiguration ausführen. Dieses Handbuch verwendet das Containerimage und eine lokale Konfigurationsdatei, um DAB schnell zu hosten und auszuführen, ohne zusätzliche Tools installieren zu müssen.
Voraussetzungen
Erstellen von Beispieldaten
Für diese kurze Anleitung reicht eine einfache Tabelle mit wenigen Datenzeilen aus, um zu veranschaulichen, wie DAB in einem Docker-Container verwendet wird. 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-latestContainer-Image.docker pull mcr.microsoft.com/mssql/server:2022-latestFühren Sie das Containerimage aus, das den
1433Port veröffentlicht, und legen Sie dassaKontokennwort auf ein eindeutiges Kennwort fest, 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-latestVon Bedeutung
Dieses Kennwort ist ein einfacher fiktiver Wert 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;.Erstellen Sie eine neue Datenbank mit dem Namen
Library, wenn sie noch nicht vorhanden ist.IF NOT EXISTS(SELECT name FROM sys.databases WHERE name = 'Library') BEGIN CREATE DATABASE Library; END GO USE LibraryErstellen Sie eine Tabelle mit dem Namen
Booksund den Spaltenid,title,yearundpages.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 ) GOFügen Sie vier Beispielbuchzeilen in die
BooksTabelle 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) GOTesten Sie Ihre Daten mit einer einfachen
SELECT *Abfrage.SELECT * FROM dbo.Books
Erstellen einer Konfigurationsdatei
Erstellen Sie eine Konfigurationsdatei, die der tabelle zugeordnet ist, die in den vorherigen Schritten erstellt wurde. In dieser Konfigurationsdatei wird beschrieben, wie DAB REST- und GraphQL-Endpunkte den tatsächlichen Daten zuordnet.
Erstellen Sie eine Datei mit dem Namen
dab-config.json.Tipp
Dieser Dateiname ist die Standardeinstellung für Konfigurationsdateien. Wenn Sie den Standarddateinamen verwenden, müssen Sie die Konfigurationsdatei beim Ausführen des Containers nicht angeben.
Fügen Sie diese JSON-Inhalte zu Ihrer Datei hinzu. Diese Konfiguration erstellt eine einzelne Entität,
bookdie der vorhandenendbo.BooksTabelle 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" } ] } } }
Erstellen und Ausführen eines benutzerdefinierten Docker-Container-Images
Erstellen Sie ein benutzerdefiniertes Image, das dab-config.json enthält, und führen Sie das Image dann lokal aus.
Erstellen Sie eine Dockerfile-Datei im selben Ordner wie
dab-config.json.FROM mcr.microsoft.com/azure-databases/data-api-builder:latest COPY dab-config.json /App/dab-config.jsonErstellen des Images.
docker build -t dab-local:1 .Führen Sie den Container aus, der den
5000Port veröffentlicht.docker run \ --name dab \ --publish 5000:5000 \ --detach \ dab-local:1Verwenden Sie einen Webbrowser, um zu
http://localhost:5000/api/bookzu navigieren. Die Ausgabe sollte ein JSON-Array von Buchelementen vom 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 Daten-API-Generator-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.