feat: add more docker api

This commit is contained in:
2019-08-27 15:03:30 +08:00
parent f0810cc9d9
commit 3e480da539
20 changed files with 117 additions and 28 deletions

View File

@@ -26,6 +26,7 @@
"devDependencies": {
"@types/express": "^4.17.0",
"@types/socket.io": "^2.1.2",
"nodemon": "^1.19.1",
"rimraf": "^2.6.3",
"ts-node-dev": "^1.0.0-pre.40",
"typescript": "^3.5.2"
@@ -43,4 +44,4 @@
"delay": "1500",
"ext": "js,json"
}
}
}

View File

@@ -0,0 +1,19 @@
import { controller, httpGet, requestParam } from 'inversify-express-utils';
import * as docker from '@dayu/docker-api'
@controller('/service')
class ServiceController {
@httpGet('/list')
public async list() {
let services = await docker.service.list();
return services.map(s => ({
id: s.ID,
name: s.Spec.Name
}));
}
@httpGet('/:id')
public async details(@requestParam('id') id: string) {
return await docker.service.inspect(id)
}
}

View File

@@ -6,18 +6,25 @@ const STACK_LABEL = 'com.docker.stack.namespace';
@controller('/stack')
class StackController {
@httpGet('/list')
public async list() {
public async list(): Promise<any> {
let stacks: { [key: string]: string[] } = {};
let result = [];
let services = await docker.service.list();
for (const service of services) {
let stackName = service.Spec.Labels[STACK_LABEL]
if (stackName) {
let stack = stacks[stackName] || [];
let stack = stacks[stackName];
if (!stack) {
result.push({
name: stackName,
services: stack = []
})
stacks[stackName] = stack;
}
stack.push(service.Spec.Name);
stacks[stackName] = stack;
}
}
return stacks;
return result;
}
@httpGet('/:stack')
@@ -31,11 +38,9 @@ class StackController {
}
let services = await docker.service.list(filterOpt)
let networks = await docker.network.list(filterOpt)
let containers = await docker.container.list(filterOpt);
return {
services: services.map(service => service.Spec.Name),
networks: networks.map(network => network.Name),
containers: containers.map(container => container.Names[0].substring(1))
}
}
}

View File

@@ -19,4 +19,4 @@ for (let file of list) {
}
}
server.static().build().start();
server.static().build().start(81);

View File

@@ -1,7 +1,14 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"baseUrl": "src",
"outDir": "dist"
"outDir": "dist",
"target": "es6",
"module": "commonjs",
"sourceMap": true,
"declaration": true,
"noImplicitAny": true,
"allowUnreachableCode": true,
"experimentalDecorators": true,
"emitDecoratorMetadata": true
}
}