compose-spec-schema
Version:
TypeScript type and JSON schema for `docker-compose.yml`
1,183 lines • 54 kB
TypeScript
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