Dela via


Köra Data API Builder i en Docker-container

Data API Builder (DAB) publiceras som en containeravbildning till Microsoft Container Registry. Alla Docker-värdar kan hämta containeravbildningen och köra DAB med minimal konfiguration. Den här guiden använder containeravbildningen och en lokal konfigurationsfil för att snabbt vara värd för och köra DAB utan att behöva installera några extra verktyg.

Förutsättningar

  • Docker
  • En databasklient (SQL Server Management Studio, Azure Data Studio osv.)

Skapa exempeldata

I den här korta guiden räcker det med en enkel tabell med några rader med data för att demonstrera hur du använder DAB i en Docker-container. För att förenkla saker och ting ytterligare använder vi SQL Server för Linux i en Docker-containeravbildning.

  1. Hämta containeravbildningen mcr.microsoft.com/mssql/server:2022-latest .

    docker pull mcr.microsoft.com/mssql/server:2022-latest
    
  2. Kör containeravbildningen 1433 och publicera porten och ange sa kontots lösenord till ett unikt lösenord som du använder i den här guiden.

    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
    

    Viktigt

    Det här är ett enkelt fiktivt lösenord för den här guiden. I verkligheten skulle du använda en annan autentiseringsmekanism och helst ett annat konto.

  3. Anslut till SQL-servern med den klient eller det verktyg du föredrar. Anslutningssträng är Server=localhost,1433;User Id=sa;Password=<your-password>;TrustServerCertificate=true;.

  4. Skapa en ny databas med namnet Library om den inte redan finns.

    IF NOT EXISTS(SELECT name FROM sys.databases WHERE name = 'Library')
    BEGIN
        CREATE DATABASE Library;
    END
    GO
    
    USE Library
    
  5. Skapa en tabell med namnet Books med idkolumnerna , title, och .pagesyear

    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. Infoga fyra exempelboksrader i Books tabellen.

    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. Testa dina data med en enkel SELECT * fråga.

    SELECT * FROM dbo.Books
    

Skapa konfigurationsfilen

Skapa en konfigurationsfil som mappar till tabellen som skapades i föregående steg. Den här konfigurationsfilen beskriver för DAB hur du mappar REST- och GraphQL-slutpunkter till dina faktiska data.

  1. Skapa en fil som heter dab-config.json.

    Tips

    Detta är standardfilnamnet för konfigurationsfiler. Genom att använda standardfilnamnet undviker du att behöva ange konfigurationsfilen när du kör containern.

  2. Lägg till det här JSON-innehållet i filen. Den här konfigurationen skapar en enda entitet med namnet book mappad till den befintliga dbo.Books tabellen.

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

Hämta och köra Docker-containeravbildningen

Kör DAB med dockercontaineravbildningen som finns i Microsoft Container Registry. När du kör containeravbildningen monterar du en katalog så att DAB kan läsa konfigurationsfilen.

  1. Hämta Docker-containeravbildningen mcr.microsoft.com/azure-databases/data-api-builder .

    docker pull mcr.microsoft.com/azure-databases/data-api-builder
    
  2. Kör containern som publicerar 5000 porten och bind montering av dab-config.json filen.

    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. Använd en webbläsare för att navigera till http://localhost:5000/api/book. Utdata ska vara en JSON-matris med bokobjekt från REST API-slutpunkten.

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

    Anteckning

    Den här guiden använder en HTTP-anslutning. När du kör en Data API Builder-container i Docker ser du att endast HTTP-slutpunkten är mappad. Om du vill att Docker-containern ska ha stöd för HTTPS för lokal utveckling måste du ange ett eget SSL/TLS-certifikat och privata nyckelfiler som krävs för SSL/TLS-kryptering och exponera HTTPS-porten. En omvänd proxy kan också användas för att framtvinga att klienter ansluter till servern via HTTPS för att säkerställa att kommunikationskanalen krypteras innan begäran vidarebefordras till containern.