다음을 통해 공유


Docker 컨테이너에서 데이터 API 작성기 실행

DAB(데이터 API 작성기)는 Microsoft Container Registry에 컨테이너 이미지로 게시됩니다. 모든 Docker 호스트는 컨테이너 이미지를 끌어오고 최소한의 구성으로 DAB를 실행할 수 있습니다. 이 가이드에서는 컨테이너 이미지와 로컬 구성 파일을 사용하여 추가 도구를 설치할 필요 없이 DAB를 신속하게 호스트하고 실행합니다.

사전 요구 사항

샘플 데이터 만들기

이 간단한 가이드의 경우 몇 개의 데이터 행이 있는 간단한 테이블은 Docker 컨테이너에서 DAB를 사용하는 방법을 보여 주기에 충분합니다. 작업을 간소화하기 위해 Docker 컨테이너 이미지에서 Linux용 SQL Server 사용합니다.

  1. 컨테이너 이미지를 끌어오세요 mcr.microsoft.com/mssql/server:2022-latest .

    docker pull mcr.microsoft.com/mssql/server:2022-latest
    
  2. 포트를 게시 1433 하고 계정 암호를 이 가이드 전체에서 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
    

    중요

    이 가이드의 간단한 암호입니다. 실제 환경에서는 다른 인증 메커니즘과 다른 계정을 사용하는 것이 좋습니다.

  3. 원하는 클라이언트 또는 도구를 사용하여 SQL 서버에 연결합니다. 연결 문자열은 Server=localhost,1433;User Id=sa;Password=<your-password>;TrustServerCertificate=true;입니다.

  4. 새 데이터베이스가 없는 경우 라는 Library 새 데이터베이스를 Create.

    IF NOT EXISTS(SELECT name FROM sys.databases WHERE name = 'Library')
    BEGIN
        CREATE DATABASE Library;
    END
    GO
    
    USE Library
    
  5. , , yeartitlepages 열이 있는 라는 Booksid테이블을 Create.

    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. 표에 4개의 샘플 책 행을 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. 간단한 SELECT * 쿼리를 사용하여 데이터를 테스트합니다.

    SELECT * FROM dbo.Books
    

구성 파일 만들기

이전 단계에서 만든 테이블에 매핑되는 구성 파일을 Create. 이 구성 파일은 DAB에 REST 및 GraphQL 엔드포인트를 실제 데이터에 매핑하는 방법을 설명합니다.

  1. dab-config.json라는 파일을 만듭니다.

    구성 파일의 기본 파일 이름입니다. 기본 파일 이름을 사용하면 컨테이너를 실행할 때 구성 파일을 지정할 필요가 없습니다.

  2. 이 JSON 콘텐츠를 파일에 추가합니다. 이 구성은 기존 dbo.Books 테이블에 매핑된 라는 book 단일 엔터티를 만듭니다.

    {
      "$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 컨테이너 이미지 끌어오기 및 실행

Microsoft Container Registry에서 호스트되는 Docker 컨테이너 이미지를 사용하여 DAB를 실행합니다. 컨테이너 이미지를 실행할 때 DAB가 구성 파일을 읽을 수 있도록 디렉터리를 탑재합니다.

  1. mcr.microsoft.com/azure-databases/data-api-builder Docker 컨테이너 이미지를 가져옵니다.

    docker pull mcr.microsoft.com/azure-databases/data-api-builder
    
  2. 포트를 게시하는 컨테이너를 5000 실행하고 파일 탑재를 바인딩합니다 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. 웹 브라우저를 사용하여 로 이동합니다 http://localhost:5000/api/book. 출력은 REST API 엔드포인트에서 책 항목의 JSON 배열이어야 합니다.

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

    참고

    이 가이드에서는 HTTP 연결을 사용합니다. Docker에서 데이터 API 작성기 컨테이너를 실행하는 경우 HTTP 엔드포인트만 매핑되는 것을 볼 수 있습니다. Docker 컨테이너가 로컬 개발을 위해 HTTPS를 지원하도록 하려면 SSL/TLS 암호화에 필요한 고유한 SSL/TLS 인증서 및 프라이빗 키 파일을 제공하고 HTTPS 포트를 노출해야 합니다. 역방향 프록시를 사용하여 클라이언트가 HTTPS를 통해 서버에 연결하여 컨테이너에 요청을 전달하기 전에 통신 채널이 암호화되도록 할 수도 있습니다.