github.com/ali-iotechsys/cli@v20.10.0+incompatible/cli/compose/schema/data/config_schema_v3.0.json (about)

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