lakutata
Version:
An IoC-based universal application framework.
242 lines (235 loc) • 6.5 kB
TypeScript
import { Provider, Time } from './TypeDef.internal.96.js';
import { Dockerode } from './TypeDef.internal.16.js';
import { ContainerRestartPolicy, ContainerCapability, ContainerState, ContainerPort, ContainerBind, ContainerDevice, ContainerNetwork, ContainerStats, ImageConfig } from './TypeDef.internal.109.js';
import { ImageTagOptions, ImageExportOptions, ImagePushOptions, ImageRemoveOptions } from './TypeDef.internal.106.js';
import { Docker } from './TypeDef.internal.104.js';
import { ContainerTTYConsoleSizeOptions, ContainerStopOptions, ContainerRemoveOptions, ContainerSettingOptions, ContainerCommitOptions, ContainerCreateTTYOptions, ContainerLogsOptions, ContainerExecOptions, ContainerKillOptions, ContainerExportDirectoryOptions } from './TypeDef.internal.110.js';
import stream__default from 'stream';
import { Logger } from './TypeDef.internal.95.js';
declare class DockerContainerTTY extends Provider {
#private;
protected readonly log: Logger;
protected readonly container: Dockerode.Container;
protected readonly cmd: string | string[];
protected readonly initialConsoleSize?: ContainerTTYConsoleSizeOptions;
/**
* Initializer
* @protected
*/
protected init(): Promise<void>;
/**
* Destroyer
* @protected
*/
protected destroy(): Promise<void>;
/**
* Get tty duplex stream
*/
get raw(): stream__default.Duplex;
/**
* Get tty writable stream
*/
get writable(): stream__default.Writable;
/**
* Get tty readable stream
*/
get readable(): stream__default.Readable;
/**
* Resize tty console size
* @param options
*/
resize(options: ContainerTTYConsoleSizeOptions): Promise<void>;
/**
* Set on data handler
* @param handler
*/
onData(handler: (chunk: Buffer) => void): void;
/**
* Write data to duplex stream
* @param data
*/
write(data: string): void;
/**
* Write data to duplex stream
* @param data
*/
write(data: Buffer): void;
}
declare class DockerContainer extends Provider {
#private;
protected readonly getDockerode: () => Dockerode;
protected readonly getDocker: () => Docker;
id: string;
name: string;
hostname: string;
image: DockerImage;
restartCount: number;
privileged: boolean;
tty: boolean;
env: Record<string, string>;
memoryLimit: number;
cpuSet: number[];
restartPolicy: ContainerRestartPolicy;
OOMKillDisable: boolean;
capabilities: ContainerCapability[];
state: ContainerState;
ports: ContainerPort[];
binds: ContainerBind[];
devices: ContainerDevice[];
networks: ContainerNetwork[];
cgroup: string | undefined;
cgroupParent: string | undefined;
pidMode: string | undefined;
createdAt: Time;
/**
* Initializer
* @protected
*/
protected init(): Promise<void>;
/**
* Destroyer
* @protected
*/
protected destroy(): Promise<void>;
/**
* Sync container info from docker
* @protected
*/
protected syncContainerInfo(): Promise<void>;
/**
* Start container
* @param options
*/
start(): Promise<void>;
/**
* Stop container
* @param options
*/
stop(options?: ContainerStopOptions): Promise<void>;
/**
* Pause container
*/
pause(): Promise<void>;
/**
* Unpause container
*/
unpause(): Promise<void>;
/**
* Restart container
* @param options
*/
restart(options?: ContainerStopOptions): Promise<void>;
/**
* Remove container
* @param options
*/
remove(options?: ContainerRemoveOptions): Promise<void>;
/**
* Update container
* @param options
*/
update(options: ContainerSettingOptions): Promise<void>;
/**
* Create a new image from a container
* @param options
*/
commit(options?: ContainerCommitOptions): Promise<DockerImage>;
/**
* Create container TTY
* @param options
*/
createTTY(options?: ContainerCreateTTYOptions): Promise<DockerContainerTTY>;
/**
* Get container logs readable stream
* @param options
*/
logs(options?: ContainerLogsOptions): Promise<NodeJS.ReadableStream>;
/**
* Get container stats
*/
stats(): Promise<ContainerStats>;
/**
* Run command in container
* @param options
*/
exec(options: ContainerExecOptions): Promise<string>;
/**
* Kill container
* @param options
*/
kill(options?: ContainerKillOptions): Promise<void>;
/**
* Get a tar archive of a resource in the filesystem of current container
* @param options
*/
exportDirectory(options: ContainerExportDirectoryOptions): Promise<void>;
}
declare class DockerImage extends Provider {
#private;
protected readonly getDockerode: () => Dockerode;
protected readonly getDocker: () => Docker;
id: string;
repoTags: string[];
createdAt: Time;
arch: string;
os: string;
platform: string;
size: number;
config: ImageConfig;
/**
* Initializer
* @protected
*/
protected init(): Promise<void>;
/**
* Destroyer
* @protected
*/
protected destroy(): Promise<void>;
/**
* Sync image info from docker
* @protected
*/
protected syncImageInfo(): Promise<void>;
/**
* Tag image
* @param options
*/
tag(options: ImageTagOptions): Promise<void>;
/**
* Export docker image
* @param options
*/
export(options: ImageExportOptions): Promise<void>;
/**
* Push docker image to repository
* @param options
*/
push(options: ImagePushOptions): Promise<void>;
/**
* Remove docker image
* @param options
*/
remove(options?: ImageRemoveOptions): Promise<void>;
/**
* Create container by current image then start it
* @param options
*/
run(options: ContainerSettingOptions): Promise<DockerContainer>;
}
/**
* Parse raw ENV filed to record
* @param rawEnv
* @constructor
*/
declare function ParseEnvToRecord(rawEnv?: string[]): Record<string, string>;
/**
* Parse repository tag
* @param input
* @constructor
*/
declare function ParseRepositoryTag(input: string): {
repo: string;
tag?: string;
};
export { DockerContainer, DockerContainerTTY, DockerImage, ParseEnvToRecord, ParseRepositoryTag };