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