diff --git a/apps/dokploy/__test__/templates/config.template.test.ts b/apps/dokploy/__test__/templates/config.template.test.ts index 9516e9d1..d6e87cb7 100644 --- a/apps/dokploy/__test__/templates/config.template.test.ts +++ b/apps/dokploy/__test__/templates/config.template.test.ts @@ -233,6 +233,49 @@ describe("processTemplate", () => { expect(base64Value.length).toBeGreaterThanOrEqual(42); expect(base64Value.length).toBeLessThanOrEqual(44); }); + + it("should handle boolean values in env vars when provided as an array", () => { + const template: CompleteTemplate = { + metadata: {} as any, + variables: {}, + config: { + domains: [], + env: [ + "ENABLE_USER_SIGN_UP=false", + "DEBUG_MODE=true", + "SOME_NUMBER=42", + ], + mounts: [], + }, + }; + + const result = processTemplate(template, mockSchema); + expect(result.envs).toHaveLength(3); + expect(result.envs).toContain("ENABLE_USER_SIGN_UP=false"); + expect(result.envs).toContain("DEBUG_MODE=true"); + expect(result.envs).toContain("SOME_NUMBER=42"); + }); + + it("should handle boolean values in env vars when provided as an object", () => { + const template: CompleteTemplate = { + metadata: {} as any, + variables: {}, + config: { + domains: [], + env: { + ENABLE_USER_SIGN_UP: false, + DEBUG_MODE: true, + SOME_NUMBER: 42, + }, + }, + }; + + const result = processTemplate(template, mockSchema); + expect(result.envs).toHaveLength(3); + expect(result.envs).toContain("ENABLE_USER_SIGN_UP=false"); + expect(result.envs).toContain("DEBUG_MODE=true"); + expect(result.envs).toContain("SOME_NUMBER=42"); + }); }); describe("mounts processing", () => { diff --git a/packages/server/src/templates/processors.ts b/packages/server/src/templates/processors.ts index f0f068aa..86d3cdf7 100644 --- a/packages/server/src/templates/processors.ts +++ b/packages/server/src/templates/processors.ts @@ -45,7 +45,9 @@ export interface CompleteTemplate { variables: Record; config: { domains: DomainConfig[]; - env: Record | string[]; + env: + | Record + | (string | Record)[]; mounts?: MountConfig[]; }; } @@ -200,7 +202,16 @@ export function processEnvVars( if (typeof env === "string") { return processValue(env, variables, schema); } - return env; + // Si es un objeto, asumimos que es un par clave-valor + if (typeof env === "object" && env !== null) { + const keys = Object.keys(env); + if (keys.length > 0) { + const key = keys[0]; + return `${key}=${env[key as keyof typeof env]}`; + } + } + // Para valores primitivos (boolean, number) + return String(env); }); }