feat: add image volume controller
Signed-off-by: MiaoWoo <admin@yumc.pw>
This commit is contained in:
@@ -22,17 +22,30 @@ location.search.substring(1).split("&").forEach(q => {
|
||||
|
||||
console.log(query);
|
||||
|
||||
var socket = io('/container', {
|
||||
var system = io('/', {
|
||||
path: '/ws',
|
||||
transports: ['websocket']
|
||||
});
|
||||
socket.on('connect', () => {
|
||||
|
||||
system.on('connect', () => {
|
||||
system.emit('events', {})
|
||||
})
|
||||
|
||||
system.on('message', data => {
|
||||
term.write(data.toString() + '\r\n');
|
||||
});
|
||||
|
||||
var container = io('/container', {
|
||||
path: '/ws',
|
||||
transports: ['websocket']
|
||||
});
|
||||
container.on('connect', () => {
|
||||
term.writeln('connect')
|
||||
if (query.action) {
|
||||
term.writeln(`Recover Action: ${query.action} Data: ${query.data}`)
|
||||
switch (query.action) {
|
||||
case "container":
|
||||
socket.emit('logs', {
|
||||
container.emit('logs', {
|
||||
id: query.data,
|
||||
// since: Date.now() / 1000 - 60 * 15,
|
||||
// until: Date.now() / 1000,
|
||||
@@ -51,7 +64,7 @@ term.on('data', async data => {
|
||||
term.write(data);
|
||||
if (data == '\r') {
|
||||
term.write('\n');
|
||||
socket.emit('logs', {
|
||||
container.emit('logs', {
|
||||
id: command
|
||||
})
|
||||
command = '';
|
||||
@@ -59,10 +72,10 @@ term.on('data', async data => {
|
||||
command += data;
|
||||
}
|
||||
});
|
||||
socket.on('message', data => {
|
||||
container.on('message', data => {
|
||||
term.write(data.toString() + '\r\n');
|
||||
});
|
||||
socket.on('disconnect', () => {
|
||||
container.on('disconnect', () => {
|
||||
term.reset();
|
||||
term.writeln('disconnect');
|
||||
});
|
||||
|
||||
@@ -19,12 +19,18 @@ class DashboardController {
|
||||
let networks = await docker.network.list();
|
||||
let nodes = await docker.node.list();
|
||||
let tasks = await docker.task.list();
|
||||
let containers = await docker.container.list();
|
||||
let images = await docker.image.list();
|
||||
let volumes = await docker.volume.list();
|
||||
return {
|
||||
nodes: nodes.map(n => n.Description.Hostname),
|
||||
tasks: tasks.map(t => t.ID),
|
||||
stacks: Array.from(new Set(stacks)),
|
||||
services,
|
||||
networks: networks.map(n => n.Name)
|
||||
networks: networks.map(n => n.Name),
|
||||
containers: containers.map(c => c.Names),
|
||||
images: images.map(i => i.Id),
|
||||
volumes: volumes.Volumes.map(v => v.Name)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { controller, httpGet, httpPost } from 'inversify-express-utils';
|
||||
import * as docker from '@dayu/docker-api'
|
||||
import { io, namespace, listener, interfaces, Message } from '@cc-server/ws';
|
||||
|
||||
@controller('')
|
||||
class SystemController {
|
||||
@@ -14,9 +15,32 @@ class SystemController {
|
||||
}
|
||||
@httpGet('/events')
|
||||
public async event() {
|
||||
await docker.system.events((event) => {
|
||||
if (!event) { return }
|
||||
console.log(event)
|
||||
let stream = await docker.system.events();
|
||||
stream.on('data', (chunk: ArrayBuffer) => {
|
||||
let log = Buffer.from(chunk).toString();
|
||||
console.log(log);
|
||||
})
|
||||
return {}
|
||||
}
|
||||
}
|
||||
|
||||
@namespace()
|
||||
class SystemNamespace extends interfaces.Namespace {
|
||||
@listener()
|
||||
async events(socket: io.Socket) {
|
||||
try {
|
||||
socket.send('Starting listening docker event...');
|
||||
let stream = await docker.system.events();
|
||||
socket.send('Connect to docker deamon...');
|
||||
this.defer(socket, () => stream.connection.destroy());
|
||||
stream.on('data', (chunk: ArrayBuffer) => {
|
||||
let log = Buffer.from(chunk).toString();
|
||||
console.log(log);
|
||||
socket.send(log);
|
||||
})
|
||||
} catch (ex) {
|
||||
//console.error(ex);
|
||||
return new Message(ex.message);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,8 @@ import * as fs from 'fs'
|
||||
import * as path from 'path'
|
||||
|
||||
//process.env.DOCKER_HOST = 'https://ndcli.yumc.pw'
|
||||
process.env.DOCKER_HOST = '/var/run/docker.sock'
|
||||
// process.env.DOCKER_HOST = '/var/run/docker.sock'
|
||||
process.env.DOCKER_HOST = 'https://dscli.miaowoo.cc'
|
||||
|
||||
let server = new CcServerBoot();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user