mirror of
https://github.com/andwati/dokploy.git
synced 2026-11-09 05:25:18 +00:00
Merge pull request #5018 from Dokploy/fix/compose-preview-patches-4243
fix: compose preview not reflecting patches
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user