扩展元数据
The metadata.json file
metadata.json 文件是您的扩展的入口点。它包含扩展的元数据,例如名称、版本和描述。此外,它还包含构建和运行扩展所需的信息。Docker 扩展的镜像必须在其文件系统根目录下包含一个 metadata.json 文件。
metadata.json 文件的格式必须为:
{
"icon": "extension-icon.svg",
"ui": ...
"vm": ...
"host": ...
}ui、vm 和 host 部分为可选项,具体取决于某一扩展所提供的内容。这些部分用于描述待安装的扩展内容。
UI section
ui 部分定义了一个添加到 Docker Desktop 仪表板中的新标签页。其格式如下:
"ui":{
"dashboard-tab":
{
"title":"MyTitle",
"root":"/ui",
"src":"index.html"
}
}root 指定扩展镜像文件系统中用于存放用户界面(UI)代码的文件夹。
src 指定在扩展标签页中应加载的入口点。
其他 UI 扩展点将在未来提供。
VM section
vm 部分定义了一个在桌面虚拟机(Desktop VM)内部运行的后端服务。该部分必须定义一个 image 或 docker-compose.yaml 文件,用以指定在桌面虚拟机中运行的服务。
"vm": {
"image":"${DESKTOP_PLUGIN_IMAGE}"
},当您使用 image 时,将为该扩展自动生成一个默认的 compose 文件。
${DESKTOP_PLUGIN_IMAGE}是一个特定的关键字,可提供一种便捷方式来引用打包了该扩展的镜像。 此处也可以指定任何其他完整的镜像名称。然而,在许多情况下,使用同一镜像可以使扩展开发更为简便。
"vm": {
"composefile": "docker-compose.yaml"
},例如,包含卷定义的 Compose 文件将如下所示:
services:
myExtension:
image: ${DESKTOP_PLUGIN_IMAGE}
volumes:
- /host/path:/container/path主机部分
host 部分定义了 Docker Desktop 复制到宿主机的可执行文件。
"host": {
"binaries": [
{
"darwin": [
{
"path": "/darwin/myBinary"
},
],
"windows": [
{
"path": "/windows/myBinary.exe"
},
],
"linux": [
{
"path": "/linux/myBinary"
},
]
}
]
}binaries 定义了一个Binaries列表,Docker Desktop 会将这些文件从扩展镜像复制到宿主机。
path 指定镜像文件系统中的Binaries路径。Docker Desktop 负责将这些文件复制到其自身位置,JavaScript API 允许调用这些Binaries。
了解如何 调用可执行文件。