diff --git a/apps/dokploy/components/dashboard/compose/monitoring/show.tsx b/apps/dokploy/components/dashboard/compose/monitoring/show.tsx index 92c31482..428c74e4 100644 --- a/apps/dokploy/components/dashboard/compose/monitoring/show.tsx +++ b/apps/dokploy/components/dashboard/compose/monitoring/show.tsx @@ -1,3 +1,4 @@ +import { Button } from "@/components/ui/button"; import { Card, CardContent, @@ -17,6 +18,7 @@ import { } from "@/components/ui/select"; import { api } from "@/utils/api"; import { useEffect, useState } from "react"; +import { toast } from "sonner"; import { DockerMonitoring } from "../../monitoring/docker/show"; interface Props { @@ -42,9 +44,15 @@ export const ShowMonitoringCompose = ({ string | undefined >(); + const [containerId, setContainerId] = useState(); + + const { mutateAsync: restart, isLoading } = + api.docker.restartContainer.useMutation(); + useEffect(() => { if (data && data?.length > 0) { setContainerAppName(data[0]?.name); + setContainerId(data[0]?.containerId); } }, [data]); @@ -57,24 +65,48 @@ export const ShowMonitoringCompose = ({ - +
+ + +
{ + return await containerRestart(input.containerId); + }), + getConfig: protectedProcedure .input( z.object({ diff --git a/apps/dokploy/server/api/services/docker.ts b/apps/dokploy/server/api/services/docker.ts index 927c94f6..379bebe4 100644 --- a/apps/dokploy/server/api/services/docker.ts +++ b/apps/dokploy/server/api/services/docker.ts @@ -150,3 +150,20 @@ export const getContainersByAppLabel = async (appName: string) => { return []; }; + +export const containerRestart = async (containerId: string) => { + try { + const { stdout, stderr } = await execAsync( + `docker container restart ${containerId}`, + ); + + if (stderr) { + console.error(`Error: ${stderr}`); + return; + } + + const config = JSON.parse(stdout); + + return config; + } catch (error) {} +};