Compartir a través de


Ejecución del generador de API de datos en un contenedor de Docker

Data API Builder (DAB) se publica como una imagen de contenedor en Microsoft Container Registry. Cualquier host de Docker puede extraer la imagen de contenedor y ejecutar DAB con una configuración mínima. En esta guía se usa la imagen de contenedor y un archivo de configuración local para hospedar y ejecutar RÁPIDAMENTE DAB sin necesidad de instalar ninguna herramienta adicional.

Requisitos previos

Creación de datos de ejemplo

Para esta guía breve, una tabla sencilla con unas pocas filas de datos es suficiente para demostrar cómo usar DAB en un contenedor de Docker. Para simplificar aún más las cosas, usamos SQL Server para Linux en una imagen de contenedor de Docker.

  1. Extraiga la imagen del mcr.microsoft.com/mssql/server:2022-latest contenedor.

    docker pull mcr.microsoft.com/mssql/server:2022-latest
    
  2. Ejecute la imagen de contenedor que publica el 1433 puerto y establezca la contraseña de la sa cuenta en una contraseña única que use en esta guía.

    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

    Se trata de una contraseña ficticia sencilla para esta guía. En el mundo real, usaría un mecanismo de autenticación diferente e idealmente una cuenta diferente.

  3. Conéctese a SQL Server mediante su cliente o herramienta preferidos. La cadena de conexión es Server=localhost,1433;User Id=sa;Password=<your-password>;TrustServerCertificate=true;.

  4. Create una nueva base de datos denominada Library si aún no existe.

    IF NOT EXISTS(SELECT name FROM sys.databases WHERE name = 'Library')
    BEGIN
        CREATE DATABASE Library;
    END
    GO
    
    USE Library
    
  5. Create una tabla denominada Books con idcolumnas , title, yeary 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. Inserte cuatro filas de libro de ejemplo en la Books tabla.

    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. Pruebe los datos con una consulta simple SELECT * .

    SELECT * FROM dbo.Books
    

Creación de un archivo de configuración

Create un archivo de configuración que se asigna a la tabla creada en los pasos anteriores. Este archivo de configuración describe a DAB cómo asignar puntos de conexión REST y GraphQL a los datos reales.

  1. Cree un archivo llamado dab-config.json.

    Sugerencia

    Este es el nombre de archivo predeterminado para los archivos de configuración. Al usar el nombre de archivo predeterminado, evita tener que especificar el archivo de configuración al ejecutar el contenedor.

  2. Agregue este contenido JSON al archivo. Esta configuración crea una sola entidad denominada book asignada a la tabla existente 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"
            }
          ]
        }
      }
    }
    

Extracción y ejecución de la imagen de contenedor de Docker

Ejecute DAB con la imagen de contenedor de Docker hospedada en Microsoft Container Registry. Al ejecutar la imagen de contenedor, monte un directorio para que DAB pueda leer el archivo de configuración.

  1. Extraiga la imagen del mcr.microsoft.com/azure-databases/data-api-builder contenedor de Docker.

    docker pull mcr.microsoft.com/azure-databases/data-api-builder
    
  2. Ejecute el contenedor que publica el 5000 puerto y enlace el montaje del dab-config.json archivo.

    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. Use un explorador web para ir a http://localhost:5000/api/book. La salida debe ser una matriz JSON de elementos de libro del punto de conexión de la 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

    En esta guía se usa una conexión HTTP. Al ejecutar un contenedor de Data API Builder en Docker, verá que solo se asigna el punto de conexión HTTP. Si quiere que el contenedor de Docker admita HTTPS para el desarrollo local, debe proporcionar su propio certificado SSL/TLS y archivos de clave privada necesarios para el cifrado SSL/TLS y exponer el puerto HTTPS. También se puede usar un proxy inverso para exigir que los clientes se conecten al servidor a través de HTTPS para asegurarse de que el canal de comunicación está cifrado antes de reenviar la solicitud al contenedor.