Merge pull request #5018 from Dokploy/fix/compose-preview-patches-4243

fix: compose preview not reflecting patches
This commit is contained in:
Mauricio Siu
2026-08-09 02:07:34 -06:00
committed by GitHub
+36 -2
View File
@@ -2,10 +2,10 @@ import fs, { existsSync, readFileSync } from "node:fs";
import { join } from "node:path"; import { join } from "node:path";
import { paths } from "@dokploy/server/constants"; import { paths } from "@dokploy/server/constants";
import { db } from "@dokploy/server/db"; import { db } from "@dokploy/server/db";
import { network } from "@dokploy/server/db/schema"; import { network, patch } from "@dokploy/server/db/schema";
import type { Compose } from "@dokploy/server/services/compose"; import type { Compose } from "@dokploy/server/services/compose";
import type { Domain } from "@dokploy/server/services/domain"; import type { Domain } from "@dokploy/server/services/domain";
import { inArray } from "drizzle-orm"; import { eq, inArray } from "drizzle-orm";
import { parse, stringify } from "yaml"; import { parse, stringify } from "yaml";
import { execAsyncRemote } from "../process/execAsync"; import { execAsyncRemote } from "../process/execAsync";
import { cloneBitbucketRepository } from "../providers/bitbucket"; import { cloneBitbucketRepository } from "../providers/bitbucket";
@@ -134,6 +134,38 @@ exit 1;
`; `;
} }
}; };
export const applyComposeFilePatch = async (
compose: Compose,
): Promise<ComposeSpecification | null> => {
if (compose.sourceType === "raw") {
return null;
}
const composePatches = await db.query.patch.findMany({
where: eq(patch.composeId, compose.composeId),
});
const composeFilePatch = composePatches.find(
(p) =>
p.enabled &&
p.type !== "delete" &&
join(p.filePath) === join(compose.composePath),
);
if (!composeFilePatch?.content) {
return null;
}
try {
const parsed = parse(composeFilePatch.content, {
maxAliasCount: 10000,
}) as ComposeSpecification;
return parsed ?? null;
} catch {
return null;
}
};
export const addDomainToCompose = async ( export const addDomainToCompose = async (
compose: Compose, compose: Compose,
domains: Domain[], domains: Domain[],
@@ -152,6 +184,8 @@ export const addDomainToCompose = async (
return null; return null;
} }
result = (await applyComposeFilePatch(compose)) ?? result;
if (compose.isolatedDeployment) { if (compose.isolatedDeployment) {
const randomized = randomizeDeployableSpecificationFile( const randomized = randomizeDeployableSpecificationFile(
result, result,