Exécuter le générateur d’API de données dans un conteneur Docker
Le générateur d’API de données (DAB) est publié en tant qu’image conteneur dans microsoft Container Registry. N’importe quel hôte Docker peut extraire l’image conteneur et exécuter DAB avec une configuration minimale. Ce guide utilise l’image conteneur et un fichier de configuration local pour héberger et exécuter rapidement DAB sans avoir à installer d’outils supplémentaires.
Prérequis
- Docker
- Un client de base de données (SQL Server Management Studio, Azure Data Studio, etc.)
- Si aucun client n’est installé, installez Azure Data Studio
Créer des exemples de données
Pour ce court guide, une table simple avec quelques lignes de données est suffisante pour montrer comment utiliser DAB dans un conteneur Docker. Pour simplifier davantage, nous utilisons SQL Server pour Linux dans une image conteneur Docker.
Extrayez l’image conteneur
mcr.microsoft.com/mssql/server:2022-latest
.docker pull mcr.microsoft.com/mssql/server:2022-latest
Exécutez l’image conteneur en publiant le
1433
port et en définissant le mot de passe dusa
compte sur un mot de passe unique que vous utilisez tout au long de ce guide.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
Important
Il s’agit d’un mot de passe fictiuous simple pour ce guide. Dans le monde réel, vous utiliseriez un mécanisme d’authentification différent et idéalement un autre compte.
Connectez-vous au serveur SQL à l’aide de votre client ou outil préféré. La chaîne de connexion est
Server=localhost,1433;User Id=sa;Password=<your-password>;TrustServerCertificate=true;
.Create une nouvelle base de données nommée
Library
si elle n’existe pas déjà.IF NOT EXISTS(SELECT name FROM sys.databases WHERE name = 'Library') BEGIN CREATE DATABASE Library; END GO USE Library
Create une table nommée
Books
avecid
les colonnes ,title
,year
etpages
.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
Insérez quatre exemples de lignes de livre dans le
Books
tableau.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
Testez vos données avec une requête simple
SELECT *
.SELECT * FROM dbo.Books
Création d’un fichier de configuration
Create un fichier de configuration mappé à la table créée aux étapes précédentes. Ce fichier de configuration explique à DAB comment mapper des points de terminaison REST et GraphQL à vos données réelles.
Créez un fichier appelé
dab-config.json
.Conseil
Il s’agit du nom de fichier par défaut pour les fichiers de configuration. En utilisant le nom de fichier par défaut, vous évitez d’avoir à spécifier le fichier de configuration lors de l’exécution du conteneur.
Ajoutez ce contenu JSON à votre fichier. Cette configuration crée une entité unique nommée
book
mappée à la table existantedbo.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;" }, "entities": { "book": { "source": "dbo.Books", "permissions": [ { "actions": [ "read" ], "role": "anonymous" } ] } } }
Extraire et exécuter l’image conteneur Docker
Exécutez DAB à l’aide de l’image conteneur Docker hébergée sur Microsoft Container Registry. Lors de l’exécution de l’image conteneur, montez un répertoire pour que DAB puisse lire le fichier de configuration.
Extrayez l’image
mcr.microsoft.com/azure-databases/data-api-builder
de conteneur Docker.docker pull mcr.microsoft.com/azure-databases/data-api-builder
Exécutez le conteneur qui publie le
5000
port et liez le montage dudab-config.json
fichier.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
Utilisez un navigateur web pour accéder à
http://localhost:5000/api/book
. La sortie doit être un tableau JSON d’éléments de livre à partir du point de terminaison de l’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 } ] }
Notes
Ce guide utilise une connexion HTTP. Lorsque vous exécutez un conteneur générateur d’API de données dans Docker, vous verrez que seul le point de terminaison HTTP est mappé. Si vous souhaitez que votre conteneur Docker prend en charge HTTPS pour le développement local, vous devez fournir votre propre certificat SSL/TLS et vos propres fichiers de clé privée requis pour le chiffrement SSL/TLS et exposer le port HTTPS. Un proxy inverse peut également être utilisé pour faire en sorte que les clients se connectent à votre serveur via HTTPS pour s’assurer que le canal de communication est chiffré avant de transférer la demande à votre conteneur.