Compartilhar via


Executar o construtor de API de Dados em um contêiner do Docker

O DAB (Construtor de API de Dados) é publicado como uma imagem de contêiner no Registro de Contêiner da Microsoft. Qualquer host do Docker pode efetuar pull da imagem de contêiner e executar o DAB com configuração mínima. Este guia usa a imagem de contêiner e um arquivo de configuração local para hospedar e executar rapidamente o DAB sem a necessidade de instalar ferramentas extras.

Pré-requisitos

Criar dados de exemplo

Para este breve guia, uma tabela simples com algumas linhas de dados é suficiente para demonstrar como usar o DAB em um contêiner do Docker. Para simplificar ainda mais as coisas, usamos SQL Server para Linux em uma imagem de contêiner do Docker.

  1. Efetuar pull da imagem de mcr.microsoft.com/mssql/server:2022-latest contêiner.

    docker pull mcr.microsoft.com/mssql/server:2022-latest
    
  2. Execute a imagem de contêiner publicando a 1433 porta e definindo a senha da sa conta como uma senha exclusiva que você usa ao longo deste guia.

    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

    Esta é uma senha fictícia simples para este guia. No mundo real, você usaria um mecanismo de autenticação diferente e, idealmente, uma conta diferente.

  3. Conecte-se ao SQL Server usando seu cliente ou ferramenta preferencial. A cadeia de conexão é Server=localhost,1433;User Id=sa;Password=<your-password>;TrustServerCertificate=true;.

  4. Create um novo banco de dados chamado Library se ele ainda não existir.

    IF NOT EXISTS(SELECT name FROM sys.databases WHERE name = 'Library')
    BEGIN
        CREATE DATABASE Library;
    END
    GO
    
    USE Library
    
  5. Create uma tabela chamada Books com colunas , titleyear, e pagesid.

    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. Insira quatro linhas de livro de exemplo na Books tabela.

    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. Teste seus dados com uma consulta simples SELECT * .

    SELECT * FROM dbo.Books
    

Criar arquivo de configuração

Create um arquivo de configuração que mapeia para a tabela criada nas etapas anteriores. Esse arquivo de configuração descreve ao DAB como mapear pontos de extremidade REST e GraphQL para seus dados reais.

  1. Crie um arquivo chamado dab-config.json.

    Dica

    Esse é o nome de arquivo padrão para arquivos de configuração. Usando o nome de arquivo padrão, você evita a necessidade de especificar o arquivo de configuração ao executar o contêiner.

  2. Adicione este conteúdo JSON ao arquivo. Essa configuração cria uma única entidade chamada book mapeada para a tabela 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"
            }
          ]
        }
      }
    }
    

Efetuar pull e executar a imagem de contêiner do Docker

Execute o DAB usando a imagem de contêiner do Docker hospedada no Registro de Contêiner da Microsoft. Ao executar a imagem de contêiner, monte um diretório para que o DAB possa ler o arquivo de configuração.

  1. Efetuar pull da imagem de contêiner do mcr.microsoft.com/azure-databases/data-api-builder Docker.

    docker pull mcr.microsoft.com/azure-databases/data-api-builder
    
  2. Execute o contêiner publicando a 5000 porta e associe a montagem do dab-config.json arquivo.

    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 um navegador da Web para navegar até http://localhost:5000/api/book. A saída deve ser uma matriz JSON de itens de livro do ponto de extremidade da 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
        }
      ]
    }
    

    Observação

    Este guia usa uma conexão HTTP. Ao executar um contêiner do Construtor de API de Dados no Docker, você verá que apenas o ponto de extremidade HTTP está mapeado. Se quiser que o contêiner do Docker dê suporte a HTTPS para desenvolvimento local, você precisará fornecer seu próprio certificado SSL/TLS e arquivos de chave privada necessários para a criptografia SSL/TLS e expor a porta HTTPS. Um proxy reverso também pode ser usado para impor que os clientes se conectem ao servidor por HTTPS para garantir que o canal de comunicação seja criptografado antes de encaminhar a solicitação para o contêiner.