@@ -50,6 +50,12 @@ POST {{service}}/swirl_swirl/restart
 | 
				
			|||||||
@id=6365041d2e52c5896dd14a5450920e482dddc33e6addaa07fab413bcda78d723
 | 
					@id=6365041d2e52c5896dd14a5450920e482dddc33e6addaa07fab413bcda78d723
 | 
				
			||||||
GET {{container}}/{{id}}/logs
 | 
					GET {{container}}/{{id}}/logs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Config
 | 
				
			||||||
 | 
					@config={{url}}/configs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					##### Config
 | 
				
			||||||
 | 
					GET {{config}}/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Dashboard
 | 
					### Dashboard
 | 
				
			||||||
@dashboard={{url}}/dashboard
 | 
					@dashboard={{url}}/dashboard
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -66,17 +66,5 @@ switch (query.action) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
term.on('data', async data => {
 | 
					term.on('data', async data => {
 | 
				
			||||||
    if (data == '\t') {
 | 
					
 | 
				
			||||||
        return;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    term.write(data);
 | 
					 | 
				
			||||||
    if (data == '\r') {
 | 
					 | 
				
			||||||
        term.write('\n');
 | 
					 | 
				
			||||||
        container.emit('logs', {
 | 
					 | 
				
			||||||
            id: command
 | 
					 | 
				
			||||||
        })
 | 
					 | 
				
			||||||
        command = '';
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
        command += data;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										14
									
								
								packages/core/src/controller/docker/config.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								packages/core/src/controller/docker/config.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					import * as docker from '@dayu/docker-api'
 | 
				
			||||||
 | 
					import { controller, get, requestParam } from '@cc-server/binding'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@controller('/config')
 | 
				
			||||||
 | 
					class ConfigController {
 | 
				
			||||||
 | 
					    @get('/list')
 | 
				
			||||||
 | 
					    public async list() {
 | 
				
			||||||
 | 
					        return await docker.config.list({ label: "com.docker.stack.namespace=nacos-cloud" });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    @get('/:id')
 | 
				
			||||||
 | 
					    public async info(@requestParam('id') id: string) {
 | 
				
			||||||
 | 
					        return await docker.config.inspect(id);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,10 +1,10 @@
 | 
				
			|||||||
import * as docker from '@dayu/docker-api'
 | 
					import * as docker from '@dayu/docker-api'
 | 
				
			||||||
import { io, interfaces, namespace, listener, Message } from '@cc-server/ws'
 | 
					import { io, interfaces, namespace, listener, Message } from '@cc-server/ws'
 | 
				
			||||||
import { controller, httpGet, requestParam } from '@cc-server/binding'
 | 
					import { controller, get, post, requestParam } from '@cc-server/binding'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@controller('/container')
 | 
					@controller('/container')
 | 
				
			||||||
class ContainerController {
 | 
					class ContainerController {
 | 
				
			||||||
    @httpGet('/list')
 | 
					    @get('/list')
 | 
				
			||||||
    public async list() {
 | 
					    public async list() {
 | 
				
			||||||
        return await docker.container.list({
 | 
					        return await docker.container.list({
 | 
				
			||||||
            filters: JSON.stringify({
 | 
					            filters: JSON.stringify({
 | 
				
			||||||
@@ -12,7 +12,21 @@ class ContainerController {
 | 
				
			|||||||
            })
 | 
					            })
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    @httpGet('/:id')
 | 
					    @get('/:id')
 | 
				
			||||||
 | 
					    public async info(@requestParam('id') id: string) {
 | 
				
			||||||
 | 
					        return await docker.container;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@controller('/exec')
 | 
				
			||||||
 | 
					class ContainerExecController {
 | 
				
			||||||
 | 
					    @post('/:id')
 | 
				
			||||||
 | 
					    public async create(@requestParam('id') id: string) {
 | 
				
			||||||
 | 
					        return await docker.container.exec.create(id, {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    @get('/:id')
 | 
				
			||||||
    public async info(@requestParam('id') id: string) {
 | 
					    public async info(@requestParam('id') id: string) {
 | 
				
			||||||
        return await docker.container;
 | 
					        return await docker.container;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -46,4 +46,9 @@ class StackController {
 | 
				
			|||||||
            networks: networks.map(network => network.Name),
 | 
					            networks: networks.map(network => network.Name),
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @post('/create')
 | 
				
			||||||
 | 
					    public async create() {
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,3 +9,19 @@ export type Options = StringMap
 | 
				
			|||||||
export type Config = StringMap
 | 
					export type Config = StringMap
 | 
				
			||||||
export type Labels = StringMap
 | 
					export type Labels = StringMap
 | 
				
			||||||
export type Ports = StringMap | ObjectMap
 | 
					export type Ports = StringMap | ObjectMap
 | 
				
			||||||
 | 
					export interface Version {
 | 
				
			||||||
 | 
					    Index: number;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					export interface Meta {
 | 
				
			||||||
 | 
					    Version: Version;
 | 
				
			||||||
 | 
					    CreatedAt: string;
 | 
				
			||||||
 | 
					    UpdatedAt: string;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					export interface Annotations {
 | 
				
			||||||
 | 
					    Name: string;
 | 
				
			||||||
 | 
					    Labels: Labels;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					export interface Driver {
 | 
				
			||||||
 | 
					    Name: string;
 | 
				
			||||||
 | 
					    Options: Options;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
export declare namespace query {
 | 
					export declare namespace query {
 | 
				
			||||||
    export interface FilterOpt {
 | 
					    export interface Filter<T = any> {
 | 
				
			||||||
        filters?: string;
 | 
					        filters?: string;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    export interface LabelOpt {
 | 
					    export interface LabelOpt {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										8
									
								
								packages/docker-api/src/api/opts/config.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packages/docker-api/src/api/opts/config.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					export declare namespace config {
 | 
				
			||||||
 | 
					    export interface FilterOpt {
 | 
				
			||||||
 | 
					        id?: string;
 | 
				
			||||||
 | 
					        label?: string;
 | 
				
			||||||
 | 
					        name?: string;
 | 
				
			||||||
 | 
					        names?: string;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
import * as common from './common'
 | 
					import * as common from './common'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export declare namespace container {
 | 
					export declare namespace container {
 | 
				
			||||||
    export interface ListOpts extends common.query.FilterOpt {
 | 
					    export interface ListOpts extends common.query.Filter {
 | 
				
			||||||
        all?: boolean;
 | 
					        all?: boolean;
 | 
				
			||||||
        limit?: number;
 | 
					        limit?: number;
 | 
				
			||||||
        size?: boolean;
 | 
					        size?: boolean;
 | 
				
			||||||
@@ -15,4 +15,26 @@ export declare namespace container {
 | 
				
			|||||||
        timestamps?: boolean;
 | 
					        timestamps?: boolean;
 | 
				
			||||||
        tail?: number | "all";
 | 
					        tail?: number | "all";
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    export namespace exec {
 | 
				
			||||||
 | 
					        export interface Create {
 | 
				
			||||||
 | 
					            AttachStdin?: boolean;
 | 
				
			||||||
 | 
					            AttachStdout?: boolean;
 | 
				
			||||||
 | 
					            AttachStderr?: boolean;
 | 
				
			||||||
 | 
					            DetachKeys?: string;
 | 
				
			||||||
 | 
					            Tty?: boolean;
 | 
				
			||||||
 | 
					            Cmd?: string[];
 | 
				
			||||||
 | 
					            Env?: string[];
 | 
				
			||||||
 | 
					            Privileged?: boolean;
 | 
				
			||||||
 | 
					            User?: string;
 | 
				
			||||||
 | 
					            WorkingDir?: string;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        export interface Start {
 | 
				
			||||||
 | 
					            Detach?: boolean;
 | 
				
			||||||
 | 
					            Tty?: boolean;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        export interface Resize {
 | 
				
			||||||
 | 
					            h?: number;
 | 
				
			||||||
 | 
					            w?: number;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
							
								
								
									
										9
									
								
								packages/docker-api/src/api/opts/filter.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								packages/docker-api/src/api/opts/filter.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					export function toJSON(filter: any) {
 | 
				
			||||||
 | 
					    let filters: any = {}
 | 
				
			||||||
 | 
					    for (const key in filter) {
 | 
				
			||||||
 | 
					        let temp: any = {}
 | 
				
			||||||
 | 
					        temp[`${filter[key]}`] = true
 | 
				
			||||||
 | 
					        filters[`${key}`] = temp
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return JSON.stringify(filters);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
export * from './swarm'
 | 
					export * from './swarm'
 | 
				
			||||||
export * from './common'
 | 
					export * from './common'
 | 
				
			||||||
 | 
					export * from './config'
 | 
				
			||||||
export * from './network'
 | 
					export * from './network'
 | 
				
			||||||
export * from './service'
 | 
					export * from './service'
 | 
				
			||||||
export * from './container'
 | 
					export * from './container'
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
import * as common from './common'
 | 
					import * as common from './common'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export declare namespace network {
 | 
					export declare namespace network {
 | 
				
			||||||
    export interface ListOpts extends common.query.FilterOpt {
 | 
					    export interface ListOpts extends common.query.Filter {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
import * as common from './common'
 | 
					import * as common from './common'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export declare namespace node {
 | 
					export declare namespace node {
 | 
				
			||||||
    export interface ListOpts extends common.query.FilterOpt {
 | 
					    export interface ListOpts extends common.query.Filter {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,7 +1,8 @@
 | 
				
			|||||||
import * as common from './common'
 | 
					import * as common from './common'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export declare namespace service {
 | 
					export declare namespace service {
 | 
				
			||||||
    export interface ListOpts extends common.query.FilterOpt {
 | 
					    export interface FilterOpt {
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    export interface LogsOpts {
 | 
					    export interface LogsOpts {
 | 
				
			||||||
        details?: boolean;
 | 
					        details?: boolean;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										11
									
								
								packages/docker-api/src/api/types/config.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								packages/docker-api/src/api/types/config.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					import { Meta, Annotations } from '../common'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export declare namespace config {
 | 
				
			||||||
 | 
					    export interface Spec extends Annotations {
 | 
				
			||||||
 | 
					        Data: string;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    export interface Config extends Meta {
 | 
				
			||||||
 | 
					        ID: string;
 | 
				
			||||||
 | 
					        Spec: Spec;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -302,4 +302,36 @@ export declare namespace container {
 | 
				
			|||||||
        ContainersDeleted: string[];
 | 
					        ContainersDeleted: string[];
 | 
				
			||||||
        SpaceReclaimed: number;
 | 
					        SpaceReclaimed: number;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    export namespace exec {
 | 
				
			||||||
 | 
					        export interface CreateResult {
 | 
				
			||||||
 | 
					            Id: string;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        export interface StartResult {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        export interface ResizeResult {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        export interface ProcessConfig {
 | 
				
			||||||
 | 
					            arguments: string[];
 | 
				
			||||||
 | 
					            entrypoint: string;
 | 
				
			||||||
 | 
					            privileged: boolean;
 | 
				
			||||||
 | 
					            tty: boolean;
 | 
				
			||||||
 | 
					            user: string;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        export interface ExecJson {
 | 
				
			||||||
 | 
					            CanRemove: boolean;
 | 
				
			||||||
 | 
					            ContainerID: string;
 | 
				
			||||||
 | 
					            DetachKeys: string;
 | 
				
			||||||
 | 
					            ExitCode: number;
 | 
				
			||||||
 | 
					            ID: string;
 | 
				
			||||||
 | 
					            OpenStderr: boolean;
 | 
				
			||||||
 | 
					            OpenStdin: boolean;
 | 
				
			||||||
 | 
					            OpenStdout: boolean;
 | 
				
			||||||
 | 
					            ProcessConfig: ProcessConfig;
 | 
				
			||||||
 | 
					            Running: boolean;
 | 
				
			||||||
 | 
					            Pid: number;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,6 +2,7 @@ export * from './node'
 | 
				
			|||||||
export * from './task'
 | 
					export * from './task'
 | 
				
			||||||
export * from './image'
 | 
					export * from './image'
 | 
				
			||||||
export * from './swarm'
 | 
					export * from './swarm'
 | 
				
			||||||
 | 
					export * from './config'
 | 
				
			||||||
export * from './volume'
 | 
					export * from './volume'
 | 
				
			||||||
export * from './system'
 | 
					export * from './system'
 | 
				
			||||||
export * from './network'
 | 
					export * from './network'
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
import { Labels, Options, StringMap } from '../common'
 | 
					import { Labels, Options, StringMap, Annotations } from '../common'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export declare namespace network {
 | 
					export declare namespace network {
 | 
				
			||||||
    export interface Config {
 | 
					    export interface Config {
 | 
				
			||||||
@@ -48,8 +48,7 @@ export declare namespace network {
 | 
				
			|||||||
        Tasks: Task;
 | 
					        Tasks: Task;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    export interface NetworkResource {
 | 
					    export interface NetworkResource extends Annotations {
 | 
				
			||||||
        Name: string;
 | 
					 | 
				
			||||||
        Id: string;
 | 
					        Id: string;
 | 
				
			||||||
        Created: string;
 | 
					        Created: string;
 | 
				
			||||||
        Scope: string;
 | 
					        Scope: string;
 | 
				
			||||||
@@ -63,7 +62,6 @@ export declare namespace network {
 | 
				
			|||||||
        ConfigOnly: boolean;
 | 
					        ConfigOnly: boolean;
 | 
				
			||||||
        Containers?: Containers;
 | 
					        Containers?: Containers;
 | 
				
			||||||
        Options: Options;
 | 
					        Options: Options;
 | 
				
			||||||
        Labels: Labels;
 | 
					 | 
				
			||||||
        Peers: network.PeerInfo[];
 | 
					        Peers: network.PeerInfo[];
 | 
				
			||||||
        Services: network.ServiceInfo[];
 | 
					        Services: network.ServiceInfo[];
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,11 +1,6 @@
 | 
				
			|||||||
 | 
					import { Version, Labels, Meta } from '../common'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export declare namespace swarm {
 | 
					export declare namespace swarm {
 | 
				
			||||||
    export interface Version {
 | 
					 | 
				
			||||||
        Index: number;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    export interface Labels {
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    export interface Orchestration {
 | 
					    export interface Orchestration {
 | 
				
			||||||
        TaskHistoryRetentionLimit?: number;
 | 
					        TaskHistoryRetentionLimit?: number;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -55,11 +50,8 @@ export declare namespace swarm {
 | 
				
			|||||||
        Manager: string;
 | 
					        Manager: string;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    export interface Info {
 | 
					    export interface Info extends Meta {
 | 
				
			||||||
        ID: string;
 | 
					        ID: string;
 | 
				
			||||||
        Version: Version;
 | 
					 | 
				
			||||||
        CreatedAt: string;
 | 
					 | 
				
			||||||
        UpdatedAt: string;
 | 
					 | 
				
			||||||
        Spec: Spec;
 | 
					        Spec: Spec;
 | 
				
			||||||
        TLSInfo: TLSInfo;
 | 
					        TLSInfo: TLSInfo;
 | 
				
			||||||
        RootRotationInProgress: boolean;
 | 
					        RootRotationInProgress: boolean;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										18
									
								
								packages/docker-api/src/client/config.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								packages/docker-api/src/client/config.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					import * as api from '../utils/api'
 | 
				
			||||||
 | 
					import * as opts from '../api/opts'
 | 
				
			||||||
 | 
					import * as types from '../api/types'
 | 
				
			||||||
 | 
					import * as filterUtil from '../api/opts/filter'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export namespace config {
 | 
				
			||||||
 | 
					    export async function list(filter?: opts.config.FilterOpt) {
 | 
				
			||||||
 | 
					        return await api.get<types.config.Config[]>('/configs', {
 | 
				
			||||||
 | 
					            filters: filterUtil.toJSON(filter)
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    export async function inspect(id: string) {
 | 
				
			||||||
 | 
					        return await api.get(`/configs/${id}`)
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    export async function create() {
 | 
				
			||||||
 | 
					        return await api.post<{}>('/configs/create')
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -26,4 +26,29 @@ export namespace container {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
        return await api.stream(`/containers/${id}/logs`, data);
 | 
					        return await api.stream(`/containers/${id}/logs`, data);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    export namespace exec {
 | 
				
			||||||
 | 
					        export function create(id: string, opts: opts.container.exec.Create = {}): Promise<types.container.exec.CreateResult> {
 | 
				
			||||||
 | 
					            let request = {
 | 
				
			||||||
 | 
					                AttachStdin: true,
 | 
				
			||||||
 | 
					                AttachStdout: true,
 | 
				
			||||||
 | 
					                AttachStderr: true,
 | 
				
			||||||
 | 
					                DetachKeys: 'ctrl-d',
 | 
				
			||||||
 | 
					                Tty: true,
 | 
				
			||||||
 | 
					                Cmd: '/bin/sh',
 | 
				
			||||||
 | 
					                ...opts
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            request.AttachStderr = true
 | 
				
			||||||
 | 
					            return api.post<types.container.exec.CreateResult>(`/containers/${id}/exec`, request)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        export function start(id: string, opts: opts.container.exec.Start = {}) {
 | 
				
			||||||
 | 
					            return api.post<types.container.exec.StartResult>(`/exec/${id}/start`, opts)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        export function resize(id: string, opts: opts.container.exec.Resize = {}) {
 | 
				
			||||||
 | 
					            return api.post<types.container.exec.ResizeResult>(`/exec/${id}/resize`, opts)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        export function inspect(id: string) {
 | 
				
			||||||
 | 
					            return api.get<types.container.exec.ExecJson>(`/exec/${id}/json`)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,6 +2,7 @@ export * from './node'
 | 
				
			|||||||
export * from './task'
 | 
					export * from './task'
 | 
				
			||||||
export * from './image'
 | 
					export * from './image'
 | 
				
			||||||
export * from './swarm'
 | 
					export * from './swarm'
 | 
				
			||||||
 | 
					export * from './config'
 | 
				
			||||||
export * from './volume'
 | 
					export * from './volume'
 | 
				
			||||||
export * from './system'
 | 
					export * from './system'
 | 
				
			||||||
export * from './network'
 | 
					export * from './network'
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,11 +1,14 @@
 | 
				
			|||||||
import * as api from '../utils/api';
 | 
					import * as api from '../utils/api';
 | 
				
			||||||
import * as opts from '../api/opts';
 | 
					import * as opts from '../api/opts';
 | 
				
			||||||
import * as types from '../api/types';
 | 
					import * as types from '../api/types';
 | 
				
			||||||
 | 
					import * as filterUtil from '../api/opts/filter'
 | 
				
			||||||
import * as http from 'http'
 | 
					import * as http from 'http'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export namespace service {
 | 
					export namespace service {
 | 
				
			||||||
    export async function list(filters?: opts.service.ListOpts) {
 | 
					    export async function list(filter?: opts.service.FilterOpt) {
 | 
				
			||||||
        return await api.get<types.service.Service[]>('/services', filters);
 | 
					        return await api.get<types.service.Service[]>('/services', {
 | 
				
			||||||
 | 
					            filters: filterUtil.toJSON(filter)
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    export async function create() {
 | 
					    export async function create() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user