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
- Docker
- Um cliente de banco de dados (SQL Server Management Studio, Azure Data Studio etc.)
- Se você não tiver um cliente instalado, instale o Azure Data Studio
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.
Efetuar pull da imagem de
mcr.microsoft.com/mssql/server:2022-latest
contêiner.docker pull mcr.microsoft.com/mssql/server:2022-latest
Execute a imagem de contêiner publicando a
1433
porta e definindo a senha dasa
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.
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;
.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
Create uma tabela chamada
Books
com colunas ,title
year
, epages
id
.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
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
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.
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.
Adicione este conteúdo JSON ao arquivo. Essa configuração cria uma única entidade chamada
book
mapeada para a tabela existentedbo.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.
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
Execute o contêiner publicando a
5000
porta e associe a montagem dodab-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
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.