mirror of
https://github.com/lissy93/portainer-templates.git
synced 2026-11-04 09:15:08 +00:00
251 lines
8.4 KiB
JSON
251 lines
8.4 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"type": "object",
|
|
"title": "PortainerAppTemplateV3",
|
|
"properties": {
|
|
"version": {
|
|
"type": "string",
|
|
"const": "3",
|
|
"description": "The version of the Portainer App Template."
|
|
},
|
|
"templates": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"description": "Unique identifier for the template."
|
|
},
|
|
"type": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 4,
|
|
"description": "The type of the application (1=container, 2=swarm stack, 3=compose stack, 4=compose edge stack)."
|
|
},
|
|
"title": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"description": "The title of the application."
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"description": "A brief description of the application."
|
|
},
|
|
"categories": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"description": "An array of categories the application belongs to."
|
|
},
|
|
"platform": {
|
|
"type": "string",
|
|
"enum": ["linux", "windows"],
|
|
"description": "The target platform of the application; omit for multi-platform."
|
|
},
|
|
"logo": {
|
|
"type": "string",
|
|
"format": "uri",
|
|
"description": "A URI to the logo of the application."
|
|
},
|
|
"image": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"description": "The name of the Docker image used for the application."
|
|
},
|
|
"restart_policy": {
|
|
"type": "string",
|
|
"enum": ["always", "unless-stopped", "on-failure", "no"],
|
|
"description": "The restart policy for the application."
|
|
},
|
|
"ports": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"description": "An array of port mappings for the application."
|
|
},
|
|
"volumes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"container": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"description": "The container path for the volume binding."
|
|
},
|
|
"bind": {
|
|
"type": "string",
|
|
"description": "The host path for the volume binding."
|
|
},
|
|
"readonly": {
|
|
"type": "boolean",
|
|
"description": "Whether the volume is read-only."
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"required": ["container"]
|
|
},
|
|
"description": "An array of volume mappings for the application."
|
|
},
|
|
"env": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"description": "The name of the environment variable."
|
|
},
|
|
"label": {
|
|
"type": "string",
|
|
"description": "Display label for the environment variable."
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"description": "Description of the environment variable."
|
|
},
|
|
"default": {
|
|
"type": "string",
|
|
"description": "The default value for the environment variable."
|
|
},
|
|
"preset": {
|
|
"type": "boolean",
|
|
"description": "When true, the variable is applied silently with its default value."
|
|
},
|
|
"select": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": { "type": "string" },
|
|
"value": { "type": "string" },
|
|
"default": { "type": "boolean" }
|
|
},
|
|
"additionalProperties": false,
|
|
"required": ["text", "value"]
|
|
},
|
|
"description": "Dropdown options for the environment variable."
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"required": ["name"]
|
|
},
|
|
"description": "Environment variables for the template."
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"value": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"required": ["name", "value"]
|
|
},
|
|
"description": "Docker labels for the template."
|
|
},
|
|
"repository": {
|
|
"type": "object",
|
|
"properties": {
|
|
"url": {
|
|
"type": "string",
|
|
"format": "uri",
|
|
"description": "URL of the git repository."
|
|
},
|
|
"stackfile": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"description": "Path to the stack file within the repository."
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"required": ["url", "stackfile"],
|
|
"description": "Repository details for stack templates (types 2 and 3)."
|
|
},
|
|
"note": {
|
|
"type": "string",
|
|
"description": "Usage or deployment notes (supports HTML)."
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"description": "Default name for the stack/container."
|
|
},
|
|
"administrator_only": {
|
|
"type": "boolean",
|
|
"description": "Whether the template is only available to administrators."
|
|
},
|
|
"registry": {
|
|
"type": "string",
|
|
"description": "Registry to pull the image from."
|
|
},
|
|
"command": {
|
|
"type": "string",
|
|
"description": "Command to run in the container."
|
|
},
|
|
"network": {
|
|
"type": "string",
|
|
"description": "Network to attach the container to."
|
|
},
|
|
"privileged": {
|
|
"type": "boolean",
|
|
"description": "Whether to run the container in privileged mode."
|
|
},
|
|
"interactive": {
|
|
"type": "boolean",
|
|
"description": "Whether the container requires an interactive shell."
|
|
},
|
|
"hostname": {
|
|
"type": "string",
|
|
"description": "Hostname for the container."
|
|
},
|
|
"stackFile": {
|
|
"type": "string",
|
|
"description": "Inline stack file content. When present, Portainer uses this directly instead of cloning the repository."
|
|
},
|
|
"maintainer": {
|
|
"type": "string",
|
|
"description": "Maintainer of the template (metadata added by this repo; ignored by Portainer)."
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"required": ["id", "type", "title", "description"],
|
|
"allOf": [
|
|
{
|
|
"if": { "properties": { "type": { "const": 1 } } },
|
|
"then": { "required": ["image"] }
|
|
},
|
|
{
|
|
"if": { "properties": { "type": { "const": 2 } } },
|
|
"then": { "required": ["repository"] }
|
|
},
|
|
{
|
|
"if": { "properties": { "type": { "const": 3 } } },
|
|
"then": { "required": ["repository"] }
|
|
},
|
|
{
|
|
"if": { "properties": { "type": { "const": 4 } } },
|
|
"then": { "anyOf": [{ "required": ["stackFile"] }, { "required": ["repository"] }] }
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"required": ["version", "templates"]
|
|
}
|