Merge pull request #257 from lorenzomigliorero/fix/docker-compose-logs

fix: docker compose logs
This commit is contained in:
Mauricio Siu
2024-07-22 10:32:42 -06:00
committed by GitHub
4 changed files with 21 additions and 5 deletions

View File

@@ -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,

View File

@@ -156,7 +156,10 @@ const Service = (
<TabsContent value="logs">
<div className="flex flex-col gap-4 pt-2.5">
<ShowDockerLogsCompose appName={data?.appName || ""} />
<ShowDockerLogsCompose
appName={data?.appName || ""}
appType={data?.composeType || "docker-compose"}
/>
</div>
</TabsContent>

View File

@@ -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

View File

@@ -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) {