Data API Builder futtatása Docker-tárolóban

A Data API Builder (DAB) tárolórendszerképként van közzétéve a Microsoft Container Registryben. Bármely Docker-gazdagép lekérheti a tárolólemezképet, és minimális konfigurációval futtathatja a DAB-t. Ez az útmutató a tárolórendszerképet és egy helyi konfigurációs fájlt használ a DAB gyors üzemeltetéséhez és futtatásához anélkül, hogy további eszközök telepítésére van szükség.

Előfeltételek

Mintaadatok létrehozása

Ebben a rövid útmutatóban egy egyszerű, néhány adatsort tartalmazó táblázat elegendő a DAB Docker-tárolókban való használatának bemutatásához. A további egyszerűsítés érdekében a Linuxhoz készült SQL Servert egy Docker-tárolórendszerképben használjuk.

  1. Kérje le a mcr.microsoft.com/mssql/server:2022-latest tárolórendszerképet.

    docker pull mcr.microsoft.com/mssql/server:2022-latest
    
  2. Futtassa a konténerképet, amely publikálja a 1433 portot, és állítsa be a sa fiók jelszavát egy egyedi jelszóra, amelyet az útmutató során használ.

    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
    

    Fontos

    Ez a jelszó egyszerűen fiktív érték ezen útmutató céljaira. A valós világban egy másik hitelesítési mechanizmust és ideális esetben egy másik fiókot használna.

  3. Csatlakozzon az SQL Serverhez az előnyben részesített ügyfél vagy eszköz használatával. A kapcsolati karaktersorozat az Server=localhost,1433;User Id=sa;Password=<your-password>;TrustServerCertificate=true;.

  4. Hozzon létre egy új adatbázist, ha Library még nem létezik.

    IF NOT EXISTS(SELECT name FROM sys.databases WHERE name = 'Library')
    BEGIN
        CREATE DATABASE Library;
    END
    GO
    
    USE Library
    
  5. Hozzon létre egy Books nevű táblát, amely id, title, year, és pages oszlopokat tartalmaz.

    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. Szúrjon be négy minta könyvsort a Books táblázatba.

    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. Tesztelje az adatokat egy egyszerű SELECT * lekérdezéssel.

    SELECT * FROM dbo.Books
    

Konfigurációs fájl létrehozása

Hozzon létre egy konfigurációs fájlt, amely megfelel az előző lépésekben létrehozott táblának. Ez a konfigurációs fájl ismerteti a DAB-nak, hogyan képezheti le a REST- és GraphQL-végpontokat a tényleges adatokhoz.

  1. Hozzon létre egy dab-config.json nevű fájlt.

    Jótanács

    Ez a fájlnév a konfigurációs fájlok alapértelmezett neve. Az alapértelmezett fájlnév használatával nem kell megadnia a konfigurációs fájlt a tároló futtatásakor.

  2. Adja hozzá ezt a JSON-tartalmat a fájlhoz. Ez a konfiguráció egyetlen, a meglévő book táblához hozzárendelt entitást dbo.Books hoz létre.

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

Egyéni Docker-tárolórendszerkép létrehozása és futtatása

Hozzon létre egy egyéni rendszerképet, amely tartalmazza dab-config.json, majd futtassa helyileg a képet.

  1. Hozzon létre egy Dockerfile-t ugyanabban a mappában, mint dab-config.jsona .

    FROM mcr.microsoft.com/azure-databases/data-api-builder:latest
    COPY dab-config.json /App/dab-config.json
    
  2. Hozza létre a képet.

    docker build -t dab-local:1 .
    
  3. Futtassa a tárolót, amely közzéteszi a portot 5000.

    docker run \
      --name dab \
      --publish 5000:5000 \
      --detach \
      dab-local:1
    
  4. Nyisson meg egy web böngészőt, és navigáljon a(z) http://localhost:5000/api/book-hez. A kimenetnek a REST API-végpontból származó könyvelemek JSON-tömbjének kell lennie.

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

    Megjegyzés:

    Ez az útmutató HTTP-kapcsolatot használ. Amikor Data API Builder-tárolót futtat a Dockerben, láthatja, hogy csak a HTTP-végpont van leképezve. Ha azt szeretné, hogy a Docker-tároló támogassa a HTTPS-t a helyi fejlesztéshez, meg kell adnia saját SSL/TLS-tanúsítványt és titkos kulcsfájlokat az SSL/TLS titkosításhoz, és el kell helyeznie a HTTPS-portot. Fordított proxyval is kényszeríthető, hogy az ügyfelek HTTPS-en keresztül csatlakozzanak a kiszolgálóhoz, hogy a kommunikációs csatorna titkosítva legyen, mielőtt továbbítanák a kérést a tárolónak.

Portazonosítás

A Data API Builder meghatározza, hogy melyik HTTP-portot használja a belső műveletekhez (állapotellenőrzésekhez, belső HTTP-hívásokhoz) az alábbi elsőbbséget használva:

Priority Környezet változó Jegyzetek
1 ASPNETCORE_URLS Elemzi az ELSŐ portot az URL-listából (például http://*:8080).
2 ASPNETCORE_HTTP_PORTS .NET 8+ konténerváltozó. Az első megadott portot használja.
3 DEFAULT_PORT DAB-specifikus tartalékmegoldás. .NET vagy Azure Container Apps nem ismeri fel.
4 (nincs megadva) Alapértelmezés szerint a(z) 5000 portot használja.

Ha egy változó be van állítva, de érvénytelen értéket tartalmaz, a DAB a következő lehetőségre tér át.

Scenario Használt port
ASPNETCORE_URLS=http://*:8080 8080
ASPNETCORE_HTTP_PORTS=7071 7071
DEFAULT_PORT=6000 6000
Nincs környezeti változókészlet 5000

Megjegyzés:

DEFAULT_PORT EGY DAB-specifikus környezeti változó. .NET, Azure Container Apps és más üzemeltetési platformok nem ismerik fel. Csak az egyéni üzembe helyezési forgatókönyvek tartalékaként használja.

Platformtámogatás

A DAB-tárolólemezképek csak x86-64-hez (amd64) készültek. Az ARM64 jelenleg nem támogatott.