Udostępnij za pośrednictwem


Uruchamianie konstruktora interfejsu API danych w kontenerze platformy Docker

Konstruktor interfejsu API danych (DAB) jest publikowany jako obraz kontenera w usłudze Microsoft Container Registry. Każdy host platformy Docker może ściągnąć obraz kontenera i uruchomić usługę DAB z minimalną konfiguracją. W tym przewodniku użyto obrazu kontenera i lokalnego pliku konfiguracji do szybkiego hostowania i uruchamiania narzędzia DAB bez konieczności instalowania dodatkowych narzędzi.

Wymagania wstępne

Tworzenie danych przykładowych

W tym krótkim przewodniku prosta tabela z kilkoma wierszami danych jest wystarczająca do zademonstrowania sposobu używania języka DAB w kontenerze platformy Docker. Aby jeszcze bardziej uprościć pracę, użyjemy SQL Server dla systemu Linux w obrazie kontenera platformy Docker.

  1. Ściąganie obrazu kontenera mcr.microsoft.com/mssql/server:2022-latest .

    docker pull mcr.microsoft.com/mssql/server:2022-latest
    
  2. Uruchom obraz kontenera publikując 1433 port i ustawiając sa hasło konta na unikatowe hasło używane w tym przewodniku.

    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
    

    Ważne

    Jest to proste fikcyjne hasło dla tego przewodnika. W świecie rzeczywistym należy użyć innego mechanizmu uwierzytelniania i idealnie innego konta.

  3. Nawiąż połączenie z serwerem SQL przy użyciu preferowanego klienta lub narzędzia. Parametry połączenia to Server=localhost,1433;User Id=sa;Password=<your-password>;TrustServerCertificate=true;.

  4. Twórca nową bazę danych o nazwie Library , jeśli jeszcze nie istnieje.

    IF NOT EXISTS(SELECT name FROM sys.databases WHERE name = 'Library')
    BEGIN
        CREATE DATABASE Library;
    END
    GO
    
    USE Library
    
  5. Twórca tabelę o nazwie Books z kolumnami id, title, yeari 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. Wstaw do Books tabeli cztery przykładowe wiersze książki.

    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. Przetestuj dane przy użyciu prostego SELECT * zapytania.

    SELECT * FROM dbo.Books
    

Tworzenie pliku konfiguracji

Twórca plik konfiguracji mapujący na tabelę utworzoną w poprzednich krokach. W tym pliku konfiguracji opisano sposób mapowania punktów końcowych REST i GraphQL na rzeczywiste dane w języku DAB.

  1. Utwórz plik o nazwie dab-config.json.

    Porada

    Jest to domyślna nazwa pliku konfiguracji. Używając domyślnej nazwy pliku, należy unikać określania pliku konfiguracji podczas uruchamiania kontenera.

  2. Dodaj tę zawartość JSON do pliku. Ta konfiguracja tworzy pojedynczą jednostkę o nazwie book zamapowanej na istniejącą dbo.Books tabelę.

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

Ściąganie i uruchamianie obrazu kontenera platformy Docker

Uruchom usługę DAB przy użyciu obrazu kontenera platformy Docker hostowanego w usłudze Microsoft Container Registry. Podczas uruchamiania obrazu kontenera zainstaluj katalog, aby program DAB mógł odczytać plik konfiguracji.

  1. Ściąganie obrazu kontenera platformy mcr.microsoft.com/azure-databases/data-api-builder Docker.

    docker pull mcr.microsoft.com/azure-databases/data-api-builder
    
  2. Uruchom kontener publikując 5000 port i powiąż instalowanie dab-config.json pliku.

    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. Użyj przeglądarki internetowej, aby przejść do adresu http://localhost:5000/api/book. Dane wyjściowe powinny być tablicą JSON elementów książki z punktu końcowego interfejsu 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
        }
      ]
    }
    

    Uwaga

    W tym przewodniku jest używane połączenie HTTP. Podczas uruchamiania kontenera konstruktora interfejsu API danych na platformie Docker zobaczysz, że jest mapowany tylko punkt końcowy HTTP. Jeśli chcesz, aby kontener platformy Docker obsługiwał protokół HTTPS na potrzeby programowania lokalnego, musisz podać własny certyfikat SSL/TLS i pliki kluczy prywatnych wymagane do szyfrowania SSL/TLS i uwidocznić port HTTPS. Zwrotny serwer proxy może również służyć do wymuszania, aby klienci nawiązywali połączenie z serwerem za pośrednictwem protokołu HTTPS, aby upewnić się, że kanał komunikacyjny jest szyfrowany przed przekazaniem żądania do kontenera.