IKHSAN
EN Read in EnglishID

homeio

Publik

Fork dari doctor-io/homeio

Branch
main
Commit terakhir
958d74616 Oktober 2026

maintenance-service.ts

Buka raw
import "server-only";

import { execFile } from "node:child_process";
import { promisify } from "node:util";
import { logServerAction } from "@/lib/server/logging/logger";

const execFileAsync = promisify(execFile);

export type DockerPruneResult = {
  command: "images" | "volumes";
  output: string;
};

async function runDockerPrune(
  command: DockerPruneResult["command"],
  args: string[],
) {
  const { stdout, stderr } = await execFileAsync("docker", args);
  const output = [stdout, stderr].filter((value) => value.trim().length > 0).join("\n").trim();

  logServerAction({
    layer: "service",
    action: `docker.prune.${command}`,
    status: "success",
    message: `Pruned unused Docker ${command}`,
    meta: {
      args,
      output,
    },
  });

  return {
    command,
    output,
  } satisfies DockerPruneResult;
}

export async function pruneDockerImages() {
  return runDockerPrune("images", ["image", "prune", "-af"]);
}

export async function pruneDockerVolumes() {
  return runDockerPrune("volumes", ["volume", "prune", "-f"]);
}
byte
1.058
baris
45
Jenis
ts
Commit terakhir
16 Oktober 2026