Delen via


Data API Builder uitvoeren in een Docker-container

Data API Builder (DAB) wordt als een containerinstallatiekopieën gepubliceerd naar Microsoft Container Registry. Elke Docker-host kan de containerinstallatiekopie verwijderen en DAB uitvoeren met minimale configuratie. In deze handleiding wordt gebruikgemaakt van de containerinstallatiekopie en een lokaal configuratiebestand om DAB snel te hosten en uit te voeren zonder extra hulpprogramma's te hoeven installeren.

Vereisten

Voorbeeldgegevens maken

Voor deze korte handleiding is een eenvoudige tabel met enkele rijen met gegevens voldoende om te laten zien hoe u DAB gebruikt in een Docker-container. Ter vereenvoudiging gebruiken we SQL Server voor Linux in een Docker-containerinstallatiekopieën.

  1. Haal de mcr.microsoft.com/mssql/server:2022-latest containerinstallatiekopie op.

    docker pull mcr.microsoft.com/mssql/server:2022-latest
    
  2. Voer de containerinstallatiekopieën uit die de 1433 poort publiceren en het sa accountwachtwoord instellen op een uniek wachtwoord dat u in deze handleiding gebruikt.

    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
    

    Belangrijk

    Dit is een eenvoudig wachtwoord voor deze handleiding. In de praktijk zou u een ander verificatiemechanisme en idealiter een ander account gebruiken.

  3. Maak verbinding met de SQL-server met behulp van de client of het hulpprogramma van uw voorkeur. De verbindingsreeks is Server=localhost,1433;User Id=sa;Password=<your-password>;TrustServerCertificate=true;.

  4. Creatie een nieuwe database met de naam Library als deze nog niet bestaat.

    IF NOT EXISTS(SELECT name FROM sys.databases WHERE name = 'Library')
    BEGIN
        CREATE DATABASE Library;
    END
    GO
    
    USE Library
    
  5. Creatie een tabel met de naam Books , idtitle, yearen pages kolommen.

    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. Voeg vier rijen met voorbeeldboeken in de Books tabel in.

    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. Test uw gegevens met een eenvoudige SELECT * query.

    SELECT * FROM dbo.Books
    

Een configuratiebestand maken

Creatie een configuratiebestand dat is toegewezen aan de tabel die u in de vorige stappen hebt gemaakt. In dit configuratiebestand wordt aan DAB beschreven hoe u REST- en GraphQL-eindpunten toewijst aan uw werkelijke gegevens.

  1. Maak een bestand met de naam dab-config.json.

    Tip

    Dit is de standaardbestandsnaam voor configuratiebestanden. Door de standaardbestandsnaam te gebruiken, voorkomt u dat u het configuratiebestand moet opgeven bij het uitvoeren van de container.

  2. Voeg deze JSON-inhoud toe aan uw bestand. Met deze configuratie wordt één entiteit met de naam book gemaakt die is toegewezen aan de bestaande dbo.Books tabel.

    {
      "$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"
            }
          ]
        }
      }
    }
    

De Docker-containerinstallatiekopie ophalen en uitvoeren

Voer DAB uit met behulp van de Docker-containerinstallatiekopie die wordt gehost op Microsoft Container Registry. Wanneer u de containerinstallatiekopieën uitvoert, koppelt u een map, zodat DAB het configuratiebestand kan lezen.

  1. Haal de mcr.microsoft.com/azure-databases/data-api-builder Docker-containerinstallatiekopie op.

    docker pull mcr.microsoft.com/azure-databases/data-api-builder
    
  2. Voer de container uit om de 5000 poort te publiceren en het dab-config.json bestand te koppelen.

    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. Gebruik een webbrowser om naar te http://localhost:5000/api/booknavigeren. De uitvoer moet een JSON-matrix van boekitems van het REST API-eindpunt zijn.

    {
      "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
        }
      ]
    }
    

    Notitie

    Deze handleiding maakt gebruik van een HTTP-verbinding. Wanneer u een Data API Builder-container uitvoert in Docker, ziet u dat alleen het HTTP-eindpunt is toegewezen. Als u wilt dat uw Docker-container HTTPS ondersteunt voor lokale ontwikkeling, moet u uw eigen SSL/TLS-certificaat en persoonlijke sleutelbestanden opgeven die vereist zijn voor SSL/TLS-versleuteling en de HTTPS-poort beschikbaar maken. Een omgekeerde proxy kan ook worden gebruikt om af te dwingen dat clients verbinding maken met uw server via HTTPS om ervoor te zorgen dat het communicatiekanaal wordt versleuteld voordat de aanvraag naar uw container wordt doorgestuurd.