github.com/ali-iotechsys/cli@v20.10.0+incompatible/cli/compose/schema/data/config_schema_v3.1.json (about) 1 { 2 "$schema": "http://json-schema.org/draft-04/schema#", 3 "id": "config_schema_v3.1.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 56 "additionalProperties": false, 57 58 "definitions": { 59 60 "service": { 61 "id": "#/definitions/service", 62 "type": "object", 63 64 "properties": { 65 "deploy": {"$ref": "#/definitions/deployment"}, 66 "build": { 67 "oneOf": [ 68 {"type": "string"}, 69 { 70 "type": "object", 71 "properties": { 72 "context": {"type": "string"}, 73 "dockerfile": {"type": "string"}, 74 "args": {"$ref": "#/definitions/list_or_dict"} 75 }, 76 "additionalProperties": false 77 } 78 ] 79 }, 80 "cap_add": {"type": "array", "items": {"type": "string"}, "uniqueItems": true}, 81 "cap_drop": {"type": "array", "items": {"type": "string"}, "uniqueItems": true}, 82 "cgroup_parent": {"type": "string"}, 83 "command": { 84 "oneOf": [ 85 {"type": "string"}, 86 {"type": "array", "items": {"type": "string"}} 87 ] 88 }, 89 "container_name": {"type": "string"}, 90 "depends_on": {"$ref": "#/definitions/list_of_strings"}, 91 "devices": {"type": "array", "items": {"type": "string"}, "uniqueItems": true}, 92 "dns": {"$ref": "#/definitions/string_or_list"}, 93 "dns_search": {"$ref": "#/definitions/string_or_list"}, 94 "domainname": {"type": "string"}, 95 "entrypoint": { 96 "oneOf": [ 97 {"type": "string"}, 98 {"type": "array", "items": {"type": "string"}} 99 ] 100 }, 101 "env_file": {"$ref": "#/definitions/string_or_list"}, 102 "environment": {"$ref": "#/definitions/list_or_dict"}, 103 104 "expose": { 105 "type": "array", 106 "items": { 107 "type": ["string", "number"], 108 "format": "expose" 109 }, 110 "uniqueItems": true 111 }, 112 113 "external_links": {"type": "array", "items": {"type": "string"}, "uniqueItems": true}, 114 "extra_hosts": {"$ref": "#/definitions/list_or_dict"}, 115 "healthcheck": {"$ref": "#/definitions/healthcheck"}, 116 "hostname": {"type": "string"}, 117 "image": {"type": "string"}, 118 "ipc": {"type": "string"}, 119 "labels": {"$ref": "#/definitions/list_or_dict"}, 120 "links": {"type": "array", "items": {"type": "string"}, "uniqueItems": true}, 121 122 "logging": { 123 "type": "object", 124 125 "properties": { 126 "driver": {"type": "string"}, 127 "options": { 128 "type": "object", 129 "patternProperties": { 130 "^.+$": {"type": ["string", "number", "null"]} 131 } 132 } 133 }, 134 "additionalProperties": false 135 }, 136 137 "mac_address": {"type": "string"}, 138 "network_mode": {"type": "string"}, 139 140 "networks": { 141 "oneOf": [ 142 {"$ref": "#/definitions/list_of_strings"}, 143 { 144 "type": "object", 145 "patternProperties": { 146 "^[a-zA-Z0-9._-]+$": { 147 "oneOf": [ 148 { 149 "type": "object", 150 "properties": { 151 "aliases": {"$ref": "#/definitions/list_of_strings"}, 152 "ipv4_address": {"type": "string"}, 153 "ipv6_address": {"type": "string"} 154 }, 155 "additionalProperties": false 156 }, 157 {"type": "null"} 158 ] 159 } 160 }, 161 "additionalProperties": false 162 } 163 ] 164 }, 165 "pid": {"type": ["string", "null"]}, 166 167 "ports": { 168 "type": "array", 169 "items": { 170 "type": ["string", "number"], 171 "format": "ports" 172 }, 173 "uniqueItems": true 174 }, 175 176 "privileged": {"type": "boolean"}, 177 "read_only": {"type": "boolean"}, 178 "restart": {"type": "string"}, 179 "security_opt": {"type": "array", "items": {"type": "string"}, "uniqueItems": true}, 180 "shm_size": {"type": ["number", "string"]}, 181 "secrets": { 182 "type": "array", 183 "items": { 184 "oneOf": [ 185 {"type": "string"}, 186 { 187 "type": "object", 188 "properties": { 189 "source": {"type": "string"}, 190 "target": {"type": "string"}, 191 "uid": {"type": "string"}, 192 "gid": {"type": "string"}, 193 "mode": {"type": "number"} 194 } 195 } 196 ] 197 } 198 }, 199 "sysctls": {"$ref": "#/definitions/list_or_dict"}, 200 "stdin_open": {"type": "boolean"}, 201 "stop_grace_period": {"type": "string", "format": "duration"}, 202 "stop_signal": {"type": "string"}, 203 "tmpfs": {"$ref": "#/definitions/string_or_list"}, 204 "tty": {"type": "boolean"}, 205 "ulimits": { 206 "type": "object", 207 "patternProperties": { 208 "^[a-z]+$": { 209 "oneOf": [ 210 {"type": "integer"}, 211 { 212 "type":"object", 213 "properties": { 214 "hard": {"type": "integer"}, 215 "soft": {"type": "integer"} 216 }, 217 "required": ["soft", "hard"], 218 "additionalProperties": false 219 } 220 ] 221 } 222 } 223 }, 224 "user": {"type": "string"}, 225 "userns_mode": {"type": "string"}, 226 "volumes": {"type": "array", "items": {"type": "string"}, "uniqueItems": true}, 227 "working_dir": {"type": "string"} 228 }, 229 "additionalProperties": false 230 }, 231 232 "healthcheck": { 233 "id": "#/definitions/healthcheck", 234 "type": "object", 235 "additionalProperties": false, 236 "properties": { 237 "disable": {"type": "boolean"}, 238 "interval": {"type": "string"}, 239 "retries": {"type": "number"}, 240 "test": { 241 "oneOf": [ 242 {"type": "string"}, 243 {"type": "array", "items": {"type": "string"}} 244 ] 245 }, 246 "timeout": {"type": "string"} 247 } 248 }, 249 "deployment": { 250 "id": "#/definitions/deployment", 251 "type": ["object", "null"], 252 "properties": { 253 "mode": {"type": "string"}, 254 "replicas": {"type": "integer"}, 255 "labels": {"$ref": "#/definitions/list_or_dict"}, 256 "update_config": { 257 "type": "object", 258 "properties": { 259 "parallelism": {"type": "integer"}, 260 "delay": {"type": "string", "format": "duration"}, 261 "failure_action": {"type": "string"}, 262 "monitor": {"type": "string", "format": "duration"}, 263 "max_failure_ratio": {"type": "number"} 264 }, 265 "additionalProperties": false 266 }, 267 "resources": { 268 "type": "object", 269 "properties": { 270 "limits": {"$ref": "#/definitions/resource"}, 271 "reservations": {"$ref": "#/definitions/resource"} 272 }, 273 "additionalProperties": false 274 }, 275 "restart_policy": { 276 "type": "object", 277 "properties": { 278 "condition": {"type": "string"}, 279 "delay": {"type": "string", "format": "duration"}, 280 "max_attempts": {"type": "integer"}, 281 "window": {"type": "string", "format": "duration"} 282 }, 283 "additionalProperties": false 284 }, 285 "placement": { 286 "type": "object", 287 "properties": { 288 "constraints": {"type": "array", "items": {"type": "string"}} 289 }, 290 "additionalProperties": false 291 } 292 }, 293 "additionalProperties": false 294 }, 295 296 "resource": { 297 "id": "#/definitions/resource", 298 "type": "object", 299 "properties": { 300 "cpus": {"type": "string"}, 301 "memory": {"type": "string"} 302 }, 303 "additionalProperties": false 304 }, 305 306 "network": { 307 "id": "#/definitions/network", 308 "type": ["object", "null"], 309 "properties": { 310 "driver": {"type": "string"}, 311 "driver_opts": { 312 "type": "object", 313 "patternProperties": { 314 "^.+$": {"type": ["string", "number"]} 315 } 316 }, 317 "ipam": { 318 "type": "object", 319 "properties": { 320 "driver": {"type": "string"}, 321 "config": { 322 "type": "array", 323 "items": { 324 "type": "object", 325 "properties": { 326 "subnet": {"type": "string"} 327 }, 328 "additionalProperties": false 329 } 330 } 331 }, 332 "additionalProperties": false 333 }, 334 "external": { 335 "type": ["boolean", "object"], 336 "properties": { 337 "name": {"type": "string"} 338 }, 339 "additionalProperties": false 340 }, 341 "internal": {"type": "boolean"}, 342 "labels": {"$ref": "#/definitions/list_or_dict"} 343 }, 344 "additionalProperties": false 345 }, 346 347 "volume": { 348 "id": "#/definitions/volume", 349 "type": ["object", "null"], 350 "properties": { 351 "driver": {"type": "string"}, 352 "driver_opts": { 353 "type": "object", 354 "patternProperties": { 355 "^.+$": {"type": ["string", "number"]} 356 } 357 }, 358 "external": { 359 "type": ["boolean", "object"], 360 "properties": { 361 "name": {"type": "string"} 362 }, 363 "additionalProperties": false 364 }, 365 "labels": {"$ref": "#/definitions/list_or_dict"} 366 }, 367 "additionalProperties": false 368 }, 369 370 "secret": { 371 "id": "#/definitions/secret", 372 "type": "object", 373 "properties": { 374 "file": {"type": "string"}, 375 "external": { 376 "type": ["boolean", "object"], 377 "properties": { 378 "name": {"type": "string"} 379 } 380 }, 381 "labels": {"$ref": "#/definitions/list_or_dict"} 382 }, 383 "additionalProperties": false 384 }, 385 386 "string_or_list": { 387 "oneOf": [ 388 {"type": "string"}, 389 {"$ref": "#/definitions/list_of_strings"} 390 ] 391 }, 392 393 "list_of_strings": { 394 "type": "array", 395 "items": {"type": "string"}, 396 "uniqueItems": true 397 }, 398 399 "list_or_dict": { 400 "oneOf": [ 401 { 402 "type": "object", 403 "patternProperties": { 404 ".+": { 405 "type": ["string", "number", "null"] 406 } 407 }, 408 "additionalProperties": false 409 }, 410 {"type": "array", "items": {"type": "string"}, "uniqueItems": true} 411 ] 412 }, 413 414 "constraints": { 415 "service": { 416 "id": "#/definitions/constraints/service", 417 "anyOf": [ 418 {"required": ["build"]}, 419 {"required": ["image"]} 420 ], 421 "properties": { 422 "build": { 423 "required": ["context"] 424 } 425 } 426 } 427 } 428 } 429 }