Sdílet prostřednictvím


Spuštění Tvůrce rozhraní API pro data v kontejneru Dockeru

Tvůrce rozhraní DATA API (DAB) se publikuje jako image kontejneru do služby Microsoft Container Registry. Každý hostitel Dockeru může stáhnout image kontejneru a spustit DAB s minimální konfigurací. Tato příručka používá image kontejneru a místní konfigurační soubor k rychlému hostování a spouštění DAB bez nutnosti instalovat další nástroje.

Požadavky

Vytvoření ukázkových dat

V tomto krátkém průvodci stačí jednoduchá tabulka s několika řádky dat, abyste ukázali, jak používat DAB v kontejneru Dockeru. Pro další zjednodušení používáme SQL Server pro Linux v imagi kontejneru Dockeru.

  1. Stáhněte image mcr.microsoft.com/mssql/server:2022-latest kontejneru.

    docker pull mcr.microsoft.com/mssql/server:2022-latest
    
  2. Spusťte image kontejneru, která publikuje 1433 port a nastaví sa heslo účtu na jedinečné heslo, které používáte v této příručce.

    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
    

    Důležité

    Toto je jednoduché fiktivní heslo pro tuto příručku. V reálném světě byste použili jiný mechanismus ověřování a v ideálním případě jiný účet.

  3. Připojte se k SQL Serveru pomocí preferovaného klienta nebo nástroje. Připojovací řetězec je Server=localhost,1433;User Id=sa;Password=<your-password>;TrustServerCertificate=true;.

  4. Create novou databázi s názvem Library , pokud ještě neexistuje.

    IF NOT EXISTS(SELECT name FROM sys.databases WHERE name = 'Library')
    BEGIN
        CREATE DATABASE Library;
    END
    GO
    
    USE Library
    
  5. Create tabulku se Books sloupci id, titleyear, apages.

    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. Vložte do tabulky čtyři ukázkové řádky Books knihy.

    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. Otestujte data pomocí jednoduchého SELECT * dotazu.

    SELECT * FROM dbo.Books
    

Vytvoření konfiguračního souboru

Create konfigurační soubor, který se mapuje na tabulku vytvořenou v předchozích krocích. Tento konfigurační soubor popisuje DAB, jak mapovat koncové body REST a GraphQL na skutečná data.

  1. Vytvořte soubor s názvem dab-config.json.

    Tip

    Toto je výchozí název souboru konfiguračních souborů. Použitím výchozího názvu souboru nemusíte při spuštění kontejneru zadávat konfigurační soubor.

  2. Přidejte tento obsah JSON do souboru. Tato konfigurace vytvoří jednu entitu s názvem book namapovanou na existující dbo.Books tabulku.

    {
      "$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"
            }
          ]
        }
      }
    }
    

Vyžádání a spuštění image kontejneru Dockeru

Spusťte DAB pomocí image kontejneru Dockeru hostované ve službě Microsoft Container Registry. Při spuštění image kontejneru připojte adresář, aby DAB mohl číst konfigurační soubor.

  1. Stáhněte image kontejneru mcr.microsoft.com/azure-databases/data-api-builder Dockeru.

    docker pull mcr.microsoft.com/azure-databases/data-api-builder
    
  2. Spusťte kontejner publikující 5000 port a vytvořte vazbu k dab-config.json připojení souboru.

    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. Pomocí webového prohlížeče přejděte na http://localhost:5000/api/book. Výstupem by mělo být pole JSON s položkami knihy z koncového bodu rozhraní REST API.

    {
      "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
        }
      ]
    }
    

    Poznámka

    Tato příručka používá připojení HTTP. Při spouštění kontejneru Data API Builderu v Dockeru uvidíte, že se mapuje jenom koncový bod HTTP. Pokud chcete, aby kontejner Dockeru podporoval protokol HTTPS pro místní vývoj, musíte zadat vlastní certifikát SSL/TLS a soubory privátního klíče potřebné pro šifrování SSL/TLS a zveřejnit port HTTPS. Reverzní proxy server je také možné použít k vynucení, aby se klienti připojovali k vašemu serveru přes HTTPS a zajistili, že komunikační kanál bude před předáním požadavku do kontejneru zašifrovaný.