91 lines
3.7 KiB
TypeScript
91 lines
3.7 KiB
TypeScript
|
import { parentPort } from 'node:worker_threads';
|
||
|
import { asyncExecShell, isDev, prisma, version } from '../lib/common';
|
||
|
import { getEngine } from '../lib/docker';
|
||
|
|
||
|
(async () => {
|
||
|
if (parentPort) {
|
||
|
const destinationDockers = await prisma.destinationDocker.findMany();
|
||
|
const engines = [...new Set(destinationDockers.map(({ engine }) => engine))];
|
||
|
for (const engine of engines) {
|
||
|
let lowDiskSpace = false;
|
||
|
const host = getEngine(engine);
|
||
|
// try {
|
||
|
// let stdout = null
|
||
|
// if (!isDev) {
|
||
|
// const output = await asyncExecShell(
|
||
|
// `DOCKER_HOST=${host} docker exec coolify sh -c 'df -kPT /'`
|
||
|
// );
|
||
|
// stdout = output.stdout;
|
||
|
// } else {
|
||
|
// const output = await asyncExecShell(
|
||
|
// `df -kPT /`
|
||
|
// );
|
||
|
// stdout = output.stdout;
|
||
|
// }
|
||
|
// let lines = stdout.trim().split('\n');
|
||
|
// let header = lines[0];
|
||
|
// let regex =
|
||
|
// /^Filesystem\s+|Type\s+|1024-blocks|\s+Used|\s+Available|\s+Capacity|\s+Mounted on\s*$/g;
|
||
|
// const boundaries = [];
|
||
|
// let match;
|
||
|
|
||
|
// while ((match = regex.exec(header))) {
|
||
|
// boundaries.push(match[0].length);
|
||
|
// }
|
||
|
|
||
|
// boundaries[boundaries.length - 1] = -1;
|
||
|
// const data = lines.slice(1).map((line) => {
|
||
|
// const cl = boundaries.map((boundary) => {
|
||
|
// const column = boundary > 0 ? line.slice(0, boundary) : line;
|
||
|
// line = line.slice(boundary);
|
||
|
// return column.trim();
|
||
|
// });
|
||
|
// return {
|
||
|
// capacity: Number.parseInt(cl[5], 10) / 100
|
||
|
// };
|
||
|
// });
|
||
|
// if (data.length > 0) {
|
||
|
// const { capacity } = data[0];
|
||
|
// if (capacity > 0.6) {
|
||
|
// lowDiskSpace = true;
|
||
|
// }
|
||
|
// }
|
||
|
// } catch (error) {
|
||
|
// console.log(error);
|
||
|
// }
|
||
|
if (!isDev) {
|
||
|
// Cleanup old coolify images
|
||
|
try {
|
||
|
let { stdout: images } = await asyncExecShell(
|
||
|
`DOCKER_HOST=${host} docker images coollabsio/coolify --filter before="coollabsio/coolify:${version}" -q | xargs `
|
||
|
);
|
||
|
images = images.trim();
|
||
|
if (images) {
|
||
|
await asyncExecShell(`DOCKER_HOST=${host} docker rmi -f ${images}`);
|
||
|
}
|
||
|
} catch (error) {
|
||
|
//console.log(error);
|
||
|
}
|
||
|
try {
|
||
|
await asyncExecShell(`DOCKER_HOST=${host} docker container prune -f`);
|
||
|
} catch (error) {
|
||
|
//console.log(error);
|
||
|
}
|
||
|
try {
|
||
|
await asyncExecShell(`DOCKER_HOST=${host} docker image prune -f`);
|
||
|
} catch (error) {
|
||
|
//console.log(error);
|
||
|
}
|
||
|
try {
|
||
|
await asyncExecShell(`DOCKER_HOST=${host} docker image prune -a -f`);
|
||
|
} catch (error) {
|
||
|
//console.log(error);
|
||
|
}
|
||
|
} else {
|
||
|
console.log(`[DEV MODE] Low disk space: ${lowDiskSpace}`);
|
||
|
}
|
||
|
}
|
||
|
await prisma.$disconnect();
|
||
|
} else process.exit(0);
|
||
|
})();
|