1217 lines
40 KiB
JSON
1217 lines
40 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"type": "object",
|
|
"properties": {
|
|
"schemaVersion": {
|
|
"const": 2
|
|
},
|
|
"services": {
|
|
"type": "array",
|
|
"message": "CUSTOM_APP_ERROR_SERVICES_MIN_LENGTH",
|
|
"minItems": 1,
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"image": {
|
|
"type": "string",
|
|
"message": "CUSTOM_APP_ERROR_IMAGE_REQUIRED"
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"message": "CUSTOM_APP_ERROR_NAME_REQUIRED"
|
|
},
|
|
"addPorts": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"containerPort": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"message": "CUSTOM_APP_ERROR_CONTAINER_PORT_INVALID"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"message": "CUSTOM_APP_ERROR_CONTAINER_PORT_INVALID",
|
|
"exclusiveMaximum": 65536,
|
|
"exclusiveMinimum": 0
|
|
}
|
|
],
|
|
"message": "CUSTOM_APP_ERROR_CONTAINER_PORT_INVALID"
|
|
},
|
|
"hostPort": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"message": "CUSTOM_APP_ERROR_HOST_PORT_INVALID"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"message": "CUSTOM_APP_ERROR_HOST_PORT_INVALID",
|
|
"exclusiveMaximum": 65536,
|
|
"exclusiveMinimum": 0
|
|
}
|
|
],
|
|
"message": "CUSTOM_APP_ERROR_HOST_PORT_INVALID"
|
|
},
|
|
"interface": {
|
|
"type": "string"
|
|
},
|
|
"tcp": {
|
|
"type": "boolean"
|
|
},
|
|
"udp": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"containerPort",
|
|
"hostPort"
|
|
]
|
|
}
|
|
},
|
|
"addToMainNetwork": {
|
|
"type": "boolean"
|
|
},
|
|
"capAdd": {
|
|
"type": "array",
|
|
"message": "CUSTOM_APP_ERROR_CAP_ADD_INVALID",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"capDrop": {
|
|
"type": "array",
|
|
"message": "CUSTOM_APP_ERROR_CAP_DROP_INVALID",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"command": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"message": "CUSTOM_APP_ERROR_COMMAND_INVALID"
|
|
},
|
|
{
|
|
"type": "array",
|
|
"message": "CUSTOM_APP_ERROR_COMMAND_INVALID",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"message": "CUSTOM_APP_ERROR_COMMAND_INVALID"
|
|
},
|
|
"dependsOn": {
|
|
"anyOf": [
|
|
{
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "object",
|
|
"properties": {
|
|
"condition": {
|
|
"anyOf": [
|
|
{
|
|
"const": "service_completed_successfully",
|
|
"message": "CUSTOM_APP_ERROR_DEPENDS_ON_CONDITION_INVALID"
|
|
},
|
|
{
|
|
"const": "service_healthy",
|
|
"message": "CUSTOM_APP_ERROR_DEPENDS_ON_CONDITION_INVALID"
|
|
},
|
|
{
|
|
"const": "service_started",
|
|
"message": "CUSTOM_APP_ERROR_DEPENDS_ON_CONDITION_INVALID"
|
|
}
|
|
],
|
|
"message": "CUSTOM_APP_ERROR_DEPENDS_ON_CONDITION_INVALID"
|
|
}
|
|
},
|
|
"required": [
|
|
"condition"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "array",
|
|
"message": "CUSTOM_APP_ERROR_DEPENDS_ON_SERVICE_INVALID",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"deploy": {
|
|
"type": "object",
|
|
"properties": {
|
|
"resources": {
|
|
"type": "object",
|
|
"properties": {
|
|
"limits": {
|
|
"type": "object",
|
|
"properties": {
|
|
"cpus": {
|
|
"type": "string"
|
|
},
|
|
"memory": {
|
|
"type": "string"
|
|
},
|
|
"pids": {
|
|
"type": "number",
|
|
"message": "CUSTOM_APP_ERROR_DEPLOY_PIDS_INVALID"
|
|
}
|
|
}
|
|
},
|
|
"reservations": {
|
|
"type": "object",
|
|
"properties": {
|
|
"devices": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"capabilities": {
|
|
"type": "array",
|
|
"message": "CUSTOM_APP_ERROR_DEVICE_CAPABILITY_INVALID",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"count": {
|
|
"anyOf": [
|
|
{
|
|
"type": "number",
|
|
"message": "CUSTOM_APP_ERROR_DEVICE_COUNT_INVALID"
|
|
},
|
|
{
|
|
"const": "all",
|
|
"message": "CUSTOM_APP_ERROR_DEVICE_COUNT_INVALID"
|
|
}
|
|
],
|
|
"message": "CUSTOM_APP_ERROR_DEVICE_COUNT_INVALID"
|
|
},
|
|
"deviceIds": {
|
|
"type": "array",
|
|
"message": "CUSTOM_APP_ERROR_DEVICE_ID_INVALID",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"driver": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"capabilities"
|
|
]
|
|
}
|
|
},
|
|
"cpus": {
|
|
"type": "string"
|
|
},
|
|
"memory": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"devices"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"resources"
|
|
]
|
|
},
|
|
"devices": {
|
|
"type": "array",
|
|
"message": "CUSTOM_APP_ERROR_DEVICE_INVALID",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"dns": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"message": "CUSTOM_APP_ERROR_DNS_INVALID"
|
|
},
|
|
{
|
|
"type": "array",
|
|
"message": "CUSTOM_APP_ERROR_DNS_INVALID",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"message": "CUSTOM_APP_ERROR_DNS_INVALID"
|
|
},
|
|
"entrypoint": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"message": "CUSTOM_APP_ERROR_ENTRYPOINT_INVALID"
|
|
},
|
|
{
|
|
"type": "array",
|
|
"message": "CUSTOM_APP_ERROR_ENTRYPOINT_INVALID",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"message": "CUSTOM_APP_ERROR_ENTRYPOINT_INVALID"
|
|
},
|
|
"environment": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"key": {
|
|
"type": "string",
|
|
"message": "CUSTOM_APP_ERROR_ENV_KEY_REQUIRED",
|
|
"minLength": 1
|
|
},
|
|
"value": {
|
|
"anyOf": [
|
|
{
|
|
"type": "number",
|
|
"message": "CUSTOM_APP_ERROR_ENV_VALUE_REQUIRED"
|
|
},
|
|
{
|
|
"type": "string",
|
|
"message": "CUSTOM_APP_ERROR_ENV_VALUE_REQUIRED",
|
|
"minLength": 1
|
|
},
|
|
{
|
|
"type": "boolean"
|
|
}
|
|
],
|
|
"message": "CUSTOM_APP_ERROR_ENV_VALUE_REQUIRED"
|
|
}
|
|
},
|
|
"required": [
|
|
"key",
|
|
"value"
|
|
]
|
|
}
|
|
},
|
|
"extraHosts": {
|
|
"type": "array",
|
|
"message": "CUSTOM_APP_ERROR_EXTRA_HOST_INVALID",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"extraLabels": {
|
|
"type": "object",
|
|
"message": "CUSTOM_APP_ERROR_LABEL_KEY_INVALID",
|
|
"additionalProperties": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"message": "CUSTOM_APP_ERROR_LABEL_VALUE_INVALID"
|
|
},
|
|
{
|
|
"type": "boolean"
|
|
}
|
|
],
|
|
"message": "CUSTOM_APP_ERROR_LABEL_VALUE_INVALID"
|
|
}
|
|
},
|
|
"healthCheck": {
|
|
"type": "object",
|
|
"properties": {
|
|
"test": {
|
|
"type": "string",
|
|
"message": "CUSTOM_APP_ERROR_HEALTH_CHECK_TEST_REQUIRED"
|
|
},
|
|
"interval": {
|
|
"type": "string"
|
|
},
|
|
"retries": {
|
|
"type": "number",
|
|
"message": "CUSTOM_APP_ERROR_HEALTH_CHECK_RETRIES_INVALID"
|
|
},
|
|
"startInterval": {
|
|
"type": "string"
|
|
},
|
|
"startPeriod": {
|
|
"type": "string"
|
|
},
|
|
"timeout": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"test"
|
|
]
|
|
},
|
|
"hostname": {
|
|
"type": "string"
|
|
},
|
|
"internalPort": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"message": "CUSTOM_APP_ERROR_INTERNAL_PORT_INVALID"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"message": "CUSTOM_APP_ERROR_INTERNAL_PORT_INVALID",
|
|
"exclusiveMaximum": 65536,
|
|
"exclusiveMinimum": 0
|
|
}
|
|
],
|
|
"message": "CUSTOM_APP_ERROR_INTERNAL_PORT_INVALID"
|
|
},
|
|
"isMain": {
|
|
"type": "boolean"
|
|
},
|
|
"logging": {
|
|
"type": "object",
|
|
"properties": {
|
|
"driver": {
|
|
"type": "string",
|
|
"message": "CUSTOM_APP_ERROR_LOGGING_DRIVER_REQUIRED"
|
|
},
|
|
"options": {
|
|
"type": "object",
|
|
"message": "CUSTOM_APP_ERROR_LOGGING_OPTION_KEY_INVALID",
|
|
"additionalProperties": {
|
|
"type": "string",
|
|
"message": "CUSTOM_APP_ERROR_LOGGING_OPTION_VALUE_INVALID"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"driver"
|
|
]
|
|
},
|
|
"networkMode": {
|
|
"type": "string"
|
|
},
|
|
"pid": {
|
|
"type": "string"
|
|
},
|
|
"privileged": {
|
|
"type": "boolean"
|
|
},
|
|
"readOnly": {
|
|
"type": "boolean"
|
|
},
|
|
"securityOpt": {
|
|
"type": "array",
|
|
"message": "CUSTOM_APP_ERROR_SECURITY_OPT_INVALID",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"shmSize": {
|
|
"type": "string"
|
|
},
|
|
"stdinOpen": {
|
|
"type": "boolean"
|
|
},
|
|
"stopGracePeriod": {
|
|
"type": "string"
|
|
},
|
|
"stopSignal": {
|
|
"type": "string"
|
|
},
|
|
"sysctls": {
|
|
"type": "object",
|
|
"message": "CUSTOM_APP_ERROR_SYSCTL_KEY_INVALID",
|
|
"additionalProperties": {
|
|
"type": "number",
|
|
"message": "CUSTOM_APP_ERROR_SYSCTL_VALUE_INVALID"
|
|
}
|
|
},
|
|
"tty": {
|
|
"type": "boolean"
|
|
},
|
|
"ulimits": {
|
|
"type": "object",
|
|
"properties": {
|
|
"core": {
|
|
"anyOf": [
|
|
{
|
|
"type": "number",
|
|
"message": "CUSTOM_APP_ERROR_ULIMIT_CORE_INVALID"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"hard": {
|
|
"type": "number",
|
|
"message": "CUSTOM_APP_ERROR_ULIMIT_HARD_INVALID"
|
|
},
|
|
"soft": {
|
|
"type": "number",
|
|
"message": "CUSTOM_APP_ERROR_ULIMIT_SOFT_INVALID"
|
|
}
|
|
},
|
|
"required": [
|
|
"hard",
|
|
"soft"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"memlock": {
|
|
"anyOf": [
|
|
{
|
|
"type": "number",
|
|
"message": "CUSTOM_APP_ERROR_ULIMIT_MEMLOCK_INVALID"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"hard": {
|
|
"type": "number",
|
|
"message": "CUSTOM_APP_ERROR_ULIMIT_HARD_INVALID"
|
|
},
|
|
"soft": {
|
|
"type": "number",
|
|
"message": "CUSTOM_APP_ERROR_ULIMIT_SOFT_INVALID"
|
|
}
|
|
},
|
|
"required": [
|
|
"hard",
|
|
"soft"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"nofile": {
|
|
"anyOf": [
|
|
{
|
|
"type": "number",
|
|
"message": "CUSTOM_APP_ERROR_ULIMIT_NOFILE_INVALID"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"hard": {
|
|
"type": "number",
|
|
"message": "CUSTOM_APP_ERROR_ULIMIT_HARD_INVALID"
|
|
},
|
|
"soft": {
|
|
"type": "number",
|
|
"message": "CUSTOM_APP_ERROR_ULIMIT_SOFT_INVALID"
|
|
}
|
|
},
|
|
"required": [
|
|
"hard",
|
|
"soft"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"nproc": {
|
|
"anyOf": [
|
|
{
|
|
"type": "number",
|
|
"message": "CUSTOM_APP_ERROR_ULIMIT_NPROC_INVALID"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"hard": {
|
|
"type": "number",
|
|
"message": "CUSTOM_APP_ERROR_ULIMIT_HARD_INVALID"
|
|
},
|
|
"soft": {
|
|
"type": "number",
|
|
"message": "CUSTOM_APP_ERROR_ULIMIT_SOFT_INVALID"
|
|
}
|
|
},
|
|
"required": [
|
|
"hard",
|
|
"soft"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"user": {
|
|
"type": "string"
|
|
},
|
|
"volumes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"containerPath": {
|
|
"type": "string",
|
|
"message": "CUSTOM_APP_ERROR_CONTAINER_PATH_REQUIRED"
|
|
},
|
|
"hostPath": {
|
|
"type": "string",
|
|
"message": "CUSTOM_APP_ERROR_HOST_PATH_REQUIRED"
|
|
},
|
|
"bind": {
|
|
"type": "object",
|
|
"properties": {
|
|
"propagation": {
|
|
"enum": [
|
|
"private",
|
|
"rprivate",
|
|
"rshared",
|
|
"rslave",
|
|
"shared",
|
|
"slave"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"propagation"
|
|
]
|
|
},
|
|
"private": {
|
|
"type": "boolean"
|
|
},
|
|
"readOnly": {
|
|
"type": "boolean"
|
|
},
|
|
"shared": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"containerPath",
|
|
"hostPath"
|
|
]
|
|
}
|
|
},
|
|
"workingDir": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"image",
|
|
"name"
|
|
]
|
|
}
|
|
},
|
|
"overrides": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"services": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"addPorts": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"containerPort": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"message": "CUSTOM_APP_ERROR_CONTAINER_PORT_INVALID"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"message": "CUSTOM_APP_ERROR_CONTAINER_PORT_INVALID",
|
|
"exclusiveMaximum": 65536,
|
|
"exclusiveMinimum": 0
|
|
}
|
|
],
|
|
"message": "CUSTOM_APP_ERROR_CONTAINER_PORT_INVALID"
|
|
},
|
|
"hostPort": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"message": "CUSTOM_APP_ERROR_HOST_PORT_INVALID"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"message": "CUSTOM_APP_ERROR_HOST_PORT_INVALID",
|
|
"exclusiveMaximum": 65536,
|
|
"exclusiveMinimum": 0
|
|
}
|
|
],
|
|
"message": "CUSTOM_APP_ERROR_HOST_PORT_INVALID"
|
|
},
|
|
"interface": {
|
|
"type": "string"
|
|
},
|
|
"tcp": {
|
|
"type": "boolean"
|
|
},
|
|
"udp": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"containerPort",
|
|
"hostPort"
|
|
]
|
|
}
|
|
},
|
|
"addToMainNetwork": {
|
|
"type": "boolean"
|
|
},
|
|
"capAdd": {
|
|
"type": "array",
|
|
"message": "CUSTOM_APP_ERROR_CAP_ADD_INVALID",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"capDrop": {
|
|
"type": "array",
|
|
"message": "CUSTOM_APP_ERROR_CAP_DROP_INVALID",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"command": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"message": "CUSTOM_APP_ERROR_COMMAND_INVALID"
|
|
},
|
|
{
|
|
"type": "array",
|
|
"message": "CUSTOM_APP_ERROR_COMMAND_INVALID",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"message": "CUSTOM_APP_ERROR_COMMAND_INVALID"
|
|
},
|
|
"dependsOn": {
|
|
"anyOf": [
|
|
{
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "object",
|
|
"properties": {
|
|
"condition": {
|
|
"anyOf": [
|
|
{
|
|
"const": "service_completed_successfully",
|
|
"message": "CUSTOM_APP_ERROR_DEPENDS_ON_CONDITION_INVALID"
|
|
},
|
|
{
|
|
"const": "service_healthy",
|
|
"message": "CUSTOM_APP_ERROR_DEPENDS_ON_CONDITION_INVALID"
|
|
},
|
|
{
|
|
"const": "service_started",
|
|
"message": "CUSTOM_APP_ERROR_DEPENDS_ON_CONDITION_INVALID"
|
|
}
|
|
],
|
|
"message": "CUSTOM_APP_ERROR_DEPENDS_ON_CONDITION_INVALID"
|
|
}
|
|
},
|
|
"required": [
|
|
"condition"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "array",
|
|
"message": "CUSTOM_APP_ERROR_DEPENDS_ON_SERVICE_INVALID",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"deploy": {
|
|
"type": "object",
|
|
"properties": {
|
|
"resources": {
|
|
"type": "object",
|
|
"properties": {
|
|
"limits": {
|
|
"type": "object",
|
|
"properties": {
|
|
"cpus": {
|
|
"type": "string"
|
|
},
|
|
"memory": {
|
|
"type": "string"
|
|
},
|
|
"pids": {
|
|
"type": "number",
|
|
"message": "CUSTOM_APP_ERROR_DEPLOY_PIDS_INVALID"
|
|
}
|
|
}
|
|
},
|
|
"reservations": {
|
|
"type": "object",
|
|
"properties": {
|
|
"devices": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"capabilities": {
|
|
"type": "array",
|
|
"message": "CUSTOM_APP_ERROR_DEVICE_CAPABILITY_INVALID",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"count": {
|
|
"anyOf": [
|
|
{
|
|
"type": "number",
|
|
"message": "CUSTOM_APP_ERROR_DEVICE_COUNT_INVALID"
|
|
},
|
|
{
|
|
"const": "all",
|
|
"message": "CUSTOM_APP_ERROR_DEVICE_COUNT_INVALID"
|
|
}
|
|
],
|
|
"message": "CUSTOM_APP_ERROR_DEVICE_COUNT_INVALID"
|
|
},
|
|
"deviceIds": {
|
|
"type": "array",
|
|
"message": "CUSTOM_APP_ERROR_DEVICE_ID_INVALID",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"driver": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"capabilities"
|
|
]
|
|
}
|
|
},
|
|
"cpus": {
|
|
"type": "string"
|
|
},
|
|
"memory": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"devices"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"resources"
|
|
]
|
|
},
|
|
"devices": {
|
|
"type": "array",
|
|
"message": "CUSTOM_APP_ERROR_DEVICE_INVALID",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"dns": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"message": "CUSTOM_APP_ERROR_DNS_INVALID"
|
|
},
|
|
{
|
|
"type": "array",
|
|
"message": "CUSTOM_APP_ERROR_DNS_INVALID",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"message": "CUSTOM_APP_ERROR_DNS_INVALID"
|
|
},
|
|
"entrypoint": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"message": "CUSTOM_APP_ERROR_ENTRYPOINT_INVALID"
|
|
},
|
|
{
|
|
"type": "array",
|
|
"message": "CUSTOM_APP_ERROR_ENTRYPOINT_INVALID",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"message": "CUSTOM_APP_ERROR_ENTRYPOINT_INVALID"
|
|
},
|
|
"environment": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"key": {
|
|
"type": "string",
|
|
"message": "CUSTOM_APP_ERROR_ENV_KEY_REQUIRED",
|
|
"minLength": 1
|
|
},
|
|
"value": {
|
|
"anyOf": [
|
|
{
|
|
"type": "number",
|
|
"message": "CUSTOM_APP_ERROR_ENV_VALUE_REQUIRED"
|
|
},
|
|
{
|
|
"type": "string",
|
|
"message": "CUSTOM_APP_ERROR_ENV_VALUE_REQUIRED",
|
|
"minLength": 1
|
|
},
|
|
{
|
|
"type": "boolean"
|
|
}
|
|
],
|
|
"message": "CUSTOM_APP_ERROR_ENV_VALUE_REQUIRED"
|
|
}
|
|
},
|
|
"required": [
|
|
"key",
|
|
"value"
|
|
]
|
|
}
|
|
},
|
|
"extraHosts": {
|
|
"type": "array",
|
|
"message": "CUSTOM_APP_ERROR_EXTRA_HOST_INVALID",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"extraLabels": {
|
|
"type": "object",
|
|
"message": "CUSTOM_APP_ERROR_LABEL_KEY_INVALID",
|
|
"additionalProperties": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"message": "CUSTOM_APP_ERROR_LABEL_VALUE_INVALID"
|
|
},
|
|
{
|
|
"type": "boolean"
|
|
}
|
|
],
|
|
"message": "CUSTOM_APP_ERROR_LABEL_VALUE_INVALID"
|
|
}
|
|
},
|
|
"healthCheck": {
|
|
"type": "object",
|
|
"properties": {
|
|
"test": {
|
|
"type": "string",
|
|
"message": "CUSTOM_APP_ERROR_HEALTH_CHECK_TEST_REQUIRED"
|
|
},
|
|
"interval": {
|
|
"type": "string"
|
|
},
|
|
"retries": {
|
|
"type": "number",
|
|
"message": "CUSTOM_APP_ERROR_HEALTH_CHECK_RETRIES_INVALID"
|
|
},
|
|
"startInterval": {
|
|
"type": "string"
|
|
},
|
|
"startPeriod": {
|
|
"type": "string"
|
|
},
|
|
"timeout": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"test"
|
|
]
|
|
},
|
|
"hostname": {
|
|
"type": "string"
|
|
},
|
|
"image": {
|
|
"type": "string",
|
|
"message": "CUSTOM_APP_ERROR_IMAGE_REQUIRED"
|
|
},
|
|
"internalPort": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"message": "CUSTOM_APP_ERROR_INTERNAL_PORT_INVALID"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"message": "CUSTOM_APP_ERROR_INTERNAL_PORT_INVALID",
|
|
"exclusiveMaximum": 65536,
|
|
"exclusiveMinimum": 0
|
|
}
|
|
],
|
|
"message": "CUSTOM_APP_ERROR_INTERNAL_PORT_INVALID"
|
|
},
|
|
"isMain": {
|
|
"type": "boolean"
|
|
},
|
|
"logging": {
|
|
"type": "object",
|
|
"properties": {
|
|
"driver": {
|
|
"type": "string",
|
|
"message": "CUSTOM_APP_ERROR_LOGGING_DRIVER_REQUIRED"
|
|
},
|
|
"options": {
|
|
"type": "object",
|
|
"message": "CUSTOM_APP_ERROR_LOGGING_OPTION_KEY_INVALID",
|
|
"additionalProperties": {
|
|
"type": "string",
|
|
"message": "CUSTOM_APP_ERROR_LOGGING_OPTION_VALUE_INVALID"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"driver"
|
|
]
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"message": "CUSTOM_APP_ERROR_NAME_REQUIRED"
|
|
},
|
|
"networkMode": {
|
|
"type": "string"
|
|
},
|
|
"pid": {
|
|
"type": "string"
|
|
},
|
|
"privileged": {
|
|
"type": "boolean"
|
|
},
|
|
"readOnly": {
|
|
"type": "boolean"
|
|
},
|
|
"securityOpt": {
|
|
"type": "array",
|
|
"message": "CUSTOM_APP_ERROR_SECURITY_OPT_INVALID",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"shmSize": {
|
|
"type": "string"
|
|
},
|
|
"stdinOpen": {
|
|
"type": "boolean"
|
|
},
|
|
"stopGracePeriod": {
|
|
"type": "string"
|
|
},
|
|
"stopSignal": {
|
|
"type": "string"
|
|
},
|
|
"sysctls": {
|
|
"type": "object",
|
|
"message": "CUSTOM_APP_ERROR_SYSCTL_KEY_INVALID",
|
|
"additionalProperties": {
|
|
"type": "number",
|
|
"message": "CUSTOM_APP_ERROR_SYSCTL_VALUE_INVALID"
|
|
}
|
|
},
|
|
"tty": {
|
|
"type": "boolean"
|
|
},
|
|
"ulimits": {
|
|
"type": "object",
|
|
"properties": {
|
|
"core": {
|
|
"anyOf": [
|
|
{
|
|
"type": "number",
|
|
"message": "CUSTOM_APP_ERROR_ULIMIT_CORE_INVALID"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"hard": {
|
|
"type": "number",
|
|
"message": "CUSTOM_APP_ERROR_ULIMIT_HARD_INVALID"
|
|
},
|
|
"soft": {
|
|
"type": "number",
|
|
"message": "CUSTOM_APP_ERROR_ULIMIT_SOFT_INVALID"
|
|
}
|
|
},
|
|
"required": [
|
|
"hard",
|
|
"soft"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"memlock": {
|
|
"anyOf": [
|
|
{
|
|
"type": "number",
|
|
"message": "CUSTOM_APP_ERROR_ULIMIT_MEMLOCK_INVALID"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"hard": {
|
|
"type": "number",
|
|
"message": "CUSTOM_APP_ERROR_ULIMIT_HARD_INVALID"
|
|
},
|
|
"soft": {
|
|
"type": "number",
|
|
"message": "CUSTOM_APP_ERROR_ULIMIT_SOFT_INVALID"
|
|
}
|
|
},
|
|
"required": [
|
|
"hard",
|
|
"soft"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"nofile": {
|
|
"anyOf": [
|
|
{
|
|
"type": "number",
|
|
"message": "CUSTOM_APP_ERROR_ULIMIT_NOFILE_INVALID"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"hard": {
|
|
"type": "number",
|
|
"message": "CUSTOM_APP_ERROR_ULIMIT_HARD_INVALID"
|
|
},
|
|
"soft": {
|
|
"type": "number",
|
|
"message": "CUSTOM_APP_ERROR_ULIMIT_SOFT_INVALID"
|
|
}
|
|
},
|
|
"required": [
|
|
"hard",
|
|
"soft"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"nproc": {
|
|
"anyOf": [
|
|
{
|
|
"type": "number",
|
|
"message": "CUSTOM_APP_ERROR_ULIMIT_NPROC_INVALID"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"hard": {
|
|
"type": "number",
|
|
"message": "CUSTOM_APP_ERROR_ULIMIT_HARD_INVALID"
|
|
},
|
|
"soft": {
|
|
"type": "number",
|
|
"message": "CUSTOM_APP_ERROR_ULIMIT_SOFT_INVALID"
|
|
}
|
|
},
|
|
"required": [
|
|
"hard",
|
|
"soft"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"user": {
|
|
"type": "string"
|
|
},
|
|
"volumes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"containerPath": {
|
|
"type": "string",
|
|
"message": "CUSTOM_APP_ERROR_CONTAINER_PATH_REQUIRED"
|
|
},
|
|
"hostPath": {
|
|
"type": "string",
|
|
"message": "CUSTOM_APP_ERROR_HOST_PATH_REQUIRED"
|
|
},
|
|
"bind": {
|
|
"type": "object",
|
|
"properties": {
|
|
"propagation": {
|
|
"enum": [
|
|
"private",
|
|
"rprivate",
|
|
"rshared",
|
|
"rslave",
|
|
"shared",
|
|
"slave"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"propagation"
|
|
]
|
|
},
|
|
"private": {
|
|
"type": "boolean"
|
|
},
|
|
"readOnly": {
|
|
"type": "boolean"
|
|
},
|
|
"shared": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"containerPath",
|
|
"hostPath"
|
|
]
|
|
}
|
|
},
|
|
"workingDir": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"architecture": {
|
|
"anyOf": [
|
|
{
|
|
"const": "amd64",
|
|
"message": "CUSTOM_APP_ERROR_ARCHITECTURE_INVALID"
|
|
},
|
|
{
|
|
"const": "arm64",
|
|
"message": "CUSTOM_APP_ERROR_ARCHITECTURE_INVALID"
|
|
}
|
|
],
|
|
"message": "CUSTOM_APP_ERROR_ARCHITECTURE_INVALID"
|
|
}
|
|
},
|
|
"required": [
|
|
"services"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"schemaVersion",
|
|
"services"
|
|
]
|
|
} |