github.com/AliyunContainerService/cli@v0.0.0-20181009023821-814ced4b30d0/cli/compose/schema/data/config_schema_v3.3.json (about)

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