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

  • Docker
  • Klien database (SQL Server Management Studio, Azure Data Studio, dll.)

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. mcr.microsoft.com/mssql/server:2022-latest Tarik gambar kontainer.

    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 fiktiu 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. Create 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. Create tabel bernama Books dengan kolom , , titleyear, dan pagesid.

    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 Books dalam tabel.

    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

Create 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.

    Tip

    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 dbo.Books ada.

    {
      "$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 yang 5000 menerbitkan port dan ikat pemasangan dab-config.json file.

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

    Catatan

    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 Anda mendukung HTTPS untuk pengembangan lokal, Anda perlu memberikan 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.