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ò eseguire il pull verso il basso dell'immagine del contenitore 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, viene usato SQL Server per Linux in un'immagine del contenitore Docker.

  1. Eseguire il pull dell'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 che pubblica la 1433 porta e impostare la sa password dell'account su una password univoca usata in 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. Create 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. Create una tabella denominata Books con idcolonne , title, yeare 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 di libri 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. Testare i dati con una query semplice SELECT * .

    SELECT * FROM dbo.Books
    

Creare il file di configurazione

Create 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, evitare di dover specificare il file di configurazione durante l'esecuzione del contenitore.

  2. Aggiungere questo contenuto JSON al file. Questa configurazione crea una singola entità denominata book mappata 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 ed eseguire 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. Eseguire 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 deve essere una matrice JSON di elementi del libro dall'endpoint dell'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
        }
      ]
    }
    

    Nota

    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.