diff --git a/components/dashboard/compose/logs/show.tsx b/components/dashboard/compose/logs/show.tsx index 546b7cc7..19a7c4e6 100644 --- a/components/dashboard/compose/logs/show.tsx +++ b/components/dashboard/compose/logs/show.tsx @@ -30,12 +30,14 @@ export const DockerLogs = dynamic( interface Props { appName: string; + appType: "stack" | "docker-compose"; } -export const ShowDockerLogsCompose = ({ appName }: Props) => { +export const ShowDockerLogsCompose = ({ appName, appType }: Props) => { const { data } = api.docker.getContainersByAppNameMatch.useQuery( { appName, + appType, }, { enabled: !!appName, diff --git a/pages/dashboard/project/[projectId]/services/compose/[composeId].tsx b/pages/dashboard/project/[projectId]/services/compose/[composeId].tsx index dc32325e..22ef7505 100644 --- a/pages/dashboard/project/[projectId]/services/compose/[composeId].tsx +++ b/pages/dashboard/project/[projectId]/services/compose/[composeId].tsx @@ -156,7 +156,10 @@ const Service = (
- +
diff --git a/server/api/routers/docker.ts b/server/api/routers/docker.ts index c8bb9517..208ba6d1 100644 --- a/server/api/routers/docker.ts +++ b/server/api/routers/docker.ts @@ -25,11 +25,14 @@ export const dockerRouter = createTRPCRouter({ getContainersByAppNameMatch: protectedProcedure .input( z.object({ + appType: z + .union([z.literal("stack"), z.literal("docker-compose")]) + .optional(), appName: z.string().min(1), }), ) .query(async ({ input }) => { - return await getContainersByAppNameMatch(input.appName); + return await getContainersByAppNameMatch(input.appName, input.appType); }), getContainersByAppLabel: protectedProcedure diff --git a/server/api/services/docker.ts b/server/api/services/docker.ts index 8c951e8d..927c94f6 100644 --- a/server/api/services/docker.ts +++ b/server/api/services/docker.ts @@ -66,10 +66,18 @@ export const getConfig = async (containerId: string) => { } catch (error) {} }; -export const getContainersByAppNameMatch = async (appName: string) => { +export const getContainersByAppNameMatch = async ( + appName: string, + appType?: "stack" | "docker-compose", +) => { try { + const cmd = + "docker ps -a --format 'CONTAINER ID : {{.ID}} | Name: {{.Names}} | State: {{.State}}'"; + const { stdout, stderr } = await execAsync( - `docker ps -a --format 'CONTAINER ID : {{.ID}} | Name: {{.Names}} | State: {{.State}}' | grep ${appName}`, + appType === "docker-compose" + ? `${cmd} --filter='label=com.docker.compose.project=${appName}'` + : `${cmd} | grep ${appName}`, ); if (stderr) {