Sdílet prostřednictvím


Spuštění Tvůrce rozhraní Data API 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, která ukazuje, 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 kontejneru mcr.microsoft.com/mssql/server:2022-latest .

    docker pull mcr.microsoft.com/mssql/server:2022-latest
    
  2. Spusťte image kontejneru, která 1433 publikuje port a nastaví sa heslo účtu na jedinečné heslo, které používáte v rámci tohoto průvodce.

    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. Ve skutečném světě byste použili jiný ověřovací mechanismus a ideálně 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. Vytvořte 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. Vytvořte tabulku pojmenovanou Books se sloupci id, title, year a 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. Vložte do Books tabulky čtyři ukázkové řádky 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

Vytvořte konfigurační soubor, který odpovídá tabulce vytvořené v předchozích krocích. Tento konfigurační soubor vysvětluje DAB, jak mapovat koncové body REST a GraphQL na skutečná data.

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

    Návod

    Toto je výchozí název souboru konfiguračních souborů. Při použití výchozího názvu souboru se nemusíte při spouš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"
            }
          ]
        }
      }
    }
    

Stažení a spuštění obrazu kontejneru Docker

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 konfigurační soubor přečíst.

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

    docker pull mcr.microsoft.com/azure-databases/data-api-builder
    
  2. Spusťte kontejner, který publikuje 5000 port, a vytvořte vazbu připojení dab-config.json 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/bookadresu . Výstup by měl být pole JSON položek 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 spuštění kontejneru Tvůrce rozhraní DATA API v Dockeru uvidíte, že se mapuje jenom koncový bod HTTP. Pokud chcete, aby váš 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 vyžadované pro šifrování SSL/TLS a zveřejnit port HTTPS. Reverzní proxy server lze použít také k vynucení připojení klientů k vašemu serveru přes PROTOKOL HTTPS, aby se zajistilo, že komunikační kanál je před předáním požadavku do kontejneru šifrovaný.