Aracılığıyla paylaş


Docker kapsayıcısında Veri API oluşturucusu çalıştırma

Veri API oluşturucusu (DAB), Microsoft Container Registry'de kapsayıcı görüntüsü olarak yayımlanır. Herhangi bir Docker konağı kapsayıcı görüntüsünü aşağı çekebilir ve DAB'yi en az yapılandırmayla çalıştırabilir. Bu kılavuz, ek araçlar yüklemeye gerek kalmadan DAB'yi hızlı bir şekilde barındırmak ve çalıştırmak için kapsayıcı görüntüsünü ve yerel yapılandırma dosyasını kullanır.

Önkoşullar

Örnek veri oluşturma

Bu kısa kılavuzda, docker kapsayıcısında DAB'nin nasıl kullanılacağını göstermek için birkaç veri satırı içeren basit bir tablo yeterlidir. İşleri daha da basitleştirmek için Docker kapsayıcı görüntüsünde Linux için SQL Server kullanırız.

  1. mcr.microsoft.com/mssql/server:2022-latest Kapsayıcı görüntüsünü çekin.

    docker pull mcr.microsoft.com/mssql/server:2022-latest
    
  2. Bağlantı noktasını yayımlayan 1433 kapsayıcı görüntüsünü çalıştırın ve hesap parolasını bu kılavuz boyunca kullandığınız benzersiz bir parolaya ayarlayın sa .

    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
    

    Önemli

    Bu, bu kılavuz için basit bir kolay paroladır. Gerçek dünyada farklı bir kimlik doğrulama mekanizması ve ideal olarak farklı bir hesap kullanırsınız.

  3. Tercih ettiğiniz istemciyi veya aracı kullanarak SQL sunucusuna bağlanın. bağlantı dizesi şeklindedirServer=localhost,1433;User Id=sa;Password=<your-password>;TrustServerCertificate=true;.

  4. henüz yoksa adlı Library yeni bir veritabanı İçerik Oluşturucu.

    IF NOT EXISTS(SELECT name FROM sys.databases WHERE name = 'Library')
    BEGIN
        CREATE DATABASE Library;
    END
    GO
    
    USE Library
    
  5. , , yeartitleve pages sütunlarıyla idadlı Books bir tablo İçerik Oluşturucu.

    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. Tabloya Books dört örnek kitap satırı ekleyin.

    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. Verilerinizi basit SELECT * bir sorguyla test edin.

    SELECT * FROM dbo.Books
    

Yapılandırma dosyası oluşturma

Önceki adımlarda oluşturulan tabloyla eşleyen bir yapılandırma dosyası İçerik Oluşturucu. Bu yapılandırma dosyası, DAB'ye REST ve GraphQL uç noktalarını gerçek verilerinizle eşlemeyi açıklar.

  1. dab-config.json adlı bir dosya oluşturun.

    İpucu

    Bu, yapılandırma dosyaları için varsayılan dosya adıdır. Varsayılan dosya adını kullanarak, kapsayıcıyı çalıştırırken yapılandırma dosyasını belirtmek zorunda kalmamak gerekir.

  2. Bu JSON içeriğini dosyanıza ekleyin. Bu yapılandırma, mevcut dbo.Books tabloyla eşlenmiş adlı book tek bir varlık oluşturur.

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

Docker kapsayıcı görüntüsünü çekme ve çalıştırma

Microsoft Container Registry'de barındırılan Docker kapsayıcı görüntüsünü kullanarak DAB'yi çalıştırın. Kapsayıcı görüntüsünü çalıştırırken DAB'nin yapılandırma dosyasını okuyabilmesi için bir dizin bağlayın.

  1. Docker kapsayıcı görüntüsünü mcr.microsoft.com/azure-databases/data-api-builder çekin.

    docker pull mcr.microsoft.com/azure-databases/data-api-builder
    
  2. Bağlantı noktasını yayımlayarak kapsayıcıyı 5000 çalıştırın ve dosyayı bağlamayı dab-config.json bağlayın.

    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. adresine gitmek http://localhost:5000/api/bookiçin bir web tarayıcısı kullanın. Çıktı, REST API uç noktasından bir JSON kitap öğeleri dizisi olmalıdır.

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

    Not

    Bu kılavuzda HTTP bağlantısı kullanılır. Docker'da bir Veri API'si oluşturucu kapsayıcısı çalıştırırken yalnızca HTTP uç noktasının eşlendiğini görürsünüz. Docker kapsayıcınızın yerel geliştirme için HTTPS'yi desteklemesini istiyorsanız, SSL/TLS şifrelemesi için gereken kendi SSL/TLS sertifikanızı ve özel anahtar dosyalarınızı sağlamanız ve HTTPS bağlantı noktasını kullanıma sunmanız gerekir. ters ara sunucu, istemcilerin isteği kapsayıcınıza iletmeden önce iletişim kanalının şifrelendiğinden emin olmak için HTTPS üzerinden sunucunuza bağlanmasını zorunlu kılmak için de kullanılabilir.