docker-compose
Version:
Manage docker-compose from Node.js
1,759 lines (1,756 loc) • 72.5 kB
TypeScript
/* 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.