UNPKG

compose-spec-schema

Version:

TypeScript type and JSON schema for `docker-compose.yml`

1,183 lines 54 kB
declare const _default: { readonly $schema: "http://json-schema.org/draft/2019-09/schema#"; readonly id: "compose_spec.json"; readonly type: "object"; readonly title: "Compose Specification"; readonly description: "The Compose file is a YAML file defining a multi-containers based application."; readonly properties: { readonly version: { readonly type: "string"; readonly description: "Version of the Compose specification used. Tools not implementing required version MUST reject the configuration file."; }; readonly services: { readonly id: "#/properties/services"; readonly type: "object"; readonly patternProperties: { readonly "^[a-zA-Z0-9._-]+$": { readonly $ref: "#/definitions/service"; }; }; readonly additionalProperties: false; }; readonly networks: { readonly id: "#/properties/networks"; readonly type: "object"; readonly patternProperties: { readonly "^[a-zA-Z0-9._-]+$": { readonly $ref: "#/definitions/network"; }; }; }; readonly volumes: { readonly id: "#/properties/volumes"; readonly type: "object"; readonly patternProperties: { readonly "^[a-zA-Z0-9._-]+$": { readonly $ref: "#/definitions/volume"; }; }; readonly additionalProperties: false; }; readonly secrets: { readonly id: "#/properties/secrets"; readonly type: "object"; readonly patternProperties: { readonly "^[a-zA-Z0-9._-]+$": { readonly $ref: "#/definitions/secret"; }; }; readonly additionalProperties: false; }; readonly configs: { readonly id: "#/properties/configs"; readonly type: "object"; readonly patternProperties: { readonly "^[a-zA-Z0-9._-]+$": { readonly $ref: "#/definitions/config"; }; }; readonly additionalProperties: false; }; }; readonly patternProperties: { readonly "^x-": {}; }; readonly additionalProperties: false; readonly definitions: { readonly service: { readonly id: "#/definitions/service"; readonly type: "object"; readonly properties: { readonly deploy: { readonly $ref: "#/definitions/deployment"; }; readonly build: { readonly oneOf: readonly [{ readonly type: "string"; }, { readonly type: "object"; readonly properties: { readonly context: { readonly type: "string"; }; readonly dockerfile: { readonly type: "string"; }; readonly args: { readonly $ref: "#/definitions/list_or_dict"; }; readonly labels: { readonly $ref: "#/definitions/list_or_dict"; }; readonly cache_from: { readonly type: "array"; readonly items: { readonly type: "string"; }; }; readonly network: { readonly type: "string"; }; readonly target: { readonly type: "string"; }; readonly shm_size: { readonly type: readonly ["integer", "string"]; }; readonly extra_hosts: { readonly $ref: "#/definitions/list_or_dict"; }; readonly isolation: { readonly type: "string"; }; }; readonly additionalProperties: false; readonly patternProperties: { readonly "^x-": {}; }; }]; }; readonly blkio_config: { readonly type: "object"; readonly properties: { readonly device_read_bps: { readonly type: "array"; readonly items: { readonly $ref: "#/definitions/blkio_limit"; }; }; readonly device_read_iops: { readonly type: "array"; readonly items: { readonly $ref: "#/definitions/blkio_limit"; }; }; readonly device_write_bps: { readonly type: "array"; readonly items: { readonly $ref: "#/definitions/blkio_limit"; }; }; readonly device_write_iops: { readonly type: "array"; readonly items: { readonly $ref: "#/definitions/blkio_limit"; }; }; readonly weight: { readonly type: "integer"; }; readonly weight_device: { readonly type: "array"; readonly items: { readonly $ref: "#/definitions/blkio_weight"; }; }; }; readonly additionalProperties: false; }; readonly cap_add: { readonly type: "array"; readonly items: { readonly type: "string"; }; readonly uniqueItems: true; }; readonly cap_drop: { readonly type: "array"; readonly items: { readonly type: "string"; }; readonly uniqueItems: true; }; readonly cgroup_parent: { readonly type: "string"; }; readonly command: { readonly oneOf: readonly [{ readonly type: "string"; }, { readonly type: "array"; readonly items: { readonly type: "string"; }; }]; }; readonly configs: { readonly type: "array"; readonly items: { readonly oneOf: readonly [{ readonly type: "string"; }, { readonly type: "object"; readonly properties: { readonly source: { readonly type: "string"; }; readonly target: { readonly type: "string"; }; readonly uid: { readonly type: "string"; }; readonly gid: { readonly type: "string"; }; readonly mode: { readonly type: "number"; }; }; readonly additionalProperties: false; readonly patternProperties: { readonly "^x-": {}; }; }]; }; }; readonly container_name: { readonly type: "string"; }; readonly cpu_count: { readonly type: "integer"; readonly minimum: 0; }; readonly cpu_percent: { readonly type: "integer"; readonly minimum: 0; readonly maximum: 100; }; readonly cpu_shares: { readonly type: readonly ["number", "string"]; }; readonly cpu_quota: { readonly type: readonly ["number", "string"]; }; readonly cpu_period: { readonly type: readonly ["number", "string"]; }; readonly cpu_rt_period: { readonly type: readonly ["number", "string"]; }; readonly cpu_rt_runtime: { readonly type: readonly ["number", "string"]; }; readonly cpus: { readonly type: readonly ["number", "string"]; }; readonly cpuset: { readonly type: "string"; }; readonly credential_spec: { readonly type: "object"; readonly properties: { readonly config: { readonly type: "string"; }; readonly file: { readonly type: "string"; }; readonly registry: { readonly type: "string"; }; }; readonly additionalProperties: false; readonly patternProperties: { readonly "^x-": {}; }; }; readonly depends_on: { readonly oneOf: readonly [{ readonly $ref: "#/definitions/list_of_strings"; }, { readonly type: "object"; readonly additionalProperties: false; readonly patternProperties: { readonly "^[a-zA-Z0-9._-]+$": { readonly type: "object"; readonly additionalProperties: false; readonly properties: { readonly condition: { readonly type: "string"; readonly enum: readonly ["service_started", "service_healthy", "service_completed_successfully"]; }; }; readonly required: readonly ["condition"]; }; }; }]; }; readonly device_cgroup_rules: { readonly $ref: "#/definitions/list_of_strings"; }; readonly devices: { readonly type: "array"; readonly items: { readonly type: "string"; }; readonly uniqueItems: true; }; readonly dns: { readonly $ref: "#/definitions/string_or_list"; }; readonly dns_opt: { readonly type: "array"; readonly items: { readonly type: "string"; }; readonly uniqueItems: true; }; readonly dns_search: { readonly $ref: "#/definitions/string_or_list"; }; readonly domainname: { readonly type: "string"; }; readonly entrypoint: { readonly oneOf: readonly [{ readonly type: "string"; }, { readonly type: "array"; readonly items: { readonly type: "string"; }; }]; }; readonly env_file: { readonly $ref: "#/definitions/string_or_list"; }; readonly environment: { readonly $ref: "#/definitions/list_or_dict"; }; readonly expose: { readonly type: "array"; readonly items: { readonly type: readonly ["string", "number"]; readonly format: "expose"; }; readonly uniqueItems: true; }; readonly extends: { readonly oneOf: readonly [{ readonly type: "string"; }, { readonly type: "object"; readonly properties: { readonly service: { readonly type: "string"; }; readonly file: { readonly type: "string"; }; }; readonly required: readonly ["service"]; readonly additionalProperties: false; }]; }; readonly external_links: { readonly type: "array"; readonly items: { readonly type: "string"; }; readonly uniqueItems: true; }; readonly extra_hosts: { readonly $ref: "#/definitions/list_or_dict"; }; readonly group_add: { readonly type: "array"; readonly items: { readonly type: readonly ["string", "number"]; }; readonly uniqueItems: true; }; readonly healthcheck: { readonly $ref: "#/definitions/healthcheck"; }; readonly hostname: { readonly type: "string"; }; readonly image: { readonly type: "string"; }; readonly init: { readonly type: "boolean"; }; readonly ipc: { readonly type: "string"; }; readonly isolation: { readonly type: "string"; }; readonly labels: { readonly $ref: "#/definitions/list_or_dict"; }; readonly links: { readonly type: "array"; readonly items: { readonly type: "string"; }; readonly uniqueItems: true; }; readonly logging: { readonly type: "object"; readonly properties: { readonly driver: { readonly type: "string"; }; readonly options: { readonly type: "object"; readonly patternProperties: { readonly "^.+$": { readonly type: readonly ["string", "number", "null"]; }; }; }; }; readonly additionalProperties: false; readonly patternProperties: { readonly "^x-": {}; }; }; readonly mac_address: { readonly type: "string"; }; readonly mem_limit: { readonly type: readonly ["number", "string"]; }; readonly mem_reservation: { readonly type: readonly ["string", "integer"]; }; readonly mem_swappiness: { readonly type: "integer"; }; readonly memswap_limit: { readonly type: readonly ["number", "string"]; }; readonly network_mode: { readonly type: "string"; }; readonly networks: { readonly oneOf: readonly [{ readonly $ref: "#/definitions/list_of_strings"; }, { readonly type: "object"; readonly patternProperties: { readonly "^[a-zA-Z0-9._-]+$": { readonly oneOf: readonly [{ readonly type: "object"; readonly properties: { readonly aliases: { readonly $ref: "#/definitions/list_of_strings"; }; readonly ipv4_address: { readonly type: "string"; }; readonly ipv6_address: { readonly type: "string"; }; readonly link_local_ips: { readonly $ref: "#/definitions/list_of_strings"; }; readonly priority: { readonly type: "number"; }; }; readonly additionalProperties: false; readonly patternProperties: { readonly "^x-": {}; }; }, { readonly type: "null"; }]; }; }; readonly additionalProperties: false; }]; }; readonly oom_kill_disable: { readonly type: "boolean"; }; readonly oom_score_adj: { readonly type: "integer"; readonly minimum: -1000; readonly maximum: 1000; }; readonly pid: { readonly type: readonly ["string", "null"]; }; readonly pids_limit: { readonly type: readonly ["number", "string"]; }; readonly platform: { readonly type: "string"; }; readonly ports: { readonly type: "array"; readonly items: { readonly oneOf: readonly [{ readonly type: "number"; readonly format: "ports"; }, { readonly type: "string"; readonly format: "ports"; }, { readonly type: "object"; readonly properties: { readonly mode: { readonly type: "string"; }; readonly host_ip: { readonly type: "string"; }; readonly target: { readonly type: "integer"; }; readonly published: { readonly type: "integer"; }; readonly protocol: { readonly type: "string"; }; }; readonly additionalProperties: false; readonly patternProperties: { readonly "^x-": {}; }; }]; }; readonly uniqueItems: true; }; readonly privileged: { readonly type: "boolean"; }; readonly profiles: { readonly $ref: "#/definitions/list_of_strings"; }; readonly pull_policy: { readonly type: "string"; readonly enum: readonly ["always", "never", "if_not_present", "build", "missing"]; }; readonly read_only: { readonly type: "boolean"; }; readonly restart: { readonly type: "string"; }; readonly runtime: { readonly type: "string"; }; readonly scale: { readonly type: "integer"; }; readonly security_opt: { readonly type: "array"; readonly items: { readonly type: "string"; }; readonly uniqueItems: true; }; readonly shm_size: { readonly type: readonly ["number", "string"]; }; readonly secrets: { readonly type: "array"; readonly items: { readonly oneOf: readonly [{ readonly type: "string"; }, { readonly type: "object"; readonly properties: { readonly source: { readonly type: "string"; }; readonly target: { readonly type: "string"; }; readonly uid: { readonly type: "string"; }; readonly gid: { readonly type: "string"; }; readonly mode: { readonly type: "number"; }; }; readonly additionalProperties: false; readonly patternProperties: { readonly "^x-": {}; }; }]; }; }; readonly sysctls: { readonly $ref: "#/definitions/list_or_dict"; }; readonly stdin_open: { readonly type: "boolean"; }; readonly stop_grace_period: { readonly type: "string"; readonly format: "duration"; }; readonly stop_signal: { readonly type: "string"; }; readonly storage_opt: { readonly type: "object"; }; readonly tmpfs: { readonly $ref: "#/definitions/string_or_list"; }; readonly tty: { readonly type: "boolean"; }; readonly ulimits: { readonly type: "object"; readonly patternProperties: { readonly "^[a-z]+$": { readonly oneOf: readonly [{ readonly type: "integer"; }, { readonly type: "object"; readonly properties: { readonly hard: { readonly type: "integer"; }; readonly soft: { readonly type: "integer"; }; }; readonly required: readonly ["soft", "hard"]; readonly additionalProperties: false; readonly patternProperties: { readonly "^x-": {}; }; }]; }; }; }; readonly user: { readonly type: "string"; }; readonly userns_mode: { readonly type: "string"; }; readonly volumes: { readonly type: "array"; readonly items: { readonly oneOf: readonly [{ readonly type: "string"; }, { readonly type: "object"; readonly required: readonly ["type"]; readonly properties: { readonly type: { readonly type: "string"; }; readonly source: { readonly type: "string"; }; readonly target: { readonly type: "string"; }; readonly read_only: { readonly type: "boolean"; }; readonly consistency: { readonly type: "string"; }; readonly bind: { readonly type: "object"; readonly properties: { readonly propagation: { readonly type: "string"; }; readonly create_host_path: { readonly type: "boolean"; }; }; readonly additionalProperties: false; readonly patternProperties: { readonly "^x-": {}; }; }; readonly volume: { readonly type: "object"; readonly properties: { readonly nocopy: { readonly type: "boolean"; }; }; readonly additionalProperties: false; readonly patternProperties: { readonly "^x-": {}; }; }; readonly tmpfs: { readonly type: "object"; readonly properties: { readonly size: { readonly oneOf: readonly [{ readonly type: "integer"; readonly minimum: 0; }, { readonly type: "string"; }]; }; }; readonly additionalProperties: false; readonly patternProperties: { readonly "^x-": {}; }; }; }; readonly additionalProperties: false; readonly patternProperties: { readonly "^x-": {}; }; }]; }; readonly uniqueItems: true; }; readonly volumes_from: { readonly type: "array"; readonly items: { readonly type: "string"; }; readonly uniqueItems: true; }; readonly working_dir: { readonly type: "string"; }; }; readonly patternProperties: { readonly "^x-": {}; }; readonly additionalProperties: false; }; readonly healthcheck: { readonly id: "#/definitions/healthcheck"; readonly type: "object"; readonly properties: { readonly disable: { readonly type: "boolean"; }; readonly interval: { readonly type: "string"; readonly format: "duration"; }; readonly retries: { readonly type: "number"; }; readonly test: { readonly oneOf: readonly [{ readonly type: "string"; }, { readonly type: "array"; readonly items: { readonly type: "string"; }; }]; }; readonly timeout: { readonly type: "string"; readonly format: "duration"; }; readonly start_period: { readonly type: "string"; readonly format: "duration"; }; }; readonly additionalProperties: false; readonly patternProperties: { readonly "^x-": {}; }; }; readonly deployment: { readonly id: "#/definitions/deployment"; readonly type: readonly ["object", "null"]; readonly properties: { readonly mode: { readonly type: "string"; }; readonly endpoint_mode: { readonly type: "string"; }; readonly replicas: { readonly type: "integer"; }; readonly labels: { readonly $ref: "#/definitions/list_or_dict"; }; readonly rollback_config: { readonly type: "object"; readonly properties: { readonly parallelism: { readonly type: "integer"; }; readonly delay: { readonly type: "string"; readonly format: "duration"; }; readonly failure_action: { readonly type: "string"; }; readonly monitor: { readonly type: "string"; readonly format: "duration"; }; readonly max_failure_ratio: { readonly type: "number"; }; readonly order: { readonly type: "string"; readonly enum: readonly ["start-first", "stop-first"]; }; }; readonly additionalProperties: false; readonly patternProperties: { readonly "^x-": {}; }; }; readonly update_config: { readonly type: "object"; readonly properties: { readonly parallelism: { readonly type: "integer"; }; readonly delay: { readonly type: "string"; readonly format: "duration"; }; readonly failure_action: { readonly type: "string"; }; readonly monitor: { readonly type: "string"; readonly format: "duration"; }; readonly max_failure_ratio: { readonly type: "number"; }; readonly order: { readonly type: "string"; readonly enum: readonly ["start-first", "stop-first"]; }; }; readonly additionalProperties: false; readonly patternProperties: { readonly "^x-": {}; }; }; readonly resources: { readonly type: "object"; readonly properties: { readonly limits: { readonly type: "object"; readonly properties: { readonly cpus: { readonly type: readonly ["number", "string"]; }; readonly memory: { readonly type: "string"; }; }; readonly additionalProperties: false; readonly patternProperties: { readonly "^x-": {}; }; }; readonly reservations: { readonly type: "object"; readonly properties: { readonly cpus: { readonly type: readonly ["number", "string"]; }; readonly memory: { readonly type: "string"; }; readonly generic_resources: { readonly $ref: "#/definitions/generic_resources"; }; readonly devices: { readonly $ref: "#/definitions/devices"; }; }; readonly additionalProperties: false; readonly patternProperties: { readonly "^x-": {}; }; }; }; readonly additionalProperties: false; readonly patternProperties: { readonly "^x-": {}; }; }; readonly restart_policy: { readonly type: "object"; readonly properties: { readonly condition: { readonly type: "string"; }; readonly delay: { readonly type: "string"; readonly format: "duration"; }; readonly max_attempts: { readonly type: "integer"; }; readonly window: { readonly type: "string"; readonly format: "duration"; }; }; readonly additionalProperties: false; readonly patternProperties: { readonly "^x-": {}; }; }; readonly placement: { readonly type: "object"; readonly properties: { readonly constraints: { readonly type: "array"; readonly items: { readonly type: "string"; }; }; readonly preferences: { readonly type: "array"; readonly items: { readonly type: "object"; readonly properties: { readonly spread: { readonly type: "string"; }; }; readonly additionalProperties: false; readonly patternProperties: { readonly "^x-": {}; }; }; }; readonly max_replicas_per_node: { readonly type: "integer"; }; }; readonly additionalProperties: false; readonly patternProperties: { readonly "^x-": {}; }; }; }; readonly additionalProperties: false; readonly patternProperties: { readonly "^x-": {}; }; }; readonly generic_resources: { readonly id: "#/definitions/generic_resources"; readonly type: "array"; readonly items: { readonly type: "object"; readonly properties: { readonly discrete_resource_spec: { readonly type: "object"; readonly properties: { readonly kind: { readonly type: "string"; }; readonly value: { readonly type: "number"; }; }; readonly additionalProperties: false; readonly patternProperties: { readonly "^x-": {}; }; }; }; readonly additionalProperties: false; readonly patternProperties: { readonly "^x-": {}; }; }; }; readonly devices: { readonly id: "#/definitions/devices"; readonly type: "array"; readonly items: { readonly type: "object"; readonly properties: { readonly capabilities: { readonly $ref: "#/definitions/list_of_strings"; }; readonly count: { readonly type: readonly ["string", "integer"]; }; readonly device_ids: { readonly $ref: "#/definitions/list_of_strings"; }; readonly driver: { readonly type: "string"; }; readonly options: { readonly $ref: "#/definitions/list_or_dict"; }; }; readonly additionalProperties: false; readonly patternProperties: { readonly "^x-": {}; }; }; }; readonly network: { readonly id: "#/definitions/network"; readonly type: readonly ["object", "null"]; readonly properties: { readonly name: { readonly type: "string"; }; readonly driver: { readonly type: "string"; }; readonly driver_opts: { readonly type: "object"; readonly patternProperties: { readonly "^.+$": { readonly type: readonly ["string", "number"]; }; }; }; readonly ipam: { readonly type: "object"; readonly properties: { readonly driver: { readonly type: "string"; }; readonly config: { readonly type: "array"; readonly items: { readonly type: "object"; readonly properties: { readonly subnet: { readonly type: "string"; readonly format: "subnet_ip_address"; }; readonly ip_range: { readonly type: "string"; }; readonly gateway: { readonly type: "string"; }; readonly aux_addresses: { readonly type: "object"; readonly additionalProperties: false; readonly patternProperties: { readonly "^.+$": { readonly type: "string"; }; }; }; }; readonly additionalProperties: false; readonly patternProperties: { readonly "^x-": {}; }; }; }; readonly options: { readonly type: "object"; readonly additionalProperties: false; readonly patternProperties: { readonly "^.+$": { readonly type: "string"; }; }; }; }; readonly additionalProperties: false; readonly patternProperties: { readonly "^x-": {}; }; }; readonly external: { readonly type: readonly ["boolean", "object"]; readonly properties: { readonly name: { readonly deprecated: true; readonly type: "string"; }; }; readonly additionalProperties: false; readonly patternProperties: { readonly "^x-": {}; }; }; readonly internal: { readonly type: "boolean"; }; readonly enable_ipv6: { readonly type: "boolean"; }; readonly attachable: { readonly type: "boolean"; }; readonly labels: { readonly $ref: "#/definitions/list_or_dict"; }; }; readonly additionalProperties: false; readonly patternProperties: { readonly "^x-": {}; }; }; readonly volume: { readonly id: "#/definitions/volume"; readonly type: readonly ["object", "null"]; readonly properties: { readonly name: { readonly type: "string"; }; readonly driver: { readonly type: "string"; }; readonly driver_opts: { readonly type: "object"; readonly patternProperties: { readonly "^.+$": { readonly type: readonly ["string", "number"]; }; }; }; readonly external: { readonly type: readonly ["boolean", "object"]; readonly properties: { readonly name: { readonly deprecated: true; readonly type: "string"; }; }; readonly additionalProperties: false; readonly patternProperties: { readonly "^x-": {}; }; }; readonly labels: { readonly $ref: "#/definitions/list_or_dict"; }; }; readonly additionalProperties: false; readonly patternProperties: { readonly "^x-": {}; }; }; readonly secret: { readonly id: "#/definitions/secret"; readonly type: "object"; readonly properties: { readonly name: { readonly type: "string"; }; readonly file: { readonly type: "string"; }; readonly external: { readonly type: readonly ["boolean", "object"]; readonly properties: { readonly name: { readonly type: "string"; }; }; }; readonly labels: { readonly $ref: "#/definitions/list_or_dict"; }; readonly driver: { readonly type: "string"; }; readonly driver_opts: { readonly type: "object"; readonly patte