UNPKG

docker-compose

Version:

Manage docker-compose from Node.js

1,759 lines (1,756 loc) 72.5 kB
/* eslint-disable */ /** * This file was automatically generated by json-schema-to-typescript. * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, * and run json-schema-to-typescript to regenerate this file. */ /** * Compose application or sub-projects to be included. */ export type Include = | string | { /** * Path to the Compose application or sub-project files to include. */ path?: string | ListOfStrings; /** * Path to the environment files to use to define default values when interpolating variables in the Compose files being parsed. */ env_file?: string | ListOfStrings; /** * Path to resolve relative paths set in the Compose file */ project_directory?: string; }; /** * A list of string values. */ export type ListOfStrings = string[]; /** * Development configuration for the service, used for development workflows. */ export type Development = { /** * Configure watch mode for the service, which monitors file changes and performs actions in response. */ watch?: { /** * Patterns to exclude from watching. */ ignore?: string | ListOfStrings; /** * Patterns to include in watching. */ include?: string | ListOfStrings; /** * Path to watch for changes. */ path: string; /** * Action to take when a change is detected: rebuild the container, sync files, restart the container, sync and restart, or sync and execute a command. */ action: "rebuild" | "sync" | "restart" | "sync+restart" | "sync+exec"; /** * Target path in the container for sync operations. */ target?: string; exec?: ServiceHook; /** * Ensure that an initial synchronization is done before starting watch mode for sync+x triggers */ initial_sync?: boolean; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; }[]; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". * * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; } & Development1; export type Development1 = { /** * Configure watch mode for the service, which monitors file changes and performs actions in response. */ watch?: { /** * Patterns to exclude from watching. */ ignore?: string | ListOfStrings; /** * Patterns to include in watching. */ include?: string | ListOfStrings; /** * Path to watch for changes. */ path: string; /** * Action to take when a change is detected: rebuild the container, sync files, restart the container, sync and restart, or sync and execute a command. */ action: "rebuild" | "sync" | "restart" | "sync+restart" | "sync+exec"; /** * Target path in the container for sync operations. */ target?: string; exec?: ServiceHook; /** * Ensure that an initial synchronization is done before starting watch mode for sync+x triggers */ initial_sync?: boolean; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; }[]; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". * * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; } | null; /** * Deployment configuration for the service. */ export type Deployment = { /** * Deployment mode for the service: 'replicated' (default) or 'global'. */ mode?: string; /** * Endpoint mode for the service: 'vip' (default) or 'dnsrr'. */ endpoint_mode?: string; /** * Number of replicas of the service container to run. */ replicas?: number | string; /** * Labels to apply to the service. */ labels?: | { /** * Value for the key, which can be a string, number, boolean, or null. * * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` ".+". */ [k: string]: string | number | boolean | null; } | string[]; /** * Configuration for rolling back a service update. */ rollback_config?: { /** * The number of containers to rollback at a time. If set to 0, all containers rollback simultaneously. */ parallelism?: number | string; /** * The time to wait between each container group's rollback (e.g., '1s', '1m30s'). */ delay?: string; /** * Action to take if a rollback fails: 'continue', 'pause'. */ failure_action?: string; /** * Duration to monitor each task for failures after it is created (e.g., '1s', '1m30s'). */ monitor?: string; /** * Failure rate to tolerate during a rollback. */ max_failure_ratio?: number | string; /** * Order of operations during rollbacks: 'stop-first' (default) or 'start-first'. */ order?: "start-first" | "stop-first"; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; }; /** * Configuration for updating a service. */ update_config?: { /** * The number of containers to update at a time. */ parallelism?: number | string; /** * The time to wait between updating a group of containers (e.g., '1s', '1m30s'). */ delay?: string; /** * Action to take if an update fails: 'continue', 'pause', 'rollback'. */ failure_action?: string; /** * Duration to monitor each updated task for failures after it is created (e.g., '1s', '1m30s'). */ monitor?: string; /** * Failure rate to tolerate during an update (0 to 1). */ max_failure_ratio?: number | string; /** * Order of operations during updates: 'stop-first' (default) or 'start-first'. */ order?: "start-first" | "stop-first"; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; }; /** * Resource constraints and reservations for the service. */ resources?: { /** * Resource limits for the service containers. */ limits?: { /** * Limit for how much of the available CPU resources, as number of cores, a container can use. */ cpus?: number | string; /** * Limit on the amount of memory a container can allocate (e.g., '1g', '1024m'). */ memory?: string; /** * Maximum number of PIDs available to the container. */ pids?: number | string; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; }; /** * Resource reservations for the service containers. */ reservations?: { /** * Reservation for how much of the available CPU resources, as number of cores, a container can use. */ cpus?: number | string; /** * Reservation on the amount of memory a container can allocate (e.g., '1g', '1024m'). */ memory?: string; generic_resources?: GenericResources; devices?: Devices; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; }; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; }; /** * Restart policy for the service containers. */ restart_policy?: { /** * Condition for restarting the container: 'none', 'on-failure', 'any'. */ condition?: string; /** * Delay between restart attempts (e.g., '1s', '1m30s'). */ delay?: string; /** * Maximum number of restart attempts before giving up. */ max_attempts?: number | string; /** * Time window used to evaluate the restart policy (e.g., '1s', '1m30s'). */ window?: string; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; }; /** * Constraints and preferences for the platform to select a physical node to run service containers */ placement?: { /** * Placement constraints for the service (e.g., 'node.role==manager'). */ constraints?: string[]; /** * Placement preferences for the service. */ preferences?: { /** * Spread tasks evenly across values of the specified node label. */ spread?: string; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; }[]; /** * Maximum number of replicas of the service. */ max_replicas_per_node?: number | string; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; }; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". * * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; } & Deployment1; /** * User-defined resources to reserve. */ export type GenericResources = { /** * Specification for discrete (countable) resources. */ discrete_resource_spec?: { /** * Type of resource (e.g., 'GPU', 'FPGA', 'SSD'). */ kind?: string; /** * Number of resources of this kind to reserve. */ value?: number | string; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; }; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; }[]; /** * List of capabilities the device needs to have (e.g., 'gpu', 'compute', 'utility'). */ export type ListOfStrings1 = string[]; /** * List of specific device IDs to reserve. */ export type ListOfStrings2 = string[]; /** * Device reservations for the container. */ export type Devices = { capabilities: ListOfStrings1; /** * Number of devices of this type to reserve. */ count?: string | number; device_ids?: ListOfStrings2; /** * Device driver to use (e.g., 'nvidia'). */ driver?: string; /** * Driver-specific options for the device. */ options?: | { /** * Value for the key, which can be a string, number, boolean, or null. * * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` ".+". */ [k: string]: string | number | boolean | null; } | string[]; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; }[]; export type Deployment1 = { /** * Deployment mode for the service: 'replicated' (default) or 'global'. */ mode?: string; /** * Endpoint mode for the service: 'vip' (default) or 'dnsrr'. */ endpoint_mode?: string; /** * Number of replicas of the service container to run. */ replicas?: number | string; /** * Labels to apply to the service. */ labels?: | { /** * Value for the key, which can be a string, number, boolean, or null. * * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` ".+". */ [k: string]: string | number | boolean | null; } | string[]; /** * Configuration for rolling back a service update. */ rollback_config?: { /** * The number of containers to rollback at a time. If set to 0, all containers rollback simultaneously. */ parallelism?: number | string; /** * The time to wait between each container group's rollback (e.g., '1s', '1m30s'). */ delay?: string; /** * Action to take if a rollback fails: 'continue', 'pause'. */ failure_action?: string; /** * Duration to monitor each task for failures after it is created (e.g., '1s', '1m30s'). */ monitor?: string; /** * Failure rate to tolerate during a rollback. */ max_failure_ratio?: number | string; /** * Order of operations during rollbacks: 'stop-first' (default) or 'start-first'. */ order?: "start-first" | "stop-first"; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; }; /** * Configuration for updating a service. */ update_config?: { /** * The number of containers to update at a time. */ parallelism?: number | string; /** * The time to wait between updating a group of containers (e.g., '1s', '1m30s'). */ delay?: string; /** * Action to take if an update fails: 'continue', 'pause', 'rollback'. */ failure_action?: string; /** * Duration to monitor each updated task for failures after it is created (e.g., '1s', '1m30s'). */ monitor?: string; /** * Failure rate to tolerate during an update (0 to 1). */ max_failure_ratio?: number | string; /** * Order of operations during updates: 'stop-first' (default) or 'start-first'. */ order?: "start-first" | "stop-first"; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; }; /** * Resource constraints and reservations for the service. */ resources?: { /** * Resource limits for the service containers. */ limits?: { /** * Limit for how much of the available CPU resources, as number of cores, a container can use. */ cpus?: number | string; /** * Limit on the amount of memory a container can allocate (e.g., '1g', '1024m'). */ memory?: string; /** * Maximum number of PIDs available to the container. */ pids?: number | string; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; }; /** * Resource reservations for the service containers. */ reservations?: { /** * Reservation for how much of the available CPU resources, as number of cores, a container can use. */ cpus?: number | string; /** * Reservation on the amount of memory a container can allocate (e.g., '1g', '1024m'). */ memory?: string; generic_resources?: GenericResources; devices?: Devices; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; }; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; }; /** * Restart policy for the service containers. */ restart_policy?: { /** * Condition for restarting the container: 'none', 'on-failure', 'any'. */ condition?: string; /** * Delay between restart attempts (e.g., '1s', '1m30s'). */ delay?: string; /** * Maximum number of restart attempts before giving up. */ max_attempts?: number | string; /** * Time window used to evaluate the restart policy (e.g., '1s', '1m30s'). */ window?: string; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; }; /** * Constraints and preferences for the platform to select a physical node to run service containers */ placement?: { /** * Placement constraints for the service (e.g., 'node.role==manager'). */ constraints?: string[]; /** * Placement preferences for the service. */ preferences?: { /** * Spread tasks evenly across values of the specified node label. */ spread?: string; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; }[]; /** * Maximum number of replicas of the service. */ max_replicas_per_node?: number | string; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; }; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". * * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; } | null; /** * Either a dictionary mapping keys to values, or a list of strings. */ export type ListOrDict = | { /** * Value for the key, which can be a string, number, boolean, or null. * * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` ".+". */ [k: string]: string | number | boolean | null; } | string[]; /** * Secrets to expose to the build. These are accessible at build-time. */ export type ServiceConfigOrSecret = ( | string | { /** * Name of the config or secret as defined in the top-level configs or secrets section. */ source?: string; /** * Path in the container where the config or secret will be mounted. Defaults to /<source> for configs and /run/secrets/<source> for secrets. */ target?: string; /** * UID of the file in the container. Default is 0 (root). */ uid?: string; /** * GID of the file in the container. Default is 0 (root). */ gid?: string; /** * File permission mode inside the container, in octal. Default is 0444 for configs and 0400 for secrets. */ mode?: number | string; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; } )[]; /** * Grant access to Configs on a per-service basis. */ export type ServiceConfigOrSecret1 = ( | string | { /** * Name of the config or secret as defined in the top-level configs or secrets section. */ source?: string; /** * Path in the container where the config or secret will be mounted. Defaults to /<source> for configs and /run/secrets/<source> for secrets. */ target?: string; /** * UID of the file in the container. Default is 0 (root). */ uid?: string; /** * GID of the file in the container. Default is 0 (root). */ gid?: string; /** * File permission mode inside the container, in octal. Default is 0444 for configs and 0400 for secrets. */ mode?: number | string; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; } )[]; /** * A list of unique string values. */ export type ListOfStrings3 = string[]; /** * A list of unique string values. */ export type ListOfStrings4 = string[]; /** * A list of unique string values. */ export type ListOfStrings5 = string[]; /** * A list of unique string values. */ export type ListOfStrings6 = string[]; /** * A list of unique string values. */ export type ListOfStrings7 = string[]; /** * A list of unique string values. */ export type ListOfStrings8 = string[]; /** * A list of unique string values. */ export type ListOfStrings9 = string[]; /** * Grant access to Secrets on a per-service basis. */ export type ServiceConfigOrSecret2 = ( | string | { /** * Name of the config or secret as defined in the top-level configs or secrets section. */ source?: string; /** * Path in the container where the config or secret will be mounted. Defaults to /<source> for configs and /run/secrets/<source> for secrets. */ target?: string; /** * UID of the file in the container. Default is 0 (root). */ uid?: string; /** * GID of the file in the container. Default is 0 (root). */ gid?: string; /** * File permission mode inside the container, in octal. Default is 0444 for configs and 0400 for secrets. */ mode?: number | string; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; } )[]; /** * Network configuration for the Compose application. * * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[a-zA-Z0-9._-]+$". */ export type Network = { /** * Custom name for this network. */ name?: string; /** * Specify which driver should be used for this network. Default is 'bridge'. */ driver?: string; /** * Specify driver-specific options defined as key/value pairs. */ driver_opts?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^.+$". */ [k: string]: string | number; }; /** * Custom IP Address Management configuration for this network. */ ipam?: { /** * Custom IPAM driver, instead of the default. */ driver?: string; /** * List of IPAM configuration blocks. */ config?: { /** * Subnet in CIDR format that represents a network segment. */ subnet?: string; /** * Range of IPs from which to allocate container IPs. */ ip_range?: string; /** * IPv4 or IPv6 gateway for the subnet. */ gateway?: string; /** * Auxiliary IPv4 or IPv6 addresses used by Network driver. */ aux_addresses?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^.+$". */ [k: string]: string; }; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; }[]; /** * Driver-specific options for the IPAM driver. */ options?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^.+$". */ [k: string]: string; }; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; }; /** * Specifies that this network already exists and was created outside of Compose. */ external?: | boolean | string | { /** * @deprecated * Specifies the name of the external network. Deprecated: use the 'name' property instead. */ name?: string; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; }; /** * Create an externally isolated network. */ internal?: boolean | string; /** * Enable IPv4 networking. */ enable_ipv4?: boolean | string; /** * Enable IPv6 networking. */ enable_ipv6?: boolean | string; /** * If true, standalone containers can attach to this network. */ attachable?: boolean | string; /** * Either a dictionary mapping keys to values, or a list of strings. */ labels?: | { /** * Value for the key, which can be a string, number, boolean, or null. * * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` ".+". */ [k: string]: string | number | boolean | null; } | string[]; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". * * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; } & Network1; export type Network1 = { /** * Custom name for this network. */ name?: string; /** * Specify which driver should be used for this network. Default is 'bridge'. */ driver?: string; /** * Specify driver-specific options defined as key/value pairs. */ driver_opts?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^.+$". */ [k: string]: string | number; }; /** * Custom IP Address Management configuration for this network. */ ipam?: { /** * Custom IPAM driver, instead of the default. */ driver?: string; /** * List of IPAM configuration blocks. */ config?: { /** * Subnet in CIDR format that represents a network segment. */ subnet?: string; /** * Range of IPs from which to allocate container IPs. */ ip_range?: string; /** * IPv4 or IPv6 gateway for the subnet. */ gateway?: string; /** * Auxiliary IPv4 or IPv6 addresses used by Network driver. */ aux_addresses?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^.+$". */ [k: string]: string; }; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; }[]; /** * Driver-specific options for the IPAM driver. */ options?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^.+$". */ [k: string]: string; }; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; }; /** * Specifies that this network already exists and was created outside of Compose. */ external?: | boolean | string | { /** * @deprecated * Specifies the name of the external network. Deprecated: use the 'name' property instead. */ name?: string; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; }; /** * Create an externally isolated network. */ internal?: boolean | string; /** * Enable IPv4 networking. */ enable_ipv4?: boolean | string; /** * Enable IPv6 networking. */ enable_ipv6?: boolean | string; /** * If true, standalone containers can attach to this network. */ attachable?: boolean | string; /** * Either a dictionary mapping keys to values, or a list of strings. */ labels?: | { /** * Value for the key, which can be a string, number, boolean, or null. * * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` ".+". */ [k: string]: string | number | boolean | null; } | string[]; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". * * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; } | null; /** * Volume configuration for the Compose application. * * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[a-zA-Z0-9._-]+$". */ export type Volume = { /** * Custom name for this volume. */ name?: string; /** * Specify which volume driver should be used for this volume. */ driver?: string; /** * Specify driver-specific options. */ driver_opts?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^.+$". */ [k: string]: string | number; }; /** * Specifies that this volume already exists and was created outside of Compose. */ external?: | boolean | string | { /** * @deprecated * Specifies the name of the external volume. Deprecated: use the 'name' property instead. */ name?: string; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; }; /** * Either a dictionary mapping keys to values, or a list of strings. */ labels?: | { /** * Value for the key, which can be a string, number, boolean, or null. * * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` ".+". */ [k: string]: string | number | boolean | null; } | string[]; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". * * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; } & Volume1; export type Volume1 = { /** * Custom name for this volume. */ name?: string; /** * Specify which volume driver should be used for this volume. */ driver?: string; /** * Specify driver-specific options. */ driver_opts?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^.+$". */ [k: string]: string | number; }; /** * Specifies that this volume already exists and was created outside of Compose. */ external?: | boolean | string | { /** * @deprecated * Specifies the name of the external volume. Deprecated: use the 'name' property instead. */ name?: string; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; }; /** * Either a dictionary mapping keys to values, or a list of strings. */ labels?: | { /** * Value for the key, which can be a string, number, boolean, or null. * * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` ".+". */ [k: string]: string | number | boolean | null; } | string[]; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". * * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; } | null; /** * The Compose file is a YAML file defining a multi-containers based application. */ export interface ComposeSpecification { /** * @deprecated * declared for backward compatibility, ignored. Please remove it. */ version?: string; /** * define the Compose project name, until user defines one explicitly. */ name?: string; /** * compose sub-projects to be included. */ include?: Include[]; /** * The services that will be used by your application. */ services?: { [k: string]: Service; }; /** * Language models that will be used by your application. */ models?: { [k: string]: Model; }; /** * Networks that are shared among multiple services. */ networks?: { [k: string]: Network; }; /** * Named volumes that are shared among multiple services. */ volumes?: { [k: string]: Volume; }; /** * Secrets that are shared among multiple services. */ secrets?: { [k: string]: Secret; }; /** * Configurations that are shared among multiple services. */ configs?: { [k: string]: Config; }; /** * This interface was referenced by `ComposeSpecification`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; } /** * Configuration for a service. * * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[a-zA-Z0-9._-]+$". */ export interface Service { develop?: Development; deploy?: Deployment; annotations?: ListOrDict; attach?: boolean | string; /** * Configuration options for building the service's image. */ build?: | string | { /** * Path to the build context. Can be a relative path or a URL. */ context?: string; /** * Name of the Dockerfile to use for building the image. */ dockerfile?: string; /** * Inline Dockerfile content to use instead of a Dockerfile from the build context. */ dockerfile_inline?: string; /** * List of extra privileged entitlements to grant to the build process. */ entitlements?: string[]; /** * Either a dictionary mapping keys to values, or a list of strings. */ args?: | { /** * Value for the key, which can be a string, number, boolean, or null. * * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` ".+". */ [k: string]: string | number | boolean | null; } | string[]; /** * Either a dictionary mapping keys to values, or a list of strings. */ ssh?: | { /** * Value for the key, which can be a string, number, boolean, or null. * * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` ".+". */ [k: string]: string | number | boolean | null; } | string[]; /** * Either a dictionary mapping keys to values, or a list of strings. */ labels?: | { /** * Value for the key, which can be a string, number, boolean, or null. * * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` ".+". */ [k: string]: string | number | boolean | null; } | string[]; /** * List of sources the image builder should use for cache resolution */ cache_from?: string[]; /** * Cache destinations for the build cache. */ cache_to?: string[]; /** * Do not use cache when building the image. */ no_cache?: boolean | string; /** * Do not use build cache for the specified stages. */ no_cache_filter?: string | ListOfStrings; /** * Either a dictionary mapping keys to values, or a list of strings. */ additional_contexts?: | { /** * Value for the key, which can be a string, number, boolean, or null. * * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` ".+". */ [k: string]: string | number | boolean | null; } | string[]; /** * Network mode to use for the build. Options include 'default', 'none', 'host', or a network name. */ network?: string; /** * Add a provenance attestation */ provenance?: string | boolean; /** * Add a SBOM attestation */ sbom?: string | boolean; /** * Always attempt to pull a newer version of the image. */ pull?: boolean | string; /** * Build stage to target in a multi-stage Dockerfile. */ target?: string; /** * Size of /dev/shm for the build container. A string value can use suffix like '2g' for 2 gigabytes. */ shm_size?: number | string; /** * Add hostname mappings for the build container. */ extra_hosts?: | { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` ".+". */ [k: string]: string | string[]; } | string[]; /** * Container isolation technology to use for the build process. */ isolation?: string; /** * Give extended privileges to the build container. */ privileged?: boolean | string; secrets?: ServiceConfigOrSecret; /** * Additional tags to apply to the built image. */ tags?: string[]; ulimits?: Ulimits; /** * Platforms to build for, e.g., 'linux/amd64', 'linux/arm64', or 'windows/amd64'. */ platforms?: string[]; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; }; /** * Block IO configuration for the service. */ blkio_config?: { /** * Limit read rate (bytes per second) from a device. */ device_read_bps?: BlkioLimit[]; /** * Limit read rate (IO per second) from a device. */ device_read_iops?: BlkioLimit[]; /** * Limit write rate (bytes per second) to a device. */ device_write_bps?: BlkioLimit[]; /** * Limit write rate (IO per second) to a device. */ device_write_iops?: BlkioLimit[]; /** * Block IO weight (relative weight) for the service, between 10 and 1000. */ weight?: number | string; /** * Block IO weight (relative weight) for specific devices. */ weight_device?: BlkioWeight[]; }; /** * Add Linux capabilities. For example, 'CAP_SYS_ADMIN', 'SYS_ADMIN', or 'NET_ADMIN'. */ cap_add?: string[]; /** * Drop Linux capabilities. For example, 'CAP_SYS_ADMIN', 'SYS_ADMIN', or 'NET_ADMIN'. */ cap_drop?: string[]; /** * Specify the cgroup namespace to join. Use 'host' to use the host's cgroup namespace, or 'private' to use a private cgroup namespace. */ cgroup?: "host" | "private"; /** * Specify an optional parent cgroup for the container. */ cgroup_parent?: string; /** * Override the default command declared by the container image, for example 'CMD' in Dockerfile. */ command?: null | string | string[]; configs?: ServiceConfigOrSecret1; /** * Specify a custom container name, rather than a generated default name. */ container_name?: string; /** * Number of usable CPUs. */ cpu_count?: string | number; /** * Percentage of CPU resources to use. */ cpu_percent?: string | number; /** * CPU shares (relative weight) for the container. */ cpu_shares?: number | string; /** * Limit the CPU CFS (Completely Fair Scheduler) quota. */ cpu_quota?: number | string; /** * Limit the CPU CFS (Completely Fair Scheduler) period. */ cpu_period?: number | string; /** * Limit the CPU real-time period in microseconds or a duration. */ cpu_rt_period?: number | string; /** * Limit the CPU real-time runtime in microseconds or a duration. */ cpu_rt_runtime?: number | string; /** * Number of CPUs to use. A floating-point value is supported to request partial CPUs. */ cpus?: number | string; /** * CPUs in which to allow execution (0-3, 0,1). */ cpuset?: string; /** * Configure the credential spec for managed service account. */ credential_spec?: { /** * The name of the credential spec Config to use. */ config?: string; /** * Path to a credential spec file. */ file?: string; /** * Path to a credential spec in the Windows registry. */ registry?: string; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; }; /** * Express dependency between services. Service dependencies cause services to be started in dependency order. The dependent service will wait for the dependency to be ready before starting. */ depends_on?: | ListOfStrings3 | { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[a-zA-Z0-9._-]+$". */ [k: string]: { /** * Whether to restart dependent services when this service is restarted. */ restart?: boolean | string; /** * Whether the dependency is required for the dependent service to start. */ required?: boolean; /** * Condition to wait for. 'service_started' waits until the service has started, 'service_healthy' waits until the service is healthy (as defined by its healthcheck), 'service_completed_successfully' waits until the service has completed successfully. */ condition: "service_started" | "service_healthy" | "service_completed_successfully"; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; }; }; device_cgroup_rules?: ListOfStrings4; /** * List of device mappings for the container. */ devices?: ( | string | { /** * Path on the host to the device. */ source: string; /** * Path in the container where the device will be mapped. */ target?: string; /** * Cgroup permissions for the device (rwm). */ permissions?: string; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; } )[]; /** * Custom DNS servers to set for the service container. */ dns?: string | ListOfStrings; /** * Custom DNS options to be passed to the container's DNS resolver. */ dns_opt?: string[]; /** * Custom DNS search domains to set on the service container. */ dns_search?: string | ListOfStrings; /** * Custom domain name to use for the service container. */ domainname?: string; /** * Override the default entrypoint declared by the container image, for example 'ENTRYPOINT' in Dockerfile. */ entrypoint?: null | string | string[]; /** * Add environment variables from a file or multiple files. Can be a single file path or a list of file paths. */ env_file?: | string | ( | string | { /** * Path to the environment file. */ path: string; /** * Format attribute lets you to use an alternative file formats for env_file. When not set, env_file is parsed according to Compose rules. */ format?: string; /** * Whether the file is required. If true and the file doesn't exist, an error will be raised. */ required?: boolean | string; } )[]; /** * Add metadata to containers using files containing Docker labels. */ label_file?: string | string[]; /** * Either a dictionary mapping keys to values, or a list of strings. */ environment?: | { /** * Value for the key, which can be a string, number, boolean, or null. * * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` ".+". */ [k: string]: string | number | boolean | null; } | string[]; /** * Expose ports without publishing them to the host machine - they'll only be accessible to linked services. */ expose?: (string | number)[]; /** * Extend another service, in the current file or another file. */ extends?: | string | { /** * The name of the service to extend. */ service: string; /** * The file path where the service to extend is defined. */ file?: string; }; /** * Specify a service which will not be manage by Compose directly, and delegate its management to an external provider. */ provider?: { /** * External component used by Compose to manage setup and teardown lifecycle of the service. */ type: string; /** * Provider-specific options. */ options?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^.+$". */ [k: string]: (string | number | boolean) | (string | number | boolean)[]; }; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^x-". */ [k: string]: unknown; }; /** * Link to services started outside this Compose application. Specify services as <service_name>:<alias>. */ external_links?: string[]; /** * Add hostname mappings to the container network interface configuration. */ extra_hosts?: | { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` ".+". */ [k: string]: string | string[]; } | string[]; /** * Define GPU devices to use. Can be set to 'all' to use all GPUs, or a list of specific GPU devices. */ gpus?: | "all" | { capabilities?: ListOfStrings5; /** * Number of GPUs to use. */ count?: string | number; device_ids?: ListOfStrings6; /** * GPU driver to use (e.g., 'nvidia'). */ driver?: string; /** * Either a dictionary mapping keys to values, or a list of strings. */ options?: | { /** * Value for the key, which can be a string, number, boolean, or null. * * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` ".+". */ [k: string]: string | number | boolean | null; } | string[]; [k: string]: unknown; }[]; /** * Add additional groups which user inside the container should be member of. */ group_add?: (string | number)[]; healthcheck?: Healthcheck; /** * Define a custom hostname for the service container. */ hostname?: string; /** * Specify the image to start the container from. Can be a repository/tag, a digest, or a local image ID. */ image?: string; /** * Run as an init process inside the container that forwards signals and reaps processes. */ init?: boolean | string; /** * IPC sharing mode for the service container. Use 'host' to share the host's IPC namespace, 'service:[service_name]' to share with another service, or 'shareable' to allow other services to share this service's IPC namespace. */ ipc?: string; /** * Container isolation technology to use. Supported values are platform-specific. */ isolation?: string; /** * Either a dictionary mapping keys to values, or a list of strings. */ labels?: | { /** * Value for the key, which can be a string, number, boolean, or null. * * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` ".+". */ [k: string]: string | number | boolean | null; } | string[]; /** * Link to containers in another service. Either specify both the service name and a link alias (SERVICE:ALIAS), or just the service name. */ links?: string[]; /** * Logging configuration for the service. */ logging?: { /** * Logging driver to use, such as 'json-file', 'syslog', 'journald', etc. */ driver?: string; /** * Options for the logging driver.