Docker kapsayıcısında Veri API'si 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ılavuzda kapsayıcı görüntüsü ve yerel yapılandırma dosyası, ek araçlar yüklemeye gerek kalmadan DAB'yi hızlı bir şekilde barındırmak ve çalıştırmak için kullanılı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ç satır veri 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 parola, bu kılavuz için basit bir kurgusal değerdir. 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 şeklindedir Server=localhost,1433;User Id=sa;Password=<your-password>;TrustServerCertificate=true;.

  4. Eğer henüz yoksa, Library adlı yeni bir veritabanı oluşturun.

    IF NOT EXISTS(SELECT name FROM sys.databases WHERE name = 'Library')
    BEGIN
        CREATE DATABASE Library;
    END
    GO
    
    USE Library
    
  5. Books adlı id, title, year ve pages sütunlarıyla bir tablo oluşturun.

    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ı oluşturun. Bu yapılandırma dosyasında DAB'ye REST ve GraphQL uç noktalarının gerçek verilerinizle nasıl eşlenmesi açıklanır.

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

    Tavsiye

    Bu dosya adı, yapılandırma dosyaları için varsayılandı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 book tabloya eşlenmiş adlı dbo.Books 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"
            }
          ]
        }
      }
    }
    

Özel docker kapsayıcı görüntüsü oluşturma ve çalıştırma

öğesini içeren dab-config.jsonözel bir görüntü oluşturun ve görüntüyü yerel olarak çalıştırın.

  1. ile aynı klasörde dab-config.jsonbir Dockerfile oluşturun.

    FROM mcr.microsoft.com/azure-databases/data-api-builder:latest
    COPY dab-config.json /App/dab-config.json
    
  2. Görüntüyü oluşturun.

    docker build -t dab-local:1 .
    
  3. Kapsayıcıyı, 5000 bağlantı noktasını yayımlayarak çalıştırın.

    docker run \
      --name dab \
      --publish 5000:5000 \
      --detach \
      dab-local:1
    
  4. Bir web tarayıcısı kullanarak http://localhost:5000/api/book adresine gidin. Çı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
        }
      ]
    }
    

    Uyarı

    Bu kılavuzda BIR 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, isteği kapsayıcınıza iletmeden önce iletişim kanalının şifrelendiğinden emin olmak için istemcilerin sunucunuza HTTPS üzerinden bağlanmasını zorunlu kılmak için de kullanılabilir.

Bağlantı noktası çözünürlüğü

Veri API'si oluşturucusu, bu önceliği kullanarak iç işlemler (sistem durumu denetimleri, iç HTTP çağrıları) için hangi HTTP bağlantı noktasının kullanılacağını belirler:

Priority Ortam değişkeni Notlar
1 ASPNETCORE_URLS URL listesinden ilk bağlantı noktasını ayrıştırıyor (örneğin, http://*:8080).
2 ASPNETCORE_HTTP_PORTS .NET 8+ konteyner değişkeni. Belirtilen ilk bağlantı noktasını kullanır.
3 DEFAULT_PORT DAB'ye özgü geri dönüş. .NET veya Azure Container Apps tarafından tanınmaz.
4 (hiçbiri ayarlanmadı) Varsayılan olarak 5000 bağlantı noktasını kullanır.

Bir değişken ayarlanmışsa ancak geçersiz bir değer içeriyorsa, DAB sonraki seçeneğe geçer.

Scenario Kullanılan bağlantı noktası
ASPNETCORE_URLS=http://*:8080 8080
ASPNETCORE_HTTP_PORTS=7071 7071
DEFAULT_PORT=6000 6000
Ortam değişken kümesi yok 5000

Uyarı

DEFAULT_PORT DAB'ye özgü bir ortam değişkenidir. .NET, Azure Container Apps ve diğer barındırma platformları bunu tanımaz. Bunu yalnızca özel dağıtım senaryoları için geri dönüş olarak kullanın.

Platform desteği

DAB kapsayıcı görüntüleri yalnızca x86-64 (amd64) için oluşturulur. ARM64 şu anda desteklenmiyor.