Merge pull request #4370 from Dokploy/fix/template-isolated-deployment

feat(templates): support isolated = false opt-out in template.toml
This commit is contained in:
Mauricio Siu
2026-05-08 19:34:07 -06:00
committed by GitHub
5 changed files with 49 additions and 4 deletions

View File

@@ -494,4 +494,49 @@ describe("processTemplate", () => {
expect(result.mounts).toHaveLength(1);
});
});
describe("isolated deployment config", () => {
it("should default to isolated=true when not specified", () => {
const template: CompleteTemplate = {
metadata: {} as any,
variables: {},
config: {
domains: [],
env: {},
},
};
expect(template.config.isolated).toBeUndefined();
// undefined !== false => isolatedDeployment = true
expect(template.config.isolated !== false).toBe(true);
});
it("should be isolated when isolated=true is explicitly set", () => {
const template: CompleteTemplate = {
metadata: {} as any,
variables: {},
config: {
isolated: true,
domains: [],
env: {},
},
};
expect(template.config.isolated !== false).toBe(true);
});
it("should disable isolated deployment when isolated=false", () => {
const template: CompleteTemplate = {
metadata: {} as any,
variables: {},
config: {
isolated: false,
domains: [],
env: {},
},
};
expect(template.config.isolated !== false).toBe(false);
});
});
});

View File

@@ -30,9 +30,7 @@ describe("helpers functions", () => {
const domain = processValue("${domain}", {}, mockSchema);
expect(domain.startsWith(`${mockSchema.projectName}-`)).toBeTruthy();
expect(
domain.endsWith(
`${mockSchema.serverIp.replaceAll(".", "-")}.traefik.me`,
),
domain.endsWith(`${mockSchema.serverIp.replaceAll(".", "-")}.sslip.io`),
).toBeTruthy();
});
});

View File

@@ -640,7 +640,7 @@ export const composeRouter = createTRPCRouter({
name: input.id,
sourceType: "raw",
appName: appName,
isolatedDeployment: true,
isolatedDeployment: template.config.config?.isolated !== false,
});
await addNewService(ctx, compose.composeId);

View File

@@ -21,6 +21,7 @@ export interface CompleteTemplate {
[key: string]: string;
};
config: {
isolated?: boolean;
domains: Array<{
serviceName: string;
port: number;

View File

@@ -45,6 +45,7 @@ export interface CompleteTemplate {
};
variables: Record<string, string>;
config: {
isolated?: boolean;
domains: DomainConfig[];
env:
| Record<string, string | boolean | number>