Bagikan melalui


Menjalankan penyusun API Data dalam kontainer Docker

Penyusun API Data (DAB) diterbitkan sebagai gambar kontainer ke Microsoft Container Registry. Setiap host Docker dapat menarik gambar kontainer dan menjalankan DAB dengan konfigurasi minimal. Panduan ini menggunakan gambar kontainer dan file konfigurasi lokal untuk menghosting dan menjalankan DAB dengan cepat tanpa perlu menginstal alat tambahan apa pun.

Prasyarat

Membuat data sampel

Untuk panduan singkat ini, tabel sederhana dengan beberapa baris data cukup untuk menunjukkan cara menggunakan DAB dalam kontainer Docker. Untuk menyederhanakan hal-hal lebih lanjut, kami menggunakan SQL Server untuk Linux dalam gambar kontainer Docker.

  1. Tarik gambar kontainer mcr.microsoft.com/mssql/server:2022-latest.

    docker pull mcr.microsoft.com/mssql/server:2022-latest
    
  2. Jalankan gambar kontainer yang menerbitkan 1433 port dan atur sa kata sandi akun ke kata sandi unik yang Anda gunakan di seluruh panduan ini.

    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
    

    Penting

    Ini adalah kata sandi fiktif sederhana untuk panduan ini. Di dunia nyata, Anda akan menggunakan mekanisme autentikasi yang berbeda dan idealnya akun yang berbeda.

  3. Sambungkan ke server SQL menggunakan klien atau alat pilihan Anda. String koneksi adalah Server=localhost,1433;User Id=sa;Password=<your-password>;TrustServerCertificate=true;.

  4. Buat database baru bernama Library jika belum ada.

    IF NOT EXISTS(SELECT name FROM sys.databases WHERE name = 'Library')
    BEGIN
        CREATE DATABASE Library;
    END
    GO
    
    USE Library
    
  5. Buat tabel bernama Books dengan kolom id, title, year, dan 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. Sisipkan empat contoh baris buku ke dalam tabel Books.

    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. Uji data Anda dengan kueri sederhana SELECT * .

    SELECT * FROM dbo.Books
    

Membuat file konfigurasi

Buat file konfigurasi yang memetakan ke tabel yang dibuat di langkah-langkah sebelumnya. File konfigurasi ini menjelaskan kepada DAB cara memetakan titik akhir REST dan GraphQL ke data Anda yang sebenarnya.

  1. Buat file bernama dab-config.json.

    Petunjuk / Saran

    Ini adalah nama file default untuk file konfigurasi. Dengan menggunakan nama file default, Anda menghindari harus menentukan file konfigurasi saat menjalankan kontainer.

  2. Tambahkan konten JSON ini ke file Anda. Konfigurasi ini membuat satu entitas bernama book yang dipetakan ke tabel yang ada dbo.Books .

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

Menarik dan menjalankan gambar kontainer Docker

Jalankan DAB menggunakan gambar kontainer Docker yang dihosting di Microsoft Container Registry. Saat menjalankan gambar kontainer, pasang direktori sehingga DAB dapat membaca file konfigurasi.

  1. mcr.microsoft.com/azure-databases/data-api-builder Tarik gambar kontainer Docker.

    docker pull mcr.microsoft.com/azure-databases/data-api-builder
    
  2. Jalankan kontainer dengan mempublikasikan port 5000 dan memasang bind file dab-config.json.

    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. Gunakan browser web untuk menavigasi ke http://localhost:5000/api/book. Output harus berupa array JSON item buku dari titik akhir 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
        }
      ]
    }
    

    Nota

    Panduan ini menggunakan koneksi HTTP. Saat menjalankan kontainer penyusun API Data di Docker, Anda akan melihat bahwa hanya titik akhir HTTP yang dipetakan. Jika Anda ingin kontainer Docker mendukung HTTPS untuk pengembangan lokal, Anda perlu menyediakan sertifikat SSL/TLS Anda sendiri dan file kunci privat yang diperlukan untuk enkripsi SSL/TLS dan mengekspos port HTTPS. Proksi terbalik juga dapat digunakan untuk memberlakukan bahwa klien terhubung ke server Anda melalui HTTPS untuk memastikan bahwa saluran komunikasi dienkripsi sebelum meneruskan permintaan ke kontainer Anda.