From ddff8b9de767213700c10ece2975cb319b8deaaf Mon Sep 17 00:00:00 2001 From: Mauricio Siu Date: Mon, 13 Apr 2026 22:04:46 -0600 Subject: [PATCH] feat: add container networks view to dashboard Integrate a new component, ShowContainerNetworks, to display network details for each container in the dashboard. This includes a dialog that shows network information such as IP address, gateway, and MAC address, enhancing the container management capabilities. --- .../containers/show-compose-containers.tsx | 5 + .../networks/show-container-networks.tsx | 119 ++++++++++++++++++ .../dashboard/docker/show/columns.tsx | 5 + 3 files changed, 129 insertions(+) create mode 100644 apps/dokploy/components/dashboard/docker/networks/show-container-networks.tsx diff --git a/apps/dokploy/components/dashboard/compose/containers/show-compose-containers.tsx b/apps/dokploy/components/dashboard/compose/containers/show-compose-containers.tsx index 68260bc2d..7787d00e7 100644 --- a/apps/dokploy/components/dashboard/compose/containers/show-compose-containers.tsx +++ b/apps/dokploy/components/dashboard/compose/containers/show-compose-containers.tsx @@ -38,6 +38,7 @@ import { import { api } from "@/utils/api"; import { ShowContainerConfig } from "@/components/dashboard/docker/config/show-container-config"; import { ShowContainerMounts } from "@/components/dashboard/docker/mounts/show-container-mounts"; +import { ShowContainerNetworks } from "@/components/dashboard/docker/networks/show-container-networks"; import { DockerTerminalModal } from "@/components/dashboard/docker/terminal/docker-terminal-modal"; const DockerLogsId = dynamic( @@ -228,6 +229,10 @@ const ContainerRow = ({ containerId={container.containerId} serverId={serverId || ""} /> + { + const { data } = api.docker.getConfig.useQuery( + { + containerId, + serverId, + }, + { + enabled: !!containerId, + }, + ); + + const networks: Record = + data?.NetworkSettings?.Networks ?? {}; + const entries = Object.entries(networks); + + return ( + + + e.preventDefault()} + > + View Networks + + + + + Container Networks + + Networks attached to this container + + +
+ {entries.length === 0 ? ( +
+ No networks found for this container. +
+ ) : ( + + + + Network + IP Address + Gateway + MAC Address + Aliases + + + + {entries.map(([name, network]) => ( + + + {name} + + + {network.IPAddress + ? `${network.IPAddress}/${network.IPPrefixLen}` + : "-"} + + + {network.Gateway || "-"} + + + {network.MacAddress || "-"} + + + {network.Aliases?.join(", ") || "-"} + + + ))} + +
+ )} +
+
+
+ ); +}; diff --git a/apps/dokploy/components/dashboard/docker/show/columns.tsx b/apps/dokploy/components/dashboard/docker/show/columns.tsx index a51cb8c62..fa06f4d70 100644 --- a/apps/dokploy/components/dashboard/docker/show/columns.tsx +++ b/apps/dokploy/components/dashboard/docker/show/columns.tsx @@ -11,6 +11,7 @@ import { import { ShowContainerConfig } from "../config/show-container-config"; import { ShowDockerModalLogs } from "../logs/show-docker-modal-logs"; import { ShowContainerMounts } from "../mounts/show-container-mounts"; +import { ShowContainerNetworks } from "../networks/show-container-networks"; import { RemoveContainerDialog } from "../remove/remove-container"; import { DockerTerminalModal } from "../terminal/docker-terminal-modal"; import { UploadFileModal } from "../upload/upload-file-modal"; @@ -128,6 +129,10 @@ export const columns: ColumnDef[] = [ containerId={container.containerId} serverId={container.serverId || ""} /> +