209 lines
4 KiB
TypeScript
209 lines
4 KiB
TypeScript
type Label = {
|
|
[label: string]: string
|
|
}
|
|
|
|
type WeightDevice = Array<{
|
|
path: string
|
|
weight: number
|
|
}>
|
|
|
|
type DeviceBLK = Array<{
|
|
path: string
|
|
rate: number | string
|
|
}>
|
|
|
|
type BuildServices = {
|
|
context: string
|
|
dockefile: string
|
|
dockerfile_inline: string
|
|
args: Label
|
|
ssh: Array<string>
|
|
cache_from: Array<string>
|
|
cache_to: Array<string>
|
|
additional_contexts: Array<Label>
|
|
extra_hosts: Label
|
|
labels: Label
|
|
privileged: boolean
|
|
no_cache: boolean
|
|
network: "none" | "host" | string
|
|
shm_size: number | string
|
|
target: string
|
|
secrets: Array<string>
|
|
tags: Array<string>
|
|
platforms: Array<string>
|
|
ulimits: {
|
|
nproc: number
|
|
nofile: {
|
|
soft: number
|
|
hard: number
|
|
}
|
|
}
|
|
}
|
|
|
|
enum Runtimes {
|
|
runc,
|
|
crun,
|
|
youki,
|
|
inclavare,
|
|
gvisor,
|
|
wasmtime,
|
|
katacontainers,
|
|
}
|
|
|
|
export type Services = {
|
|
[name: string]: {
|
|
annotations?: Label
|
|
image: string
|
|
ports?: Array<string>
|
|
|
|
attach?: boolean
|
|
build?: BuildServices
|
|
blkio_config?: {
|
|
weight: number
|
|
weight_device: Array<{
|
|
path: string
|
|
weight: number
|
|
}>
|
|
device_read_bps: DeviceBLK
|
|
device_read_iops: DeviceBLK
|
|
device_write_bps: DeviceBLK
|
|
device_write_iops: DeviceBLK
|
|
}
|
|
cpu_count?: number
|
|
cpu_persent?: number | string
|
|
cpu_quota?: number | string
|
|
cpu_rt_runtime?: number | string
|
|
cpu_rt_period?: number | string
|
|
cpus?: string
|
|
cpuset?: string
|
|
cap_add?: Array<string>
|
|
cap_drop?: Array<string>
|
|
cgroup?: "host" | "private"
|
|
cpu_rt_period?: string
|
|
command?: Array<string> | string
|
|
configs?: Array<string> | Array<{
|
|
source: string
|
|
target: string
|
|
uid: string
|
|
gid: string
|
|
mode: number
|
|
}>
|
|
container_name?: string
|
|
credential_spec?: {
|
|
file?: string
|
|
registry?: string
|
|
}
|
|
depends_on?: Array<string>
|
|
dns?: string | Array<string>
|
|
dns_opt?: Array<string>
|
|
dns_search?: string | Array<string>
|
|
entrypoint?: string | Array<string>
|
|
tmpfs?: string | Array<string>
|
|
env_file?: Array<string> | Array<{
|
|
path: string
|
|
required: boolean
|
|
}>
|
|
environment?: Array<string>
|
|
expose?: Array<string>
|
|
extends?: {
|
|
file: string
|
|
service: string
|
|
}
|
|
}
|
|
external_links?: Array<string>
|
|
volumes_from?: Array<string>
|
|
tty?: boolean
|
|
sysctl?: Label
|
|
runtime: Runtimes
|
|
restart: "no" | "always" | "unless-stopped" | "on-failure" | { "on-failure": number }
|
|
workdir?: string
|
|
extra_hosts?: string
|
|
stdin_open?: boolean
|
|
init?: boolean
|
|
profiles?: Array<string>
|
|
network_mode?: "none" | "host"
|
|
logging?: {
|
|
driver: string
|
|
options?: Label
|
|
}
|
|
links?: Array<string>
|
|
labels?: Array<Label>
|
|
group_add?: Array<string>
|
|
pids_limit?: number
|
|
pull_policy?: "always" | "never" | "missing" | "build"
|
|
hostname?: string
|
|
devices?: Array<string>
|
|
volumes?: Array<string>
|
|
uts?: "host" | string
|
|
mem_limit?: number | string
|
|
healthcheck?: {
|
|
test: Array<string>
|
|
timeout?: string
|
|
interval?: string
|
|
start_period?: string
|
|
start_interval?: string
|
|
retries: number
|
|
disable?: true
|
|
}
|
|
}
|
|
|
|
type Networks = {
|
|
[name: string]: {
|
|
driver?: string
|
|
driver_opts?: Label
|
|
attachable?: boolean
|
|
enable_ipv6?: boolean
|
|
external?: boolean
|
|
name?: string
|
|
ipam?: {
|
|
driver?: string
|
|
config?: Array<{
|
|
subnet: string
|
|
ip_range: string
|
|
gateway: string
|
|
aux_addresses: Array<Label>
|
|
}>
|
|
}
|
|
labels?: Array<Label>
|
|
options?: Array<Label>
|
|
}
|
|
}
|
|
|
|
type Volumes = {
|
|
[name: string]: {
|
|
external?: boolean
|
|
labels?: Array<Label>
|
|
driver?: string
|
|
driver_opts?: Label
|
|
name?: string
|
|
}
|
|
}
|
|
|
|
type Configs = {
|
|
[name: string]: {
|
|
external?: boolean
|
|
name?: string
|
|
file?: string
|
|
environment?: string
|
|
content?: string
|
|
}
|
|
}
|
|
|
|
type Secrets = {
|
|
[name: string]: {
|
|
file?: string
|
|
} | {
|
|
token: {
|
|
environment: string
|
|
}
|
|
}
|
|
}
|
|
|
|
export type Compose = {
|
|
version?: "3"
|
|
services: Services
|
|
networks?: Networks
|
|
volumes?: Volumes
|
|
configs?: Configs
|
|
secrets?: Secrets
|
|
}
|