Executar o Construtor de API de Dados num contentor do Docker
O Construtor de API de Dados (DAB) é publicado como uma imagem de contentor no Microsoft Container Registry. Qualquer anfitrião do Docker pode obter a imagem de contentor e executar o DAB com uma configuração mínima. Este guia utiliza a imagem de contentor e um ficheiro de configuração local para alojar e executar rapidamente o DAB sem ter de instalar ferramentas adicionais.
Pré-requisitos
- Docker
- Um cliente de base de dados (SQL Server Management Studio, Azure Data Studio, etc.)
- Se não tiver um cliente instalado, instale o Azure Data Studio
Criar dados de exemplo
Neste breve guia, uma tabela simples com algumas linhas de dados é suficiente para demonstrar como utilizar o DAB num contentor do Docker. Para simplificar ainda mais, utilizamos SQL Server para Linux numa imagem de contentor do Docker.
Extraia a imagem do
mcr.microsoft.com/mssql/server:2022-latest
contentor.docker pull mcr.microsoft.com/mssql/server:2022-latest
Execute a imagem de contentor que publica a
1433
porta e defina a palavra-passe dasa
conta para uma palavra-passe exclusiva que utiliza 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 palavra-passe simples e fictícia para este guia. No mundo real, utilizaria um mecanismo de autenticação diferente e idealmente uma conta diferente.
Ligue-se ao SQL Server com o seu cliente ou ferramenta preferencial. A cadeia de ligação é
Server=localhost,1433;User Id=sa;Password=<your-password>;TrustServerCertificate=true;
.Create uma nova base de dados com o nome
Library
se 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 com
id
o nomeBooks
,title
,year
epages
colunas.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 os seus dados com uma consulta simples
SELECT *
.SELECT * FROM dbo.Books
Criar um ficheiro de configuração
Create um ficheiro de configuração que mapeia para a tabela criada nos passos anteriores. Este ficheiro de configuração descreve ao DAB como mapear pontos finais REST e GraphQL para os seus dados reais.
Crie um ficheiro com o nome
dab-config.json
.Dica
Este é o nome de ficheiro predefinido para ficheiros de configuração. Ao utilizar o nome de ficheiro predefinido, evita ter de especificar o ficheiro de configuração ao executar o contentor.
Adicione este conteúdo JSON ao seu ficheiro. Esta configuração cria uma única entidade denominada
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" } ] } } }
Solicitar e executar a imagem de contentor do Docker
Execute o DAB com a imagem de contentor do Docker alojada no Microsoft Container Registry. Ao executar a imagem de contentor, monte um diretório para que o DAB possa ler o ficheiro de configuração.
Extraia a imagem do contentor do
mcr.microsoft.com/azure-databases/data-api-builder
Docker.docker pull mcr.microsoft.com/azure-databases/data-api-builder
Execute o contentor que publica a
5000
porta e vinculte odab-config.json
ficheiro.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
Utilize um browser para navegar para
http://localhost:5000/api/book
. O resultado deve ser uma matriz JSON de itens de livros do ponto final 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 } ] }
Nota
Este guia utiliza uma ligação HTTP. Ao executar um contentor do Construtor de API de Dados no Docker, verá que apenas o ponto final HTTP está mapeado. Se quiser que o contentor do Docker suporte HTTPS para desenvolvimento local, tem de fornecer o seu próprio certificado SSL/TLS e ficheiros de chave privada necessários para a encriptação SSL/TLS e expor a porta HTTPS. Um proxy inverso também pode ser utilizado para impor que os clientes se liguem ao servidor através de HTTPS para garantir que o canal de comunicação é encriptado antes de reencaminhar o pedido para o contentor.