Partager via


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

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.

  1. Extrayez l’image conteneur mcr.microsoft.com/mssql/server:2022-latest .

    docker pull mcr.microsoft.com/mssql/server:2022-latest
    
  2. Exécutez l’image conteneur en publiant le 1433 port et en définissant le mot de passe du sa 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.

  3. 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;.

  4. 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
    
  5. Create une table nommée Books avec idles colonnes , title, yearet pages .

    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. 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
    
  7. 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.

  1. 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.

  2. Ajoutez ce contenu JSON à votre fichier. Cette configuration crée une entité unique nommée book mappée à la table existante 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;"
      },
      "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.

  1. Extrayez l’image mcr.microsoft.com/azure-databases/data-api-builder de conteneur Docker.

    docker pull mcr.microsoft.com/azure-databases/data-api-builder
    
  2. Exécutez le conteneur qui publie le 5000 port et liez le montage du dab-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
    
  3. 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.