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
- Docker
- Un cliente de base de datos (SQL Server Management Studio, Azure Data Studio, etc.)
- Si no tiene instalado un cliente, instale Azure Data Studio.
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.
Extraiga la imagen del
mcr.microsoft.com/mssql/server:2022-latest
contenedor.docker pull mcr.microsoft.com/mssql/server:2022-latest
Ejecute la imagen de contenedor que publica el
1433
puerto y establezca la contraseña de lasa
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.
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;
.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
Create una tabla denominada
Books
conid
columnas ,title
,year
ypages
.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
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
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.
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.
Agregue este contenido JSON al archivo. Esta configuración crea una sola entidad denominada
book
asignada a la tabla 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" } ] } } }
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.
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
Ejecute el contenedor que publica el
5000
puerto y enlace el montaje deldab-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
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.