Metadatos de la extensión
El archivo metadata.json
El archivo metadata.json es el punto de entrada para tu extensión. Contiene los metadatos de tu extensión, como el nombre, la versión y la descripción. También contiene la información necesaria para compilar y ejecutar tu extensión. La imagen de una extensión de Docker debe incluir un archivo metadata.json en la raíz de su sistema de archivos.
El formato del archivo metadata.json debe ser:
{
"icon": "extension-icon.svg",
"ui": ...
"vm": ...
"host": ...
}Las secciones ui, vm y host son opcionales y dependen de lo que proporcione una extensión determinada. Describen el contenido de la extensión que se va a instalar.
Sección UI
La sección ui define una nueva pestaña que se añade al panel de control (dashboard) en Docker Desktop. Sigue la siguiente estructura:
"ui":{
"dashboard-tab":
{
"title":"MyTitle",
"root":"/ui",
"src":"index.html"
}
}root especifica la carpeta donde se encuentra el código de la UI dentro del sistema de archivos de la imagen de la extensión.
src especifica el punto de entrada (entrypoint) que debe cargarse en la pestaña de la extensión.
En el futuro habrá disponibles otros puntos de extensión de la UI.
Sección VM
La sección vm define un servicio de backend que se ejecuta dentro de la VM de Desktop. Debe definir una image (imagen) o un archivo compose.yaml que especifique qué servicio ejecutar en la VM de Desktop.
"vm": {
"image":"${DESKTOP_PLUGIN_IMAGE}"
},Cuando utilizas image, se genera un archivo compose predeterminado para la extensión.
${DESKTOP_PLUGIN_IMAGE}es una palabra clave específica que permite una forma sencilla de referirse a la imagen que empaqueta la extensión. También es posible especificar aquí cualquier otro nombre de imagen completo. Sin embargo, en muchos casos, el uso de la misma imagen facilita el desarrollo de la extensión.
"vm": {
"composefile": "compose.yaml"
},El archivo Compose, con una definición de volumen por ejemplo, se vería así:
services:
myExtension:
image: ${DESKTOP_PLUGIN_IMAGE}
volumes:
- /host/path:/container/pathSección Host
La sección host define ejecutables que Docker Desktop copia en el host.
"host": {
"binaries": [
{
"darwin": [
{
"path": "/darwin/myBinary"
},
],
"windows": [
{
"path": "/windows/myBinary.exe"
},
],
"linux": [
{
"path": "/linux/myBinary"
},
]
}
]
}binaries define una lista de binarios que Docker Desktop copia desde la imagen de la extensión al host.
path especifica la ruta del binario en el sistema de archivos de la imagen. Docker Desktop se encarga de copiar estos archivos en su propia ubicación, y la API de JavaScript permite invocar estos binarios.
Aprende a invocar ejecutables.