Condividi tramite


Eseguire il generatore di API dati in un contenitore Docker

Il generatore di API dati (DAB) viene pubblicato come immagine del contenitore nel Registro Contenitori Microsoft. Qualsiasi host Docker può scaricare l'immagine container ed eseguire DAB con una configurazione minima. Questa guida usa l'immagine del contenitore e un file di configurazione locale per ospitare ed eseguire rapidamente DAB senza la necessità di installare strumenti aggiuntivi.

Prerequisiti

Creare dati di esempio

Per questa breve guida, una tabella semplice con poche righe di dati è sufficiente per illustrare come usare DAB in un contenitore Docker. Per semplificare ulteriormente le operazioni, si usa SQL Server per Linux in un'immagine del contenitore Docker.

  1. Scaricare l'immagine del mcr.microsoft.com/mssql/server:2022-latest contenitore.

    docker pull mcr.microsoft.com/mssql/server:2022-latest
    
  2. Eseguire l'immagine del contenitore pubblicando la porta 1433 e impostare la password dell'account sa su una password univoca utilizzata in tutta questa guida.

    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
    

    Importante

    Si tratta di una semplice password fittizia per questa guida. Nel mondo reale si userebbe un meccanismo di autenticazione diverso e idealmente un account diverso.

  3. Connettersi al server SQL usando il client o lo strumento preferito. La stringa di connessione è Server=localhost,1433;User Id=sa;Password=<your-password>;TrustServerCertificate=true;.

  4. Creare un nuovo database denominato Library se non esiste già.

    IF NOT EXISTS(SELECT name FROM sys.databases WHERE name = 'Library')
    BEGIN
        CREATE DATABASE Library;
    END
    GO
    
    USE Library
    
  5. Creare una tabella denominata Books con le colonne id, title, year e 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. Inserire quattro righe del libro di esempio nella Books tabella.

    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. Testate i vostri dati con una semplice query SELECT *.

    SELECT * FROM dbo.Books
    

Creare un file di configurazione

Creare un file di configurazione mappato alla tabella creata nei passaggi precedenti. Questo file di configurazione descrive a DAB come eseguire il mapping degli endpoint REST e GraphQL ai dati effettivi.

  1. Creare un file denominato dab-config.json.

    Suggerimento

    Si tratta del nome file predefinito per i file di configurazione. Usando il nome file predefinito, non è necessario specificare il file di configurazione durante l'esecuzione del contenitore.

  2. Aggiungere questo contenuto JSON al file. Questa configurazione crea una singola entità denominata mappata book alla tabella esistente dbo.Books .

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

Eseguire il pull e avviare l'immagine del contenitore Docker

Eseguire DAB usando l'immagine del contenitore Docker ospitata in Registro Contenitori Microsoft. Quando si esegue l'immagine del contenitore, montare una directory in modo che DAB possa leggere il file di configurazione.

  1. Esegui il pull dell'immagine del mcr.microsoft.com/azure-databases/data-api-builder contenitore Docker.

    docker pull mcr.microsoft.com/azure-databases/data-api-builder
    
  2. Eseguire il contenitore che pubblica la 5000 porta e associare il montaggio del dab-config.json file.

    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. Usare un Web browser per passare a http://localhost:5000/api/book. L'output dovrebbe essere un array JSON di elementi del libro provenienti dall'endpoint API REST.

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

    Annotazioni

    Questa guida usa una connessione HTTP. Quando si esegue un contenitore di Generatore API dati in Docker, si noterà che viene eseguito il mapping solo dell'endpoint HTTP. Se si vuole che il contenitore Docker supporti HTTPS per lo sviluppo locale, è necessario fornire il proprio certificato SSL/TLS e i file di chiave privata necessari per la crittografia SSL/TLS ed esporre la porta HTTPS. È anche possibile usare un proxy inverso per imporre che i client si connettano al server tramite HTTPS per assicurarsi che il canale di comunicazione sia crittografato prima di inoltrare la richiesta al contenitore.