diff --git a/apps/dokploy/components/dashboard/application/logs/show.tsx b/apps/dokploy/components/dashboard/application/logs/show.tsx
index 8f6bf1f1..a73b99d2 100644
--- a/apps/dokploy/components/dashboard/application/logs/show.tsx
+++ b/apps/dokploy/components/dashboard/application/logs/show.tsx
@@ -1,3 +1,4 @@
+import { Badge } from "@/components/ui/badge";
import {
Card,
CardContent,
@@ -30,6 +31,21 @@ export const DockerLogs = dynamic(
},
);
+export const badgeStateColor = (state: string) => {
+ switch (state) {
+ case "running":
+ return "green";
+ case "exited":
+ case "shutdown":
+ return "red";
+ case "accepted":
+ case "created":
+ return "blue";
+ default:
+ return "default";
+ }
+};
+
interface Props {
appName: string;
serverId?: string;
@@ -123,7 +139,9 @@ export const ShowDockerLogs = ({ appName, serverId }: Props) => {
value={container.containerId}
>
{container.name} ({container.containerId}){" "}
- {container.state}
+
+ {container.state}
+
))}
@@ -135,7 +153,10 @@ export const ShowDockerLogs = ({ appName, serverId }: Props) => {
value={container.containerId}
>
{container.name} ({container.containerId}@{container.node}
- ) {container.state}
+ )
+
+ {container.state}
+
))}
>
diff --git a/apps/dokploy/components/dashboard/compose/logs/show-stack.tsx b/apps/dokploy/components/dashboard/compose/logs/show-stack.tsx
index cec1e5af..d166f933 100644
--- a/apps/dokploy/components/dashboard/compose/logs/show-stack.tsx
+++ b/apps/dokploy/components/dashboard/compose/logs/show-stack.tsx
@@ -1,3 +1,5 @@
+import { badgeStateColor } from "@/components/dashboard/application/logs/show";
+import { Badge } from "@/components/ui/badge";
import {
Card,
CardContent,
@@ -35,6 +37,8 @@ interface Props {
serverId?: string;
}
+badgeStateColor;
+
export const ShowDockerLogsStack = ({ appName, serverId }: Props) => {
const [option, setOption] = useState<"swarm" | "native">("native");
const [containerId, setContainerId] = useState();
@@ -123,7 +127,9 @@ export const ShowDockerLogsStack = ({ appName, serverId }: Props) => {
value={container.containerId}
>
{container.name} ({container.containerId}){" "}
- {container.state}
+
+ {container.state}
+
))}
@@ -135,7 +141,10 @@ export const ShowDockerLogsStack = ({ appName, serverId }: Props) => {
value={container.containerId}
>
{container.name} ({container.containerId}@{container.node}
- ) {container.state}
+ )
+
+ {container.state}
+
))}
>
diff --git a/apps/dokploy/components/dashboard/compose/logs/show.tsx b/apps/dokploy/components/dashboard/compose/logs/show.tsx
index bf7e2993..4530e0dd 100644
--- a/apps/dokploy/components/dashboard/compose/logs/show.tsx
+++ b/apps/dokploy/components/dashboard/compose/logs/show.tsx
@@ -1,3 +1,5 @@
+import { badgeStateColor } from "@/components/dashboard/application/logs/show";
+import { Badge } from "@/components/ui/badge";
import {
Card,
CardContent,
@@ -87,7 +89,10 @@ export const ShowDockerLogsCompose = ({
key={container.containerId}
value={container.containerId}
>
- {container.name} ({container.containerId}) {container.state}
+ {container.name} ({container.containerId}){" "}
+
+ {container.state}
+
))}
Containers ({data?.length})
diff --git a/apps/dokploy/server/wss/docker-container-logs.ts b/apps/dokploy/server/wss/docker-container-logs.ts
index 4a89e42b..092f3973 100644
--- a/apps/dokploy/server/wss/docker-container-logs.ts
+++ b/apps/dokploy/server/wss/docker-container-logs.ts
@@ -54,7 +54,9 @@ export const setupDockerContainerLogsWebSocketServer = (
const client = new Client();
client
.once("ready", () => {
- const baseCommand = `docker ${runType === "swarm" ? "service" : "container"} logs --timestamps --tail ${tail} ${
+ const baseCommand = `docker ${runType === "swarm" ? "service" : "container"} logs --timestamps ${
+ runType === "swarm" ? "--raw" : ""
+ } --tail ${tail} ${
since === "all" ? "" : `--since ${since}`
} --follow ${containerId}`;
const escapedSearch = search ? search.replace(/'/g, "'\\''") : "";
@@ -98,7 +100,9 @@ export const setupDockerContainerLogsWebSocketServer = (
});
} else {
const shell = getShell();
- const baseCommand = `docker ${runType === "swarm" ? "service" : "container"} logs --timestamps --tail ${tail} ${
+ const baseCommand = `docker ${runType === "swarm" ? "service" : "container"} logs --timestamps ${
+ runType === "swarm" ? "--raw" : ""
+ } --tail ${tail} ${
since === "all" ? "" : `--since ${since}`
} --follow ${containerId}`;
const command = search
diff --git a/packages/server/src/services/docker.ts b/packages/server/src/services/docker.ts
index e5f2c0e1..b7a5c440 100644
--- a/packages/server/src/services/docker.ts
+++ b/packages/server/src/services/docker.ts
@@ -196,7 +196,7 @@ export const getStackContainersByAppName = async (
: "No container name";
const state = parts[2]
- ? parts[2].replace("State: ", "").trim()
+ ? parts[2].replace("State: ", "").trim().toLowerCase()
: "No state";
const node = parts[3]
? parts[3].replace("Node: ", "").trim()
@@ -255,7 +255,7 @@ export const getServiceContainersByAppName = async (
: "No container name";
const state = parts[2]
- ? parts[2].replace("State: ", "").trim()
+ ? parts[2].replace("State: ", "").trim().toLowerCase()
: "No state";
const node = parts[3]