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 hostar kan hämta containeravbildningen och sedan 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

Skapa exempeldata

För den här korta guiden räcker det med en enkel tabell med några rader data för att visa 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 genom att publicera porten 1433 och ställ in kontolösenordet sa till ett unikt lösenord som du kommer att använda genom hela denna guide.

    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 använder du en annan autentiseringsmekanism och helst ett annat konto.

  3. Anslut till SQL-servern med den klient eller det verktyg du föredrar. Anslutningssträngen ä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, yearoch pages .

    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 konfigurationsfil

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/Råd

    Det här ä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ör Docker-containeravbildningen

Kör DAB med hjälp av Docker-containeravbildningen 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 avbilden för Docker-containern 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 monteringen 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
        }
      ]
    }
    

    Anmärkning

    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 mappas. Om du vill att Docker-containern ska ha stöd för HTTPS för lokal utveckling måste du ange ditt 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.