github.com/ali-iotechsys/cli@v20.10.0+incompatible/cli/compose/schema/data/config_schema_v3.4.json (about) 1 { 2 "$schema": "http://json-schema.org/draft-04/schema#", 3 "id": "config_schema_v3.4.json", 4 "type": "object", 5 "required": ["version"], 6 7 "properties": { 8 "version": { 9 "type": "string" 10 }, 11 12 "services": { 13 "id": "#/properties/services", 14 "type": "object", 15 "patternProperties": { 16 "^[a-zA-Z0-9._-]+$": { 17 "$ref": "#/definitions/service" 18 } 19 }, 20 "additionalProperties": false 21 }, 22 23 "networks": { 24 "id": "#/properties/networks", 25 "type": "object", 26 "patternProperties": { 27 "^[a-zA-Z0-9._-]+$": { 28 "$ref": "#/definitions/network" 29 } 30 } 31 }, 32 33 "volumes": { 34 "id": "#/properties/volumes", 35 "type": "object", 36 "patternProperties": { 37 "^[a-zA-Z0-9._-]+$": { 38 "$ref": "#/definitions/volume" 39 } 40 }, 41 "additionalProperties": false 42 }, 43 44 "secrets": { 45 "id": "#/properties/secrets", 46 "type": "object", 47 "patternProperties": { 48 "^[a-zA-Z0-9._-]+$": { 49 "$ref": "#/definitions/secret" 50 } 51 }, 52 "additionalProperties": false 53 }, 54 55 "configs": { 56 "id": "#/properties/configs", 57 "type": "object", 58 "patternProperties": { 59 "^[a-zA-Z0-9._-]+$": { 60 "$ref": "#/definitions/config" 61 } 62 }, 63 "additionalProperties": false 64 } 65 }, 66 67 "patternProperties": {"^x-": {}}, 68 "additionalProperties": false, 69 70 "definitions": { 71 72 "service": { 73 "id": "#/definitions/service", 74 "type": "object", 75 76 "properties": { 77 "deploy": {"$ref": "#/definitions/deployment"}, 78 "build": { 79 "oneOf": [ 80 {"type": "string"}, 81 { 82 "type": "object", 83 "properties": { 84 "context": {"type": "string"}, 85 "dockerfile": {"type": "string"}, 86 "args": {"$ref": "#/definitions/list_or_dict"}, 87 "labels": {"$ref": "#/definitions/list_or_dict"}, 88 "cache_from": {"$ref": "#/definitions/list_of_strings"}, 89 "network": {"type": "string"}, 90 "target": {"type": "string"} 91 }, 92 "additionalProperties": false 93 } 94 ] 95 }, 96 "cap_add": {"type": "array", "items": {"type": "string"}, "uniqueItems": true}, 97 "cap_drop": {"type": "array", "items": {"type": "string"}, "uniqueItems": true}, 98 "cgroup_parent": {"type": "string"}, 99 "command": { 100 "oneOf": [ 101 {"type": "string"}, 102 {"type": "array", "items": {"type": "string"}} 103 ] 104 }, 105 "configs": { 106 "type": "array", 107 "items": { 108 "oneOf": [ 109 {"type": "string"}, 110 { 111 "type": "object", 112 "properties": { 113 "source": {"type": "string"}, 114 "target": {"type": "string"}, 115 "uid": {"type": "string"}, 116 "gid": {"type": "string"}, 117 "mode": {"type": "number"} 118 } 119 } 120 ] 121 } 122 }, 123 "container_name": {"type": "string"}, 124 "credential_spec": { 125 "type": "object", 126 "properties": { 127 "file": {"type": "string"}, 128 "registry": {"type": "string"} 129 }, 130 "additionalProperties": false 131 }, 132 "depends_on": {"$ref": "#/definitions/list_of_strings"}, 133 "devices": {"type": "array", "items": {"type": "string"}, "uniqueItems": true}, 134 "dns": {"$ref": "#/definitions/string_or_list"}, 135 "dns_search": {"$ref": "#/definitions/string_or_list"}, 136 "domainname": {"type": "string"}, 137 "entrypoint": { 138 "oneOf": [ 139 {"type": "string"}, 140 {"type": "array", "items": {"type": "string"}} 141 ] 142 }, 143 "env_file": {"$ref": "#/definitions/string_or_list"}, 144 "environment": {"$ref": "#/definitions/list_or_dict"}, 145 146 "expose": { 147 "type": "array", 148 "items": { 149 "type": ["string", "number"], 150 "format": "expose" 151 }, 152 "uniqueItems": true 153 }, 154 155 "external_links": {"type": "array", "items": {"type": "string"}, "uniqueItems": true}, 156 "extra_hosts": {"$ref": "#/definitions/list_or_dict"}, 157 "healthcheck": {"$ref": "#/definitions/healthcheck"}, 158 "hostname": {"type": "string"}, 159 "image": {"type": "string"}, 160 "ipc": {"type": "string"}, 161 "labels": {"$ref": "#/definitions/list_or_dict"}, 162 "links": {"type": "array", "items": {"type": "string"}, "uniqueItems": true}, 163 164 "logging": { 165 "type": "object", 166 167 "properties": { 168 "driver": {"type": "string"}, 169 "options": { 170 "type": "object", 171 "patternProperties": { 172 "^.+$": {"type": ["string", "number", "null"]} 173 } 174 } 175 }, 176 "additionalProperties": false 177 }, 178 179 "mac_address": {"type": "string"}, 180 "network_mode": {"type": "string"}, 181 182 "networks": { 183 "oneOf": [ 184 {"$ref": "#/definitions/list_of_strings"}, 185 { 186 "type": "object", 187 "patternProperties": { 188 "^[a-zA-Z0-9._-]+$": { 189 "oneOf": [ 190 { 191 "type": "object", 192 "properties": { 193 "aliases": {"$ref": "#/definitions/list_of_strings"}, 194 "ipv4_address": {"type": "string"}, 195 "ipv6_address": {"type": "string"} 196 }, 197 "additionalProperties": false 198 }, 199 {"type": "null"} 200 ] 201 } 202 }, 203 "additionalProperties": false 204 } 205 ] 206 }, 207 "pid": {"type": ["string", "null"]}, 208 209 "ports": { 210 "type": "array", 211 "items": { 212 "oneOf": [ 213 {"type": "number", "format": "ports"}, 214 {"type": "string", "format": "ports"}, 215 { 216 "type": "object", 217 "properties": { 218 "mode": {"type": "string"}, 219 "target": {"type": "integer"}, 220 "published": {"type": "integer"}, 221 "protocol": {"type": "string"} 222 }, 223 "additionalProperties": false 224 } 225 ] 226 }, 227 "uniqueItems": true 228 }, 229 230 "privileged": {"type": "boolean"}, 231 "read_only": {"type": "boolean"}, 232 "restart": {"type": "string"}, 233 "security_opt": {"type": "array", "items": {"type": "string"}, "uniqueItems": true}, 234 "shm_size": {"type": ["number", "string"]}, 235 "secrets": { 236 "type": "array", 237 "items": { 238 "oneOf": [ 239 {"type": "string"}, 240 { 241 "type": "object", 242 "properties": { 243 "source": {"type": "string"}, 244 "target": {"type": "string"}, 245 "uid": {"type": "string"}, 246 "gid": {"type": "string"}, 247 "mode": {"type": "number"} 248 } 249 } 250 ] 251 } 252 }, 253 "sysctls": {"$ref": "#/definitions/list_or_dict"}, 254 "stdin_open": {"type": "boolean"}, 255 "stop_grace_period": {"type": "string", "format": "duration"}, 256 "stop_signal": {"type": "string"}, 257 "tmpfs": {"$ref": "#/definitions/string_or_list"}, 258 "tty": {"type": "boolean"}, 259 "ulimits": { 260 "type": "object", 261 "patternProperties": { 262 "^[a-z]+$": { 263 "oneOf": [ 264 {"type": "integer"}, 265 { 266 "type":"object", 267 "properties": { 268 "hard": {"type": "integer"}, 269 "soft": {"type": "integer"} 270 }, 271 "required": ["soft", "hard"], 272 "additionalProperties": false 273 } 274 ] 275 } 276 } 277 }, 278 "user": {"type": "string"}, 279 "userns_mode": {"type": "string"}, 280 "volumes": { 281 "type": "array", 282 "items": { 283 "oneOf": [ 284 {"type": "string"}, 285 { 286 "type": "object", 287 "required": ["type"], 288 "properties": { 289 "type": {"type": "string"}, 290 "source": {"type": "string"}, 291 "target": {"type": "string"}, 292 "read_only": {"type": "boolean"}, 293 "consistency": {"type": "string"}, 294 "bind": { 295 "type": "object", 296 "properties": { 297 "propagation": {"type": "string"} 298 } 299 }, 300 "volume": { 301 "type": "object", 302 "properties": { 303 "nocopy": {"type": "boolean"} 304 } 305 } 306 }, 307 "additionalProperties": false 308 } 309 ], 310 "uniqueItems": true 311 } 312 }, 313 "working_dir": {"type": "string"} 314 }, 315 "additionalProperties": false 316 }, 317 318 "healthcheck": { 319 "id": "#/definitions/healthcheck", 320 "type": "object", 321 "additionalProperties": false, 322 "properties": { 323 "disable": {"type": "boolean"}, 324 "interval": {"type": "string", "format": "duration"}, 325 "retries": {"type": "number"}, 326 "test": { 327 "oneOf": [ 328 {"type": "string"}, 329 {"type": "array", "items": {"type": "string"}} 330 ] 331 }, 332 "timeout": {"type": "string", "format": "duration"}, 333 "start_period": {"type": "string", "format": "duration"} 334 } 335 }, 336 "deployment": { 337 "id": "#/definitions/deployment", 338 "type": ["object", "null"], 339 "properties": { 340 "mode": {"type": "string"}, 341 "endpoint_mode": {"type": "string"}, 342 "replicas": {"type": "integer"}, 343 "labels": {"$ref": "#/definitions/list_or_dict"}, 344 "update_config": { 345 "type": "object", 346 "properties": { 347 "parallelism": {"type": "integer"}, 348 "delay": {"type": "string", "format": "duration"}, 349 "failure_action": {"type": "string"}, 350 "monitor": {"type": "string", "format": "duration"}, 351 "max_failure_ratio": {"type": "number"}, 352 "order": {"type": "string", "enum": [ 353 "start-first", "stop-first" 354 ]} 355 }, 356 "additionalProperties": false 357 }, 358 "resources": { 359 "type": "object", 360 "properties": { 361 "limits": {"$ref": "#/definitions/resource"}, 362 "reservations": {"$ref": "#/definitions/resource"} 363 }, 364 "additionalProperties": false 365 }, 366 "restart_policy": { 367 "type": "object", 368 "properties": { 369 "condition": {"type": "string"}, 370 "delay": {"type": "string", "format": "duration"}, 371 "max_attempts": {"type": "integer"}, 372 "window": {"type": "string", "format": "duration"} 373 }, 374 "additionalProperties": false 375 }, 376 "placement": { 377 "type": "object", 378 "properties": { 379 "constraints": {"type": "array", "items": {"type": "string"}}, 380 "preferences": { 381 "type": "array", 382 "items": { 383 "type": "object", 384 "properties": { 385 "spread": {"type": "string"} 386 }, 387 "additionalProperties": false 388 } 389 } 390 }, 391 "additionalProperties": false 392 } 393 }, 394 "additionalProperties": false 395 }, 396 397 "resource": { 398 "id": "#/definitions/resource", 399 "type": "object", 400 "properties": { 401 "cpus": {"type": "string"}, 402 "memory": {"type": "string"} 403 }, 404 "additionalProperties": false 405 }, 406 407 "network": { 408 "id": "#/definitions/network", 409 "type": ["object", "null"], 410 "properties": { 411 "driver": {"type": "string"}, 412 "driver_opts": { 413 "type": "object", 414 "patternProperties": { 415 "^.+$": {"type": ["string", "number"]} 416 } 417 }, 418 "ipam": { 419 "type": "object", 420 "properties": { 421 "driver": {"type": "string"}, 422 "config": { 423 "type": "array", 424 "items": { 425 "type": "object", 426 "properties": { 427 "subnet": {"type": "string"} 428 }, 429 "additionalProperties": false 430 } 431 } 432 }, 433 "additionalProperties": false 434 }, 435 "external": { 436 "type": ["boolean", "object"], 437 "properties": { 438 "name": {"type": "string"} 439 }, 440 "additionalProperties": false 441 }, 442 "internal": {"type": "boolean"}, 443 "attachable": {"type": "boolean"}, 444 "labels": {"$ref": "#/definitions/list_or_dict"} 445 }, 446 "additionalProperties": false 447 }, 448 449 "volume": { 450 "id": "#/definitions/volume", 451 "type": ["object", "null"], 452 "properties": { 453 "name": {"type": "string"}, 454 "driver": {"type": "string"}, 455 "driver_opts": { 456 "type": "object", 457 "patternProperties": { 458 "^.+$": {"type": ["string", "number"]} 459 } 460 }, 461 "external": { 462 "type": ["boolean", "object"], 463 "properties": { 464 "name": {"type": "string"} 465 }, 466 "additionalProperties": false 467 }, 468 "labels": {"$ref": "#/definitions/list_or_dict"} 469 }, 470 "additionalProperties": false 471 }, 472 473 "secret": { 474 "id": "#/definitions/secret", 475 "type": "object", 476 "properties": { 477 "file": {"type": "string"}, 478 "external": { 479 "type": ["boolean", "object"], 480 "properties": { 481 "name": {"type": "string"} 482 } 483 }, 484 "labels": {"$ref": "#/definitions/list_or_dict"} 485 }, 486 "additionalProperties": false 487 }, 488 489 "config": { 490 "id": "#/definitions/config", 491 "type": "object", 492 "properties": { 493 "file": {"type": "string"}, 494 "external": { 495 "type": ["boolean", "object"], 496 "properties": { 497 "name": {"type": "string"} 498 } 499 }, 500 "labels": {"$ref": "#/definitions/list_or_dict"} 501 }, 502 "additionalProperties": false 503 }, 504 505 "string_or_list": { 506 "oneOf": [ 507 {"type": "string"}, 508 {"$ref": "#/definitions/list_of_strings"} 509 ] 510 }, 511 512 "list_of_strings": { 513 "type": "array", 514 "items": {"type": "string"}, 515 "uniqueItems": true 516 }, 517 518 "list_or_dict": { 519 "oneOf": [ 520 { 521 "type": "object", 522 "patternProperties": { 523 ".+": { 524 "type": ["string", "number", "null"] 525 } 526 }, 527 "additionalProperties": false 528 }, 529 {"type": "array", "items": {"type": "string"}, "uniqueItems": true} 530 ] 531 }, 532 533 "constraints": { 534 "service": { 535 "id": "#/definitions/constraints/service", 536 "anyOf": [ 537 {"required": ["build"]}, 538 {"required": ["image"]} 539 ], 540 "properties": { 541 "build": { 542 "required": ["context"] 543 } 544 } 545 } 546 } 547 } 548 }