DweebUI/utils/docker.js
2024-08-10 00:57:22 -07:00

60 lines
No EOL
1.6 KiB
JavaScript

import Docker from 'dockerode';
export var docker = new Docker();
export async function imageList() {
let images = await docker.listImages({ all: true });
return images;
}
export async function getContainer(containerID) {
let container = docker.getContainer(containerID);
return container;
}
export async function containerInspect (containerID) {
// get the container info
let container = docker.getContainer(containerID);
let info = await container.inspect();
let image = info.Config.Image;
let container_id = info.Id;
let service = info.Config.Labels['com.docker.compose.service'];
let ports_list = [];
let external = 0;
let internal = 0;
try {
for (const [key, value] of Object.entries(info.HostConfig.PortBindings)) {
let ports = {
check: 'checked',
external: value[0].HostPort,
internal: key.split('/')[0],
protocol: key.split('/')[1]
}
ports_list.push(ports);
}
} catch {}
try {
external = ports_list[0].external;
internal = ports_list[0].internal;
} catch {}
let details = {
name: info.Name.slice(1),
image: image,
service: service,
containerID: container_id,
state: info.State.Status,
external_port: external,
internal_port: internal,
ports: ports_list,
volumes: info.Mounts,
env: info.Config.Env,
labels: info.Config.Labels,
link: 'localhost',
}
return details;
}