확장 메타데이터

확장 메타데이터 (Extension metadata)

확장의 진입점인 metadata.json 파일과 그 안의 ui, vm, host 섹션을 설명하는 문서예요.

출처: 문서

본문

metadata.json 파일 (The metadata.json file)

metadata.json 파일은 확장의 진입점이에요. 이름, 버전, 설명 같은 확장의 메타데이터를 포함해요. 또한 확장을 빌드하고 실행하는 데 필요한 정보도 포함해요. Docker 확장의 이미지는 파일 시스템의 루트에 metadata.json 파일을 포함해야 해요.

metadata.json 파일의 형식은 다음과 같아야 해요:

{
    "icon": "extension-icon.svg",
    "ui": ...
    "vm": ...
    "host": ...
}

ui, vm, host 섹션은 선택 사항이며 주어진 확장이 제공하는 것에 따라 달라져요. 이들은 설치할 확장 콘텐츠를 설명해요.

UI 섹션 (UI section)

ui 섹션은 Docker Desktop의 dashboard에 추가되는 새 탭을 정의해요. 형식은 다음과 같아요:

"ui":{
    "dashboard-tab":
    {
        "title":"MyTitle",
        "root":"/ui",
        "src":"index.html"
    }
}
  • root는 UI 코드가 있는 확장 이미지 파일 시스템 내의 폴더를 지정해요.
  • src는 확장 탭에서 로드해야 하는 진입점(entrypoint)을 지정해요.

다른 UI 확장 지점은 향후에 제공될 예정이에요.

VM 섹션 (VM section)

vm 섹션은 Desktop VM 내부에서 실행되는 백엔드 서비스를 정의해요. Desktop VM에서 실행할 서비스를 지정하는 image 또는 compose.yaml 파일 중 하나를 정의해야 해요.

"vm": {
    "image":"${DESKTOP_PLUGIN_IMAGE}"
},

image를 사용하면 확장을 위한 기본 compose 파일이 생성돼요.

${DESKTOP_PLUGIN_IMAGE}는 확장을 패키징하는 이미지를 쉽게 참조할 수 있게 해주는 특별한 키워드예요. 여기에 다른 전체 이미지 이름을 지정할 수도 있어요. 하지만 많은 경우 동일한 이미지를 사용하는 것이 확장 개발을 더 쉽게 만들어요.

"vm": {
    "composefile": "compose.yaml"
},

예를 들어 볼륨 정의가 있는 Compose 파일은 다음과 같아요:

services:
  myExtension:
    image: ${DESKTOP_PLUGIN_IMAGE}
    volumes:
      - /host/path:/container/path

Host 섹션 (Host section)

host 섹션은 Docker Desktop이 호스트에 복사하는 실행 파일을 정의해요.

  "host": {
    "binaries": [
      {
        "darwin": [
          {
            "path": "/darwin/myBinary"
          },
        ],
        "windows": [
          {
            "path": "/windows/myBinary.exe"
          },
        ],
        "linux": [
          {
            "path": "/linux/myBinary"
          },
        ]
      }
    ]
  }
  • binaries는 Docker Desktop이 확장 이미지에서 호스트로 복사하는 바이너리 목록을 정의해요.
  • path는 이미지 파일 시스템에서 바이너리 경로를 지정해요. Docker Desktop은 이러한 파일을 자체 위치에 복사하고, JavaScript API가 이 바이너리를 호출할 수 있게 해요.

실행 파일 호출하는 방법을 알아보세요.

더 알아보기 (Learn more)