mirror of
https://github.com/Dokploy/dokploy.git
synced 2026-06-19 06:05:25 +02:00
- Implement Docker Compose file autocompletion in CodeMirror - Add comprehensive suggestions for top-level and service-level keys - Include a JSON schema for Docker Compose file validation - Enhance code editor with intelligent YAML editing support
1079 lines
28 KiB
JSON
1079 lines
28 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2019-09/schema#",
|
|
"id": "compose_spec.json",
|
|
"type": "object",
|
|
"title": "Compose Specification",
|
|
"description": "The Compose file is a YAML file defining a multi-containers based application.",
|
|
|
|
"properties": {
|
|
"version": {
|
|
"type": "string",
|
|
"description": "declared for backward compatibility, ignored."
|
|
},
|
|
|
|
"name": {
|
|
"type": "string",
|
|
"description": "define the Compose project name, until user defines one explicitly."
|
|
},
|
|
|
|
"include": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/include"
|
|
},
|
|
"description": "compose sub-projects to be included."
|
|
},
|
|
|
|
"services": {
|
|
"id": "#/properties/services",
|
|
"type": "object",
|
|
"patternProperties": {
|
|
"^[a-zA-Z0-9._-]+$": {
|
|
"$ref": "#/definitions/service"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
|
|
"networks": {
|
|
"id": "#/properties/networks",
|
|
"type": "object",
|
|
"patternProperties": {
|
|
"^[a-zA-Z0-9._-]+$": {
|
|
"$ref": "#/definitions/network"
|
|
}
|
|
}
|
|
},
|
|
|
|
"volumes": {
|
|
"id": "#/properties/volumes",
|
|
"type": "object",
|
|
"patternProperties": {
|
|
"^[a-zA-Z0-9._-]+$": {
|
|
"$ref": "#/definitions/volume"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
|
|
"secrets": {
|
|
"id": "#/properties/secrets",
|
|
"type": "object",
|
|
"patternProperties": {
|
|
"^[a-zA-Z0-9._-]+$": {
|
|
"$ref": "#/definitions/secret"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
|
|
"configs": {
|
|
"id": "#/properties/configs",
|
|
"type": "object",
|
|
"patternProperties": {
|
|
"^[a-zA-Z0-9._-]+$": {
|
|
"$ref": "#/definitions/config"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
|
|
"patternProperties": { "^x-": {} },
|
|
"additionalProperties": false,
|
|
|
|
"definitions": {
|
|
"service": {
|
|
"id": "#/definitions/service",
|
|
"type": "object",
|
|
|
|
"properties": {
|
|
"develop": { "$ref": "#/definitions/development" },
|
|
"deploy": { "$ref": "#/definitions/deployment" },
|
|
"annotations": { "$ref": "#/definitions/list_or_dict" },
|
|
"attach": { "type": ["boolean", "string"] },
|
|
"build": {
|
|
"oneOf": [
|
|
{ "type": "string" },
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"context": { "type": "string" },
|
|
"dockerfile": { "type": "string" },
|
|
"dockerfile_inline": { "type": "string" },
|
|
"entitlements": {
|
|
"type": "array",
|
|
"items": { "type": "string" }
|
|
},
|
|
"args": { "$ref": "#/definitions/list_or_dict" },
|
|
"ssh": { "$ref": "#/definitions/list_or_dict" },
|
|
"labels": { "$ref": "#/definitions/list_or_dict" },
|
|
"cache_from": {
|
|
"type": "array",
|
|
"items": { "type": "string" }
|
|
},
|
|
"cache_to": { "type": "array", "items": { "type": "string" } },
|
|
"no_cache": { "type": ["boolean", "string"] },
|
|
"additional_contexts": { "$ref": "#/definitions/list_or_dict" },
|
|
"network": { "type": "string" },
|
|
"pull": { "type": ["boolean", "string"] },
|
|
"target": { "type": "string" },
|
|
"shm_size": { "type": ["integer", "string"] },
|
|
"extra_hosts": { "$ref": "#/definitions/extra_hosts" },
|
|
"isolation": { "type": "string" },
|
|
"privileged": { "type": ["boolean", "string"] },
|
|
"secrets": { "$ref": "#/definitions/service_config_or_secret" },
|
|
"tags": { "type": "array", "items": { "type": "string" } },
|
|
"ulimits": { "$ref": "#/definitions/ulimits" },
|
|
"platforms": { "type": "array", "items": { "type": "string" } }
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
}
|
|
]
|
|
},
|
|
"blkio_config": {
|
|
"type": "object",
|
|
"properties": {
|
|
"device_read_bps": {
|
|
"type": "array",
|
|
"items": { "$ref": "#/definitions/blkio_limit" }
|
|
},
|
|
"device_read_iops": {
|
|
"type": "array",
|
|
"items": { "$ref": "#/definitions/blkio_limit" }
|
|
},
|
|
"device_write_bps": {
|
|
"type": "array",
|
|
"items": { "$ref": "#/definitions/blkio_limit" }
|
|
},
|
|
"device_write_iops": {
|
|
"type": "array",
|
|
"items": { "$ref": "#/definitions/blkio_limit" }
|
|
},
|
|
"weight": { "type": ["integer", "string"] },
|
|
"weight_device": {
|
|
"type": "array",
|
|
"items": { "$ref": "#/definitions/blkio_weight" }
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"cap_add": {
|
|
"type": "array",
|
|
"items": { "type": "string" },
|
|
"uniqueItems": true
|
|
},
|
|
"cap_drop": {
|
|
"type": "array",
|
|
"items": { "type": "string" },
|
|
"uniqueItems": true
|
|
},
|
|
"cgroup": { "type": "string", "enum": ["host", "private"] },
|
|
"cgroup_parent": { "type": "string" },
|
|
"command": { "$ref": "#/definitions/command" },
|
|
"configs": { "$ref": "#/definitions/service_config_or_secret" },
|
|
"container_name": { "type": "string" },
|
|
"cpu_count": {
|
|
"oneOf": [{ "type": "string" }, { "type": "integer", "minimum": 0 }]
|
|
},
|
|
"cpu_percent": {
|
|
"oneOf": [
|
|
{ "type": "string" },
|
|
{ "type": "integer", "minimum": 0, "maximum": 100 }
|
|
]
|
|
},
|
|
"cpu_shares": { "type": ["number", "string"] },
|
|
"cpu_quota": { "type": ["number", "string"] },
|
|
"cpu_period": { "type": ["number", "string"] },
|
|
"cpu_rt_period": { "type": ["number", "string"] },
|
|
"cpu_rt_runtime": { "type": ["number", "string"] },
|
|
"cpus": { "type": ["number", "string"] },
|
|
"cpuset": { "type": "string" },
|
|
"credential_spec": {
|
|
"type": "object",
|
|
"properties": {
|
|
"config": { "type": "string" },
|
|
"file": { "type": "string" },
|
|
"registry": { "type": "string" }
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
},
|
|
"depends_on": {
|
|
"oneOf": [
|
|
{ "$ref": "#/definitions/list_of_strings" },
|
|
{
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"patternProperties": {
|
|
"^[a-zA-Z0-9._-]+$": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} },
|
|
"properties": {
|
|
"restart": { "type": ["boolean", "string"] },
|
|
"required": {
|
|
"type": "boolean",
|
|
"default": true
|
|
},
|
|
"condition": {
|
|
"type": "string",
|
|
"enum": [
|
|
"service_started",
|
|
"service_healthy",
|
|
"service_completed_successfully"
|
|
]
|
|
}
|
|
},
|
|
"required": ["condition"]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"device_cgroup_rules": { "$ref": "#/definitions/list_of_strings" },
|
|
"devices": {
|
|
"type": "array",
|
|
"items": {
|
|
"oneOf": [
|
|
{ "type": "string" },
|
|
{
|
|
"type": "object",
|
|
"required": ["source"],
|
|
"properties": {
|
|
"source": { "type": "string" },
|
|
"target": { "type": "string" },
|
|
"permissions": { "type": "string" }
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"dns": { "$ref": "#/definitions/string_or_list" },
|
|
"dns_opt": {
|
|
"type": "array",
|
|
"items": { "type": "string" },
|
|
"uniqueItems": true
|
|
},
|
|
"dns_search": { "$ref": "#/definitions/string_or_list" },
|
|
"domainname": { "type": "string" },
|
|
"entrypoint": { "$ref": "#/definitions/command" },
|
|
"env_file": { "$ref": "#/definitions/env_file" },
|
|
"label_file": { "$ref": "#/definitions/label_file" },
|
|
"environment": { "$ref": "#/definitions/list_or_dict" },
|
|
|
|
"expose": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": ["string", "number"],
|
|
"format": "expose"
|
|
},
|
|
"uniqueItems": true
|
|
},
|
|
"extends": {
|
|
"oneOf": [
|
|
{ "type": "string" },
|
|
{
|
|
"type": "object",
|
|
|
|
"properties": {
|
|
"service": { "type": "string" },
|
|
"file": { "type": "string" }
|
|
},
|
|
"required": ["service"],
|
|
"additionalProperties": false
|
|
}
|
|
]
|
|
},
|
|
"external_links": {
|
|
"type": "array",
|
|
"items": { "type": "string" },
|
|
"uniqueItems": true
|
|
},
|
|
"extra_hosts": { "$ref": "#/definitions/extra_hosts" },
|
|
"gpus": { "$ref": "#/definitions/gpus" },
|
|
"group_add": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": ["string", "number"]
|
|
},
|
|
"uniqueItems": true
|
|
},
|
|
"healthcheck": { "$ref": "#/definitions/healthcheck" },
|
|
"hostname": { "type": "string" },
|
|
"image": { "type": "string" },
|
|
"init": { "type": ["boolean", "string"] },
|
|
"ipc": { "type": "string" },
|
|
"isolation": { "type": "string" },
|
|
"labels": { "$ref": "#/definitions/list_or_dict" },
|
|
"links": {
|
|
"type": "array",
|
|
"items": { "type": "string" },
|
|
"uniqueItems": true
|
|
},
|
|
"logging": {
|
|
"type": "object",
|
|
|
|
"properties": {
|
|
"driver": { "type": "string" },
|
|
"options": {
|
|
"type": "object",
|
|
"patternProperties": {
|
|
"^.+$": { "type": ["string", "number", "null"] }
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
},
|
|
"mac_address": { "type": "string" },
|
|
"mem_limit": { "type": ["number", "string"] },
|
|
"mem_reservation": { "type": ["string", "integer"] },
|
|
"mem_swappiness": { "type": ["integer", "string"] },
|
|
"memswap_limit": { "type": ["number", "string"] },
|
|
"network_mode": { "type": "string" },
|
|
"networks": {
|
|
"oneOf": [
|
|
{ "$ref": "#/definitions/list_of_strings" },
|
|
{
|
|
"type": "object",
|
|
"patternProperties": {
|
|
"^[a-zA-Z0-9._-]+$": {
|
|
"oneOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"aliases": { "$ref": "#/definitions/list_of_strings" },
|
|
"ipv4_address": { "type": "string" },
|
|
"ipv6_address": { "type": "string" },
|
|
"link_local_ips": {
|
|
"$ref": "#/definitions/list_of_strings"
|
|
},
|
|
"mac_address": { "type": "string" },
|
|
"driver_opts": {
|
|
"type": "object",
|
|
"patternProperties": {
|
|
"^.+$": { "type": ["string", "number"] }
|
|
}
|
|
},
|
|
"priority": { "type": "number" }
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
},
|
|
{ "type": "null" }
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
]
|
|
},
|
|
"oom_kill_disable": { "type": ["boolean", "string"] },
|
|
"oom_score_adj": {
|
|
"oneOf": [
|
|
{ "type": "string" },
|
|
{ "type": "integer", "minimum": -1000, "maximum": 1000 }
|
|
]
|
|
},
|
|
"pid": { "type": ["string", "null"] },
|
|
"pids_limit": { "type": ["number", "string"] },
|
|
"platform": { "type": "string" },
|
|
"ports": {
|
|
"type": "array",
|
|
"items": {
|
|
"oneOf": [
|
|
{ "type": "number" },
|
|
{ "type": "string" },
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"name": { "type": "string" },
|
|
"mode": { "type": "string" },
|
|
"host_ip": { "type": "string" },
|
|
"target": { "type": ["integer", "string"] },
|
|
"published": { "type": ["string", "integer"] },
|
|
"protocol": { "type": "string" },
|
|
"app_protocol": { "type": "string" }
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
}
|
|
]
|
|
},
|
|
"uniqueItems": true
|
|
},
|
|
"post_start": {
|
|
"type": "array",
|
|
"items": { "$ref": "#/definitions/service_hook" }
|
|
},
|
|
"pre_stop": {
|
|
"type": "array",
|
|
"items": { "$ref": "#/definitions/service_hook" }
|
|
},
|
|
"privileged": { "type": ["boolean", "string"] },
|
|
"profiles": { "$ref": "#/definitions/list_of_strings" },
|
|
"pull_policy": {
|
|
"type": "string",
|
|
"enum": ["always", "never", "if_not_present", "build", "missing"]
|
|
},
|
|
"read_only": { "type": ["boolean", "string"] },
|
|
"restart": { "type": "string" },
|
|
"runtime": {
|
|
"type": "string"
|
|
},
|
|
"scale": {
|
|
"type": ["integer", "string"]
|
|
},
|
|
"security_opt": {
|
|
"type": "array",
|
|
"items": { "type": "string" },
|
|
"uniqueItems": true
|
|
},
|
|
"shm_size": { "type": ["number", "string"] },
|
|
"secrets": { "$ref": "#/definitions/service_config_or_secret" },
|
|
"sysctls": { "$ref": "#/definitions/list_or_dict" },
|
|
"stdin_open": { "type": ["boolean", "string"] },
|
|
"stop_grace_period": { "type": "string" },
|
|
"stop_signal": { "type": "string" },
|
|
"storage_opt": { "type": "object" },
|
|
"tmpfs": { "$ref": "#/definitions/string_or_list" },
|
|
"tty": { "type": ["boolean", "string"] },
|
|
"ulimits": { "$ref": "#/definitions/ulimits" },
|
|
"user": { "type": "string" },
|
|
"uts": { "type": "string" },
|
|
"userns_mode": { "type": "string" },
|
|
"volumes": {
|
|
"type": "array",
|
|
"items": {
|
|
"oneOf": [
|
|
{ "type": "string" },
|
|
{
|
|
"type": "object",
|
|
"required": ["type"],
|
|
"properties": {
|
|
"type": { "type": "string" },
|
|
"source": { "type": "string" },
|
|
"target": { "type": "string" },
|
|
"read_only": { "type": ["boolean", "string"] },
|
|
"consistency": { "type": "string" },
|
|
"bind": {
|
|
"type": "object",
|
|
"properties": {
|
|
"propagation": { "type": "string" },
|
|
"create_host_path": { "type": ["boolean", "string"] },
|
|
"recursive": {
|
|
"type": "string",
|
|
"enum": ["enabled", "disabled", "writable", "readonly"]
|
|
},
|
|
"selinux": { "type": "string", "enum": ["z", "Z"] }
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
},
|
|
"volume": {
|
|
"type": "object",
|
|
"properties": {
|
|
"nocopy": { "type": ["boolean", "string"] },
|
|
"subpath": { "type": "string" }
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
},
|
|
"tmpfs": {
|
|
"type": "object",
|
|
"properties": {
|
|
"size": {
|
|
"oneOf": [
|
|
{ "type": "integer", "minimum": 0 },
|
|
{ "type": "string" }
|
|
]
|
|
},
|
|
"mode": { "type": ["number", "string"] }
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
}
|
|
]
|
|
},
|
|
"uniqueItems": true
|
|
},
|
|
"volumes_from": {
|
|
"type": "array",
|
|
"items": { "type": "string" },
|
|
"uniqueItems": true
|
|
},
|
|
"working_dir": { "type": "string" }
|
|
},
|
|
"patternProperties": { "^x-": {} },
|
|
"additionalProperties": false
|
|
},
|
|
|
|
"healthcheck": {
|
|
"id": "#/definitions/healthcheck",
|
|
"type": "object",
|
|
"properties": {
|
|
"disable": { "type": ["boolean", "string"] },
|
|
"interval": { "type": "string" },
|
|
"retries": { "type": ["number", "string"] },
|
|
"test": {
|
|
"oneOf": [
|
|
{ "type": "string" },
|
|
{ "type": "array", "items": { "type": "string" } }
|
|
]
|
|
},
|
|
"timeout": { "type": "string" },
|
|
"start_period": { "type": "string" },
|
|
"start_interval": { "type": "string" }
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
},
|
|
"development": {
|
|
"id": "#/definitions/development",
|
|
"type": ["object", "null"],
|
|
"properties": {
|
|
"watch": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": ["path", "action"],
|
|
"properties": {
|
|
"ignore": { "type": "array", "items": { "type": "string" } },
|
|
"path": { "type": "string" },
|
|
"action": {
|
|
"type": "string",
|
|
"enum": [
|
|
"rebuild",
|
|
"sync",
|
|
"restart",
|
|
"sync+restart",
|
|
"sync+exec"
|
|
]
|
|
},
|
|
"target": { "type": "string" },
|
|
"exec": { "$ref": "#/definitions/service_hook" }
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
},
|
|
"deployment": {
|
|
"id": "#/definitions/deployment",
|
|
"type": ["object", "null"],
|
|
"properties": {
|
|
"mode": { "type": "string" },
|
|
"endpoint_mode": { "type": "string" },
|
|
"replicas": { "type": ["integer", "string"] },
|
|
"labels": { "$ref": "#/definitions/list_or_dict" },
|
|
"rollback_config": {
|
|
"type": "object",
|
|
"properties": {
|
|
"parallelism": { "type": ["integer", "string"] },
|
|
"delay": { "type": "string" },
|
|
"failure_action": { "type": "string" },
|
|
"monitor": { "type": "string" },
|
|
"max_failure_ratio": { "type": ["number", "string"] },
|
|
"order": { "type": "string", "enum": ["start-first", "stop-first"] }
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
},
|
|
"update_config": {
|
|
"type": "object",
|
|
"properties": {
|
|
"parallelism": { "type": ["integer", "string"] },
|
|
"delay": { "type": "string" },
|
|
"failure_action": { "type": "string" },
|
|
"monitor": { "type": "string" },
|
|
"max_failure_ratio": { "type": ["number", "string"] },
|
|
"order": { "type": "string", "enum": ["start-first", "stop-first"] }
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
},
|
|
"resources": {
|
|
"type": "object",
|
|
"properties": {
|
|
"limits": {
|
|
"type": "object",
|
|
"properties": {
|
|
"cpus": { "type": ["number", "string"] },
|
|
"memory": { "type": "string" },
|
|
"pids": { "type": ["integer", "string"] }
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
},
|
|
"reservations": {
|
|
"type": "object",
|
|
"properties": {
|
|
"cpus": { "type": ["number", "string"] },
|
|
"memory": { "type": "string" },
|
|
"generic_resources": {
|
|
"$ref": "#/definitions/generic_resources"
|
|
},
|
|
"devices": { "$ref": "#/definitions/devices" }
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
},
|
|
"restart_policy": {
|
|
"type": "object",
|
|
"properties": {
|
|
"condition": { "type": "string" },
|
|
"delay": { "type": "string" },
|
|
"max_attempts": { "type": ["integer", "string"] },
|
|
"window": { "type": "string" }
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
},
|
|
"placement": {
|
|
"type": "object",
|
|
"properties": {
|
|
"constraints": { "type": "array", "items": { "type": "string" } },
|
|
"preferences": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"spread": { "type": "string" }
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
}
|
|
},
|
|
"max_replicas_per_node": { "type": ["integer", "string"] }
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
},
|
|
|
|
"generic_resources": {
|
|
"id": "#/definitions/generic_resources",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"discrete_resource_spec": {
|
|
"type": "object",
|
|
"properties": {
|
|
"kind": { "type": "string" },
|
|
"value": { "type": ["number", "string"] }
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
}
|
|
},
|
|
|
|
"devices": {
|
|
"id": "#/definitions/devices",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"capabilities": { "$ref": "#/definitions/list_of_strings" },
|
|
"count": { "type": ["string", "integer"] },
|
|
"device_ids": { "$ref": "#/definitions/list_of_strings" },
|
|
"driver": { "type": "string" },
|
|
"options": { "$ref": "#/definitions/list_or_dict" }
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} },
|
|
"required": ["capabilities"]
|
|
}
|
|
},
|
|
|
|
"gpus": {
|
|
"id": "#/definitions/gpus",
|
|
"oneOf": [
|
|
{ "type": "string", "enum": ["all"] },
|
|
{
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"capabilities": { "$ref": "#/definitions/list_of_strings" },
|
|
"count": { "type": ["string", "integer"] },
|
|
"device_ids": { "$ref": "#/definitions/list_of_strings" },
|
|
"driver": { "type": "string" },
|
|
"options": { "$ref": "#/definitions/list_or_dict" }
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
}
|
|
]
|
|
},
|
|
|
|
"include": {
|
|
"id": "#/definitions/include",
|
|
"oneOf": [
|
|
{ "type": "string" },
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"path": { "$ref": "#/definitions/string_or_list" },
|
|
"env_file": { "$ref": "#/definitions/string_or_list" },
|
|
"project_directory": { "type": "string" }
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
]
|
|
},
|
|
|
|
"network": {
|
|
"id": "#/definitions/network",
|
|
"type": ["object", "null"],
|
|
"properties": {
|
|
"name": { "type": "string" },
|
|
"driver": { "type": "string" },
|
|
"driver_opts": {
|
|
"type": "object",
|
|
"patternProperties": {
|
|
"^.+$": { "type": ["string", "number"] }
|
|
}
|
|
},
|
|
"ipam": {
|
|
"type": "object",
|
|
"properties": {
|
|
"driver": { "type": "string" },
|
|
"config": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"subnet": { "type": "string" },
|
|
"ip_range": { "type": "string" },
|
|
"gateway": { "type": "string" },
|
|
"aux_addresses": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^.+$": { "type": "string" } }
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
}
|
|
},
|
|
"options": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^.+$": { "type": "string" } }
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
},
|
|
"external": {
|
|
"type": ["boolean", "string", "object"],
|
|
"properties": {
|
|
"name": {
|
|
"deprecated": true,
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
},
|
|
"internal": { "type": ["boolean", "string"] },
|
|
"enable_ipv4": { "type": ["boolean", "string"] },
|
|
"enable_ipv6": { "type": ["boolean", "string"] },
|
|
"attachable": { "type": ["boolean", "string"] },
|
|
"labels": { "$ref": "#/definitions/list_or_dict" }
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
},
|
|
|
|
"volume": {
|
|
"id": "#/definitions/volume",
|
|
"type": ["object", "null"],
|
|
"properties": {
|
|
"name": { "type": "string" },
|
|
"driver": { "type": "string" },
|
|
"driver_opts": {
|
|
"type": "object",
|
|
"patternProperties": {
|
|
"^.+$": { "type": ["string", "number"] }
|
|
}
|
|
},
|
|
"external": {
|
|
"type": ["boolean", "string", "object"],
|
|
"properties": {
|
|
"name": {
|
|
"deprecated": true,
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
},
|
|
"labels": { "$ref": "#/definitions/list_or_dict" }
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
},
|
|
|
|
"secret": {
|
|
"id": "#/definitions/secret",
|
|
"type": "object",
|
|
"properties": {
|
|
"name": { "type": "string" },
|
|
"environment": { "type": "string" },
|
|
"file": { "type": "string" },
|
|
"external": {
|
|
"type": ["boolean", "string", "object"],
|
|
"properties": {
|
|
"name": { "type": "string" }
|
|
}
|
|
},
|
|
"labels": { "$ref": "#/definitions/list_or_dict" },
|
|
"driver": { "type": "string" },
|
|
"driver_opts": {
|
|
"type": "object",
|
|
"patternProperties": {
|
|
"^.+$": { "type": ["string", "number"] }
|
|
}
|
|
},
|
|
"template_driver": { "type": "string" }
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
},
|
|
|
|
"config": {
|
|
"id": "#/definitions/config",
|
|
"type": "object",
|
|
"properties": {
|
|
"name": { "type": "string" },
|
|
"content": { "type": "string" },
|
|
"environment": { "type": "string" },
|
|
"file": { "type": "string" },
|
|
"external": {
|
|
"type": ["boolean", "string", "object"],
|
|
"properties": {
|
|
"name": {
|
|
"deprecated": true,
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"labels": { "$ref": "#/definitions/list_or_dict" },
|
|
"template_driver": { "type": "string" }
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
},
|
|
|
|
"command": {
|
|
"oneOf": [
|
|
{ "type": "null" },
|
|
{ "type": "string" },
|
|
{ "type": "array", "items": { "type": "string" } }
|
|
]
|
|
},
|
|
|
|
"service_hook": {
|
|
"id": "#/definitions/service_hook",
|
|
"type": "object",
|
|
"properties": {
|
|
"command": { "$ref": "#/definitions/command" },
|
|
"user": { "type": "string" },
|
|
"privileged": { "type": ["boolean", "string"] },
|
|
"working_dir": { "type": "string" },
|
|
"environment": { "$ref": "#/definitions/list_or_dict" }
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
},
|
|
|
|
"env_file": {
|
|
"oneOf": [
|
|
{ "type": "string" },
|
|
{
|
|
"type": "array",
|
|
"items": {
|
|
"oneOf": [
|
|
{ "type": "string" },
|
|
{
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"format": {
|
|
"type": "string"
|
|
},
|
|
"required": {
|
|
"type": ["boolean", "string"],
|
|
"default": true
|
|
}
|
|
},
|
|
"required": ["path"]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
|
|
"label_file": {
|
|
"oneOf": [
|
|
{ "type": "string" },
|
|
{
|
|
"type": "array",
|
|
"items": { "type": "string" }
|
|
}
|
|
]
|
|
},
|
|
|
|
"string_or_list": {
|
|
"oneOf": [
|
|
{ "type": "string" },
|
|
{ "$ref": "#/definitions/list_of_strings" }
|
|
]
|
|
},
|
|
|
|
"list_of_strings": {
|
|
"type": "array",
|
|
"items": { "type": "string" },
|
|
"uniqueItems": true
|
|
},
|
|
|
|
"list_or_dict": {
|
|
"oneOf": [
|
|
{
|
|
"type": "object",
|
|
"patternProperties": {
|
|
".+": {
|
|
"type": ["string", "number", "boolean", "null"]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{ "type": "array", "items": { "type": "string" }, "uniqueItems": true }
|
|
]
|
|
},
|
|
|
|
"extra_hosts": {
|
|
"oneOf": [
|
|
{
|
|
"type": "object",
|
|
"patternProperties": {
|
|
".+": {
|
|
"oneOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"uniqueItems": false
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{ "type": "array", "items": { "type": "string" }, "uniqueItems": true }
|
|
]
|
|
},
|
|
|
|
"blkio_limit": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": { "type": "string" },
|
|
"rate": { "type": ["integer", "string"] }
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"blkio_weight": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": { "type": "string" },
|
|
"weight": { "type": ["integer", "string"] }
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"service_config_or_secret": {
|
|
"type": "array",
|
|
"items": {
|
|
"oneOf": [
|
|
{ "type": "string" },
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"source": { "type": "string" },
|
|
"target": { "type": "string" },
|
|
"uid": { "type": "string" },
|
|
"gid": { "type": "string" },
|
|
"mode": { "type": ["number", "string"] }
|
|
},
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"ulimits": {
|
|
"type": "object",
|
|
"patternProperties": {
|
|
"^[a-z]+$": {
|
|
"oneOf": [
|
|
{ "type": ["integer", "string"] },
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"hard": { "type": ["integer", "string"] },
|
|
"soft": { "type": ["integer", "string"] }
|
|
},
|
|
"required": ["soft", "hard"],
|
|
"additionalProperties": false,
|
|
"patternProperties": { "^x-": {} }
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"constraints": {
|
|
"service": {
|
|
"id": "#/definitions/constraints/service",
|
|
"anyOf": [{ "required": ["build"] }, { "required": ["image"] }],
|
|
"properties": {
|
|
"build": {
|
|
"required": ["context"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|