Freigeben über


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

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.

  1. Ziehen Sie das mcr.microsoft.com/mssql/server:2022-latest Containerimage.

    docker pull mcr.microsoft.com/mssql/server:2022-latest
    
  2. Führen Sie das Containerimage aus, um den 1433 Port zu veröffentlichen und das sa 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.

  3. 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;.

  4. 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
    
  5. Create eine Tabelle mit den Books Spalten , title, yearund pages 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
    
  6. 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
    
  7. 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.

  1. 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.

  2. Fügen Sie diesen JSON-Inhalt ihrer Datei hinzu. Diese Konfiguration erstellt eine einzelne Entität namens, book die der vorhandenen dbo.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.

  1. Ziehen Sie das Docker-Containerimage mcr.microsoft.com/azure-databases/data-api-builder .

    docker pull mcr.microsoft.com/azure-databases/data-api-builder
    
  2. Führen Sie den Container aus, um den 5000 Port zu veröffentlichen, und binden Sie die dab-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
    
  3. 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.