From b6fd92aaddcc71574d937c8b4f760f74f90755e2 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Tue, 3 Sep 2024 23:58:56 -0600 Subject: [PATCH] refactor: change prefix to suffix --- apps/dokploy/__test__/compose/compose.test.ts | 26 ++++---- .../compose/config/config-root.test.ts | 40 ++++++------ .../compose/config/config-service.test.ts | 34 +++++----- .../__test__/compose/config/config.test.ts | 22 +++---- .../compose/network/network-root.test.ts | 56 ++++++++-------- .../compose/network/network-service.test.ts | 62 +++++++++--------- .../__test__/compose/network/network.test.ts | 56 ++++++++-------- .../compose/secrets/secret-root.test.ts | 26 ++++---- .../compose/secrets/secret-services.test.ts | 34 +++++----- .../__test__/compose/secrets/secret.test.ts | 20 +++--- .../service/service-container-name.test.ts | 20 +++--- .../service/service-depends-on.test.ts | 64 +++++++++---------- .../compose/service/service-extends.test.ts | 46 ++++++------- .../compose/service/service-links.test.ts | 28 ++++---- .../compose/service/service-names.test.ts | 14 ++-- .../__test__/compose/service/service.test.ts | 30 ++++----- .../service/sevice-volumes-from.test.ts | 28 ++++---- .../__test__/compose/volume/volume-2.test.ts | 42 ++++++------ .../compose/volume/volume-root.test.ts | 32 +++++----- .../compose/volume/volume-services.test.ts | 22 +++---- .../__test__/compose/volume/volume.test.ts | 28 ++++---- apps/dokploy/__test__/traefik/traefik.test.ts | 4 +- .../compose/general/randomize-compose.tsx | 26 ++++---- ...insey_walden.sql => 0035_cool_gravity.sql} | 2 +- apps/dokploy/drizzle/meta/0035_snapshot.json | 6 +- apps/dokploy/drizzle/meta/_journal.json | 4 +- apps/dokploy/server/api/routers/compose.ts | 2 +- apps/dokploy/server/api/services/compose.ts | 4 +- apps/dokploy/server/db/schema/compose.ts | 4 +- apps/dokploy/server/utils/builders/compose.ts | 2 +- apps/dokploy/server/utils/docker/compose.ts | 36 +++++------ .../server/utils/docker/compose/configs.ts | 26 ++++---- .../server/utils/docker/compose/network.ts | 28 ++++---- .../server/utils/docker/compose/secrets.ts | 26 ++++---- .../server/utils/docker/compose/service.ts | 28 ++++---- .../server/utils/docker/compose/volume.ts | 26 ++++---- apps/dokploy/server/utils/docker/domain.ts | 6 +- 37 files changed, 480 insertions(+), 480 deletions(-) rename apps/dokploy/drizzle/{0035_tired_kinsey_walden.sql => 0035_cool_gravity.sql} (61%) diff --git a/apps/dokploy/__test__/compose/compose.test.ts b/apps/dokploy/__test__/compose/compose.test.ts index 1e728b99..4c47b111 100644 --- a/apps/dokploy/__test__/compose/compose.test.ts +++ b/apps/dokploy/__test__/compose/compose.test.ts @@ -1,4 +1,4 @@ -import { addPrefixToAllProperties } from "@/server/utils/docker/compose"; +import { addSuffixToAllProperties } from "@/server/utils/docker/compose"; import type { ComposeSpecification } from "@/server/utils/docker/types"; import { load } from "js-yaml"; import { expect, test } from "vitest"; @@ -119,11 +119,11 @@ secrets: file: ./db_password.txt `) as ComposeSpecification; -test("Add prefix to all properties in compose file 1", () => { +test("Add suffix to all properties in compose file 1", () => { const composeData = load(composeFile1) as ComposeSpecification; - const prefix = "testhash"; + const suffix = "testhash"; - const updatedComposeData = addPrefixToAllProperties(composeData, prefix); + const updatedComposeData = addSuffixToAllProperties(composeData, suffix); expect(updatedComposeData).toEqual(expectedComposeFile1); }); @@ -242,11 +242,11 @@ secrets: file: ./db_password.txt `) as ComposeSpecification; -test("Add prefix to all properties in compose file 2", () => { +test("Add suffix to all properties in compose file 2", () => { const composeData = load(composeFile2) as ComposeSpecification; - const prefix = "testhash"; + const suffix = "testhash"; - const updatedComposeData = addPrefixToAllProperties(composeData, prefix); + const updatedComposeData = addSuffixToAllProperties(composeData, suffix); expect(updatedComposeData).toEqual(expectedComposeFile2); }); @@ -365,11 +365,11 @@ secrets: file: ./service_secret.txt `) as ComposeSpecification; -test("Add prefix to all properties in compose file 3", () => { +test("Add suffix to all properties in compose file 3", () => { const composeData = load(composeFile3) as ComposeSpecification; - const prefix = "testhash"; + const suffix = "testhash"; - const updatedComposeData = addPrefixToAllProperties(composeData, prefix); + const updatedComposeData = addSuffixToAllProperties(composeData, suffix); expect(updatedComposeData).toEqual(expectedComposeFile3); }); @@ -466,11 +466,11 @@ volumes: driver: local `) as ComposeSpecification; -test("Add prefix to all properties in Plausible compose file", () => { +test("Add suffix to all properties in Plausible compose file", () => { const composeData = load(composeFile) as ComposeSpecification; - const prefix = "testhash"; + const suffix = "testhash"; - const updatedComposeData = addPrefixToAllProperties(composeData, prefix); + const updatedComposeData = addSuffixToAllProperties(composeData, suffix); expect(updatedComposeData).toEqual(expectedComposeFile); }); diff --git a/apps/dokploy/__test__/compose/config/config-root.test.ts b/apps/dokploy/__test__/compose/config/config-root.test.ts index 88e8b357..7f4311f6 100644 --- a/apps/dokploy/__test__/compose/config/config-root.test.ts +++ b/apps/dokploy/__test__/compose/config/config-root.test.ts @@ -1,5 +1,5 @@ import { generateRandomHash } from "@/server/utils/docker/compose"; -import { addPrefixToConfigsRoot } from "@/server/utils/docker/compose/configs"; +import { addSuffixToConfigsRoot } from "@/server/utils/docker/compose/configs"; import type { ComposeSpecification } from "@/server/utils/docker/types"; import { load } from "js-yaml"; import { expect, test } from "vitest"; @@ -23,19 +23,19 @@ configs: file: ./web-config.yml `; -test("Add prefix to configs in root property", () => { +test("Add suffix to configs in root property", () => { const composeData = load(composeFile) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData?.configs) { return; } - const configs = addPrefixToConfigsRoot(composeData.configs, prefix); + const configs = addSuffixToConfigsRoot(composeData.configs, suffix); expect(configs).toBeDefined(); for (const configKey of Object.keys(configs)) { - expect(configKey).toContain(`-${prefix}`); + expect(configKey).toContain(`-${suffix}`); expect(configs[configKey]).toBeDefined(); } }); @@ -59,23 +59,23 @@ configs: file: ./another-config.yml `; -test("Add prefix to multiple configs in root property", () => { +test("Add suffix to multiple configs in root property", () => { const composeData = load(composeFileMultipleConfigs) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData?.configs) { return; } - const configs = addPrefixToConfigsRoot(composeData.configs, prefix); + const configs = addSuffixToConfigsRoot(composeData.configs, suffix); expect(configs).toBeDefined(); for (const configKey of Object.keys(configs)) { - expect(configKey).toContain(`-${prefix}`); + expect(configKey).toContain(`-${suffix}`); expect(configs[configKey]).toBeDefined(); } - expect(configs).toHaveProperty(`web-config-${prefix}`); - expect(configs).toHaveProperty(`another-config-${prefix}`); + expect(configs).toHaveProperty(`web-config-${suffix}`); + expect(configs).toHaveProperty(`another-config-${suffix}`); }); const composeFileDifferentProperties = ` @@ -92,25 +92,25 @@ configs: external: true `; -test("Add prefix to configs with different properties in root property", () => { +test("Add suffix to configs with different properties in root property", () => { const composeData = load( composeFileDifferentProperties, ) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData?.configs) { return; } - const configs = addPrefixToConfigsRoot(composeData.configs, prefix); + const configs = addSuffixToConfigsRoot(composeData.configs, suffix); expect(configs).toBeDefined(); for (const configKey of Object.keys(configs)) { - expect(configKey).toContain(`-${prefix}`); + expect(configKey).toContain(`-${suffix}`); expect(configs[configKey]).toBeDefined(); } - expect(configs).toHaveProperty(`web-config-${prefix}`); - expect(configs).toHaveProperty(`special-config-${prefix}`); + expect(configs).toHaveProperty(`web-config-${suffix}`); + expect(configs).toHaveProperty(`special-config-${suffix}`); }); const composeFileConfigRoot = ` @@ -162,15 +162,15 @@ configs: file: ./db-config.yml `) as ComposeSpecification; -test("Add prefix to configs in root property", () => { +test("Add suffix to configs in root property", () => { const composeData = load(composeFileConfigRoot) as ComposeSpecification; - const prefix = "testhash"; + const suffix = "testhash"; if (!composeData?.configs) { return; } - const configs = addPrefixToConfigsRoot(composeData.configs, prefix); + const configs = addSuffixToConfigsRoot(composeData.configs, suffix); const updatedComposeData = { ...composeData, configs }; // Verificar que el resultado coincide con el archivo esperado diff --git a/apps/dokploy/__test__/compose/config/config-service.test.ts b/apps/dokploy/__test__/compose/config/config-service.test.ts index df2bb417..4d3051a5 100644 --- a/apps/dokploy/__test__/compose/config/config-service.test.ts +++ b/apps/dokploy/__test__/compose/config/config-service.test.ts @@ -1,5 +1,5 @@ import { generateRandomHash } from "@/server/utils/docker/compose"; -import { addPrefixToConfigsInServices } from "@/server/utils/docker/compose/configs"; +import { addSuffixToConfigsInServices } from "@/server/utils/docker/compose/configs"; import type { ComposeSpecification } from "@/server/utils/docker/types"; import { load } from "js-yaml"; import { expect, test } from "vitest"; @@ -19,19 +19,19 @@ configs: file: ./web-config.yml `; -test("Add prefix to configs in services", () => { +test("Add suffix to configs in services", () => { const composeData = load(composeFile) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData?.services) { return; } - const services = addPrefixToConfigsInServices(composeData.services, prefix); + const services = addSuffixToConfigsInServices(composeData.services, suffix); const actualComposeData = { ...composeData, services }; expect(actualComposeData.services?.web?.configs).toContainEqual({ - source: `web-config-${prefix}`, + source: `web-config-${suffix}`, target: "/etc/nginx/nginx.conf", }); }); @@ -51,17 +51,17 @@ configs: file: ./web-config.yml `; -test("Add prefix to configs in services with single config", () => { +test("Add suffix to configs in services with single config", () => { const composeData = load( composeFileSingleServiceConfig, ) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData?.services) { return; } - const services = addPrefixToConfigsInServices(composeData.services, prefix); + const services = addSuffixToConfigsInServices(composeData.services, suffix); expect(services).toBeDefined(); for (const serviceKey of Object.keys(services)) { @@ -69,7 +69,7 @@ test("Add prefix to configs in services with single config", () => { if (serviceConfigs) { for (const config of serviceConfigs) { if (typeof config === "object") { - expect(config.source).toContain(`-${prefix}`); + expect(config.source).toContain(`-${suffix}`); } } } @@ -105,17 +105,17 @@ configs: file: ./common-config.yml `; -test("Add prefix to configs in services with multiple configs", () => { +test("Add suffix to configs in services with multiple configs", () => { const composeData = load( composeFileMultipleServicesConfigs, ) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData?.services) { return; } - const services = addPrefixToConfigsInServices(composeData.services, prefix); + const services = addSuffixToConfigsInServices(composeData.services, suffix); expect(services).toBeDefined(); for (const serviceKey of Object.keys(services)) { @@ -123,7 +123,7 @@ test("Add prefix to configs in services with multiple configs", () => { if (serviceConfigs) { for (const config of serviceConfigs) { if (typeof config === "object") { - expect(config.source).toContain(`-${prefix}`); + expect(config.source).toContain(`-${suffix}`); } } } @@ -179,17 +179,17 @@ services: `) as ComposeSpecification; -test("Add prefix to configs in services", () => { +test("Add suffix to configs in services", () => { const composeData = load(composeFileConfigServices) as ComposeSpecification; - const prefix = "testhash"; + const suffix = "testhash"; if (!composeData?.services) { return; } - const updatedComposeData = addPrefixToConfigsInServices( + const updatedComposeData = addSuffixToConfigsInServices( composeData.services, - prefix, + suffix, ); const actualComposeData = { ...composeData, services: updatedComposeData }; diff --git a/apps/dokploy/__test__/compose/config/config.test.ts b/apps/dokploy/__test__/compose/config/config.test.ts index 8f17ac86..4677fbe9 100644 --- a/apps/dokploy/__test__/compose/config/config.test.ts +++ b/apps/dokploy/__test__/compose/config/config.test.ts @@ -1,7 +1,7 @@ import { generateRandomHash } from "@/server/utils/docker/compose"; import { - addPrefixToAllConfigs, - addPrefixToConfigsRoot, + addSuffixToAllConfigs, + addSuffixToConfigsRoot, } from "@/server/utils/docker/compose/configs"; import type { ComposeSpecification } from "@/server/utils/docker/types"; import { load } from "js-yaml"; @@ -80,12 +80,12 @@ configs: file: ./db-config.yml `) as ComposeSpecification; -test("Add prefix to all configs in root and services", () => { +test("Add suffix to all configs in root and services", () => { const composeData = load(composeFileCombinedConfigs) as ComposeSpecification; - const prefix = "testhash"; + const suffix = "testhash"; - const updatedComposeData = addPrefixToAllConfigs(composeData, prefix); + const updatedComposeData = addSuffixToAllConfigs(composeData, suffix); expect(updatedComposeData).toEqual(expectedComposeFileCombinedConfigs); }); @@ -162,14 +162,14 @@ configs: file: ./db-config.yml `) as ComposeSpecification; -test("Add prefix to configs with environment and external", () => { +test("Add suffix to configs with environment and external", () => { const composeData = load( composeFileWithEnvAndExternal, ) as ComposeSpecification; - const prefix = "testhash"; + const suffix = "testhash"; - const updatedComposeData = addPrefixToAllConfigs(composeData, prefix); + const updatedComposeData = addSuffixToAllConfigs(composeData, suffix); expect(updatedComposeData).toEqual(expectedComposeFileWithEnvAndExternal); }); @@ -234,14 +234,14 @@ configs: file: ./db-config.yml `) as ComposeSpecification; -test("Add prefix to configs with template driver and labels", () => { +test("Add suffix to configs with template driver and labels", () => { const composeData = load( composeFileWithTemplateDriverAndLabels, ) as ComposeSpecification; - const prefix = "testhash"; + const suffix = "testhash"; - const updatedComposeData = addPrefixToAllConfigs(composeData, prefix); + const updatedComposeData = addSuffixToAllConfigs(composeData, suffix); expect(updatedComposeData).toEqual( expectedComposeFileWithTemplateDriverAndLabels, diff --git a/apps/dokploy/__test__/compose/network/network-root.test.ts b/apps/dokploy/__test__/compose/network/network-root.test.ts index 297f358f..b5156b17 100644 --- a/apps/dokploy/__test__/compose/network/network-root.test.ts +++ b/apps/dokploy/__test__/compose/network/network-root.test.ts @@ -1,5 +1,5 @@ import { generateRandomHash } from "@/server/utils/docker/compose"; -import { addPrefixToNetworksRoot } from "@/server/utils/docker/compose/network"; +import { addSuffixToNetworksRoot } from "@/server/utils/docker/compose/network"; import type { ComposeSpecification } from "@/server/utils/docker/types"; import { load } from "js-yaml"; import { expect, test } from "vitest"; @@ -35,19 +35,19 @@ test("Generate random hash with 8 characters", () => { expect(hash.length).toBe(8); }); -test("Add prefix to networks root property", () => { +test("Add suffix to networks root property", () => { const composeData = load(composeFile) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData?.networks) { return; } - const networks = addPrefixToNetworksRoot(composeData.networks, prefix); + const networks = addSuffixToNetworksRoot(composeData.networks, suffix); expect(networks).toBeDefined(); for (const volumeKey of Object.keys(networks)) { - expect(volumeKey).toContain(`-${prefix}`); + expect(volumeKey).toContain(`-${suffix}`); } }); @@ -79,19 +79,19 @@ networks: internal: true `; -test("Add prefix to advanced networks root property (2 TRY)", () => { +test("Add suffix to advanced networks root property (2 TRY)", () => { const composeData = load(composeFile2) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData?.networks) { return; } - const networks = addPrefixToNetworksRoot(composeData.networks, prefix); + const networks = addSuffixToNetworksRoot(composeData.networks, suffix); expect(networks).toBeDefined(); for (const networkKey of Object.keys(networks)) { - expect(networkKey).toContain(`-${prefix}`); + expect(networkKey).toContain(`-${suffix}`); } }); @@ -120,19 +120,19 @@ networks: external: true `; -test("Add prefix to networks with external properties", () => { +test("Add suffix to networks with external properties", () => { const composeData = load(composeFile3) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData?.networks) { return; } - const networks = addPrefixToNetworksRoot(composeData.networks, prefix); + const networks = addSuffixToNetworksRoot(composeData.networks, suffix); expect(networks).toBeDefined(); for (const networkKey of Object.keys(networks)) { - expect(networkKey).toContain(`-${prefix}`); + expect(networkKey).toContain(`-${suffix}`); } }); @@ -160,19 +160,19 @@ networks: external: true `; -test("Add prefix to networks with IPAM configurations", () => { +test("Add suffix to networks with IPAM configurations", () => { const composeData = load(composeFile4) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData?.networks) { return; } - const networks = addPrefixToNetworksRoot(composeData.networks, prefix); + const networks = addSuffixToNetworksRoot(composeData.networks, suffix); expect(networks).toBeDefined(); for (const networkKey of Object.keys(networks)) { - expect(networkKey).toContain(`-${prefix}`); + expect(networkKey).toContain(`-${suffix}`); } }); @@ -201,19 +201,19 @@ networks: external: true `; -test("Add prefix to networks with custom options", () => { +test("Add suffix to networks with custom options", () => { const composeData = load(composeFile5) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData?.networks) { return; } - const networks = addPrefixToNetworksRoot(composeData.networks, prefix); + const networks = addSuffixToNetworksRoot(composeData.networks, suffix); expect(networks).toBeDefined(); for (const networkKey of Object.keys(networks)) { - expect(networkKey).toContain(`-${prefix}`); + expect(networkKey).toContain(`-${suffix}`); } }); @@ -240,7 +240,7 @@ networks: external: true `; -// Expected compose file with static prefix `testhash` +// Expected compose file with static suffix `testhash` const expectedComposeFile6 = ` version: "3.8" @@ -264,15 +264,15 @@ networks: external: true `; -test("Add prefix to networks with static prefix", () => { +test("Add suffix to networks with static suffix", () => { const composeData = load(composeFile6) as ComposeSpecification; - const prefix = "testhash"; + const suffix = "testhash"; if (!composeData?.networks) { return; } - const networks = addPrefixToNetworksRoot(composeData.networks, prefix); + const networks = addSuffixToNetworksRoot(composeData.networks, suffix); const expectedComposeData = load( expectedComposeFile6, @@ -316,15 +316,15 @@ networks: external: true name: dokploy-network `; -test("It shoudn't add prefix to dokploy-network", () => { +test("It shoudn't add suffix to dokploy-network", () => { const composeData = load(composeFile7) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData?.networks) { return; } - const networks = addPrefixToNetworksRoot(composeData.networks, prefix); + const networks = addSuffixToNetworksRoot(composeData.networks, suffix); expect(networks).toBeDefined(); for (const networkKey of Object.keys(networks)) { diff --git a/apps/dokploy/__test__/compose/network/network-service.test.ts b/apps/dokploy/__test__/compose/network/network-service.test.ts index 6f96c11d..92890e17 100644 --- a/apps/dokploy/__test__/compose/network/network-service.test.ts +++ b/apps/dokploy/__test__/compose/network/network-service.test.ts @@ -1,5 +1,5 @@ import { generateRandomHash } from "@/server/utils/docker/compose"; -import { addPrefixToServiceNetworks } from "@/server/utils/docker/compose/network"; +import { addSuffixToServiceNetworks } from "@/server/utils/docker/compose/network"; import type { ComposeSpecification } from "@/server/utils/docker/types"; import { load } from "js-yaml"; import { expect, test } from "vitest"; @@ -20,30 +20,30 @@ services: - backend `; -test("Add prefix to networks in services", () => { +test("Add suffix to networks in services", () => { const composeData = load(composeFile) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData?.services) { return; } - const services = addPrefixToServiceNetworks(composeData.services, prefix); + const services = addSuffixToServiceNetworks(composeData.services, suffix); const actualComposeData = { ...composeData, services }; expect(actualComposeData?.services?.web?.networks).toContain( - `frontend-${prefix}`, + `frontend-${suffix}`, ); expect(actualComposeData?.services?.api?.networks).toContain( - `backend-${prefix}`, + `backend-${suffix}`, ); const apiNetworks = actualComposeData?.services?.api?.networks; expect(apiNetworks).toBeDefined(); expect(actualComposeData?.services?.api?.networks).toContain( - `backend-${prefix}`, + `backend-${suffix}`, ); }); @@ -64,26 +64,26 @@ networks: driver: bridge `; -test("Add prefix to networks in services with aliases", () => { +test("Add suffix to networks in services with aliases", () => { const composeData = load(composeFile2) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData?.services) { return; } - const services = addPrefixToServiceNetworks(composeData.services, prefix); + const services = addSuffixToServiceNetworks(composeData.services, suffix); const actualComposeData = { ...composeData, services }; expect(actualComposeData.services?.api?.networks).toHaveProperty( - `frontend-${prefix}`, + `frontend-${suffix}`, ); const networkConfig = actualComposeData?.services?.api?.networks as { [key: string]: { aliases?: string[] }; }; - expect(networkConfig[`frontend-${prefix}`]).toBeDefined(); - expect(networkConfig[`frontend-${prefix}`]?.aliases).toContain("api"); + expect(networkConfig[`frontend-${suffix}`]).toBeDefined(); + expect(networkConfig[`frontend-${suffix}`]?.aliases).toContain("api"); expect(actualComposeData.services?.api?.networks).not.toHaveProperty( "frontend-ash", @@ -104,19 +104,19 @@ networks: driver: bridge `; -test("Add prefix to networks in services (Object with simple networks)", () => { +test("Add suffix to networks in services (Object with simple networks)", () => { const composeData = load(composeFile3) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData?.services) { return; } - const services = addPrefixToServiceNetworks(composeData.services, prefix); + const services = addSuffixToServiceNetworks(composeData.services, suffix); const actualComposeData = { ...composeData, services }; expect(actualComposeData.services?.redis?.networks).toHaveProperty( - `backend-${prefix}`, + `backend-${suffix}`, ); }); @@ -150,36 +150,36 @@ networks: driver: bridge `; -test("Add prefix to networks in services (combined case)", () => { +test("Add suffix to networks in services (combined case)", () => { const composeData = load(composeFileCombined) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData?.services) { return; } - const services = addPrefixToServiceNetworks(composeData.services, prefix); + const services = addSuffixToServiceNetworks(composeData.services, suffix); const actualComposeData = { ...composeData, services }; // Caso 1: ListOfStrings expect(actualComposeData.services?.web?.networks).toContain( - `frontend-${prefix}`, + `frontend-${suffix}`, ); expect(actualComposeData.services?.web?.networks).toContain( - `backend-${prefix}`, + `backend-${suffix}`, ); // Caso 2: Objeto con aliases const apiNetworks = actualComposeData.services?.api?.networks as { [key: string]: unknown; }; - expect(apiNetworks).toHaveProperty(`frontend-${prefix}`); - expect(apiNetworks[`frontend-${prefix}`]).toBeDefined(); + expect(apiNetworks).toHaveProperty(`frontend-${suffix}`); + expect(apiNetworks[`frontend-${suffix}`]).toBeDefined(); expect(apiNetworks).not.toHaveProperty("frontend"); // Caso 3: Objeto con redes simples const redisNetworks = actualComposeData.services?.redis?.networks; - expect(redisNetworks).toHaveProperty(`backend-${prefix}`); + expect(redisNetworks).toHaveProperty(`backend-${suffix}`); expect(redisNetworks).not.toHaveProperty("backend"); }); @@ -193,15 +193,15 @@ services: - dokploy-network `; -test("It shoudn't add prefix to dokploy-network in services", () => { +test("It shoudn't add suffix to dokploy-network in services", () => { const composeData = load(composeFile7) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData?.services) { return; } - const networks = addPrefixToServiceNetworks(composeData.services, prefix); + const networks = addSuffixToServiceNetworks(composeData.services, suffix); const service = networks.web; expect(service).toBeDefined(); @@ -242,15 +242,15 @@ services: `; -test("It shoudn't add prefix to dokploy-network in services multiples cases", () => { +test("It shoudn't add suffix to dokploy-network in services multiples cases", () => { const composeData = load(composeFile8) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData?.services) { return; } - const networks = addPrefixToServiceNetworks(composeData.services, prefix); + const networks = addSuffixToServiceNetworks(composeData.services, suffix); const service = networks.web; const api = networks.api; const redis = networks.redis; diff --git a/apps/dokploy/__test__/compose/network/network.test.ts b/apps/dokploy/__test__/compose/network/network.test.ts index 354fd650..c8a9e9f3 100644 --- a/apps/dokploy/__test__/compose/network/network.test.ts +++ b/apps/dokploy/__test__/compose/network/network.test.ts @@ -1,9 +1,9 @@ import { generateRandomHash } from "@/server/utils/docker/compose"; import { - addPrefixToAllNetworks, - addPrefixToServiceNetworks, + addSuffixToAllNetworks, + addSuffixToServiceNetworks, } from "@/server/utils/docker/compose/network"; -import { addPrefixToNetworksRoot } from "@/server/utils/docker/compose/network"; +import { addSuffixToNetworksRoot } from "@/server/utils/docker/compose/network"; import type { ComposeSpecification } from "@/server/utils/docker/types"; import { load } from "js-yaml"; import { expect, test } from "vitest"; @@ -38,54 +38,54 @@ networks: driver: bridge `; -test("Add prefix to networks in services and root (combined case)", () => { +test("Add suffix to networks in services and root (combined case)", () => { const composeData = load(composeFileCombined) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); // Prefijo para redes definidas en el root if (composeData.networks) { - composeData.networks = addPrefixToNetworksRoot( + composeData.networks = addSuffixToNetworksRoot( composeData.networks, - prefix, + suffix, ); } // Prefijo para redes definidas en los servicios if (composeData.services) { - composeData.services = addPrefixToServiceNetworks( + composeData.services = addSuffixToServiceNetworks( composeData.services, - prefix, + suffix, ); } const actualComposeData = { ...composeData }; // Verificar redes en root - expect(actualComposeData.networks).toHaveProperty(`frontend-${prefix}`); - expect(actualComposeData.networks).toHaveProperty(`backend-${prefix}`); + expect(actualComposeData.networks).toHaveProperty(`frontend-${suffix}`); + expect(actualComposeData.networks).toHaveProperty(`backend-${suffix}`); expect(actualComposeData.networks).not.toHaveProperty("frontend"); expect(actualComposeData.networks).not.toHaveProperty("backend"); // Caso 1: ListOfStrings expect(actualComposeData.services?.web?.networks).toContain( - `frontend-${prefix}`, + `frontend-${suffix}`, ); expect(actualComposeData.services?.web?.networks).toContain( - `backend-${prefix}`, + `backend-${suffix}`, ); // Caso 2: Objeto con aliases const apiNetworks = actualComposeData.services?.api?.networks as { [key: string]: { aliases?: string[] }; }; - expect(apiNetworks).toHaveProperty(`frontend-${prefix}`); - expect(apiNetworks?.[`frontend-${prefix}`]?.aliases).toContain("api"); + expect(apiNetworks).toHaveProperty(`frontend-${suffix}`); + expect(apiNetworks?.[`frontend-${suffix}`]?.aliases).toContain("api"); expect(apiNetworks).not.toHaveProperty("frontend"); // Caso 3: Objeto con redes simples const redisNetworks = actualComposeData.services?.redis?.networks; - expect(redisNetworks).toHaveProperty(`backend-${prefix}`); + expect(redisNetworks).toHaveProperty(`backend-${suffix}`); expect(redisNetworks).not.toHaveProperty("backend"); }); @@ -119,14 +119,14 @@ networks: driver: bridge `); -test("Add prefix to networks in compose file", () => { +test("Add suffix to networks in compose file", () => { const composeData = load(composeFileCombined) as ComposeSpecification; - const prefix = "testhash"; + const suffix = "testhash"; if (!composeData?.networks) { return; } - const updatedComposeData = addPrefixToAllNetworks(composeData, prefix); + const updatedComposeData = addSuffixToAllNetworks(composeData, suffix); expect(updatedComposeData).toEqual(expectedComposeFile); }); @@ -181,11 +181,11 @@ networks: driver: bridge `); -test("Add prefix to networks in compose file with external and internal networks", () => { +test("Add suffix to networks in compose file with external and internal networks", () => { const composeData = load(composeFile2) as ComposeSpecification; - const prefix = "testhash"; - const updatedComposeData = addPrefixToAllNetworks(composeData, prefix); + const suffix = "testhash"; + const updatedComposeData = addSuffixToAllNetworks(composeData, suffix); expect(updatedComposeData).toEqual(expectedComposeFile2); }); @@ -246,11 +246,11 @@ networks: com.docker.network.bridge.enable_icc: "true" `); -test("Add prefix to networks in compose file with multiple services and complex network configurations", () => { +test("Add suffix to networks in compose file with multiple services and complex network configurations", () => { const composeData = load(composeFile3) as ComposeSpecification; - const prefix = "testhash"; - const updatedComposeData = addPrefixToAllNetworks(composeData, prefix); + const suffix = "testhash"; + const updatedComposeData = addSuffixToAllNetworks(composeData, suffix); expect(updatedComposeData).toEqual(expectedComposeFile3); }); @@ -325,11 +325,11 @@ networks: `); -test("Expect don't add prefix to dokploy-network in compose file with multiple services and complex network configurations", () => { +test("Expect don't add suffix to dokploy-network in compose file with multiple services and complex network configurations", () => { const composeData = load(composeFile4) as ComposeSpecification; - const prefix = "testhash"; - const updatedComposeData = addPrefixToAllNetworks(composeData, prefix); + const suffix = "testhash"; + const updatedComposeData = addSuffixToAllNetworks(composeData, suffix); console.log(updatedComposeData); expect(updatedComposeData).toEqual(expectedComposeFile4); }); diff --git a/apps/dokploy/__test__/compose/secrets/secret-root.test.ts b/apps/dokploy/__test__/compose/secrets/secret-root.test.ts index 61f9f818..3185b966 100644 --- a/apps/dokploy/__test__/compose/secrets/secret-root.test.ts +++ b/apps/dokploy/__test__/compose/secrets/secret-root.test.ts @@ -1,5 +1,5 @@ import { generateRandomHash } from "@/server/utils/docker/compose"; -import { addPrefixToSecretsRoot } from "@/server/utils/docker/compose/secrets"; +import { addSuffixToSecretsRoot } from "@/server/utils/docker/compose/secrets"; import type { ComposeSpecification } from "@/server/utils/docker/types"; import { dump, load } from "js-yaml"; import { expect, test } from "vitest"; @@ -23,18 +23,18 @@ secrets: file: ./db_password.txt `; -test("Add prefix to secrets in root property", () => { +test("Add suffix to secrets in root property", () => { const composeData = load(composeFileSecretsRoot) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData?.secrets) { return; } - const secrets = addPrefixToSecretsRoot(composeData.secrets, prefix); + const secrets = addSuffixToSecretsRoot(composeData.secrets, suffix); expect(secrets).toBeDefined(); if (secrets) { for (const secretKey of Object.keys(secrets)) { - expect(secretKey).toContain(`-${prefix}`); + expect(secretKey).toContain(`-${suffix}`); expect(secrets[secretKey]).toBeDefined(); } } @@ -52,19 +52,19 @@ secrets: file: ./api_key.txt `; -test("Add prefix to secrets in root property (Test 1)", () => { +test("Add suffix to secrets in root property (Test 1)", () => { const composeData = load(composeFileSecretsRoot1) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData?.secrets) { return; } - const secrets = addPrefixToSecretsRoot(composeData.secrets, prefix); + const secrets = addSuffixToSecretsRoot(composeData.secrets, suffix); expect(secrets).toBeDefined(); if (secrets) { for (const secretKey of Object.keys(secrets)) { - expect(secretKey).toContain(`-${prefix}`); + expect(secretKey).toContain(`-${suffix}`); expect(secrets[secretKey]).toBeDefined(); } } @@ -84,19 +84,19 @@ secrets: external: true `; -test("Add prefix to secrets in root property (Test 2)", () => { +test("Add suffix to secrets in root property (Test 2)", () => { const composeData = load(composeFileSecretsRoot2) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData?.secrets) { return; } - const secrets = addPrefixToSecretsRoot(composeData.secrets, prefix); + const secrets = addSuffixToSecretsRoot(composeData.secrets, suffix); expect(secrets).toBeDefined(); if (secrets) { for (const secretKey of Object.keys(secrets)) { - expect(secretKey).toContain(`-${prefix}`); + expect(secretKey).toContain(`-${suffix}`); expect(secrets[secretKey]).toBeDefined(); } } diff --git a/apps/dokploy/__test__/compose/secrets/secret-services.test.ts b/apps/dokploy/__test__/compose/secrets/secret-services.test.ts index 1a58314d..4a3df137 100644 --- a/apps/dokploy/__test__/compose/secrets/secret-services.test.ts +++ b/apps/dokploy/__test__/compose/secrets/secret-services.test.ts @@ -1,5 +1,5 @@ import { generateRandomHash } from "@/server/utils/docker/compose"; -import { addPrefixToSecretsInServices } from "@/server/utils/docker/compose/secrets"; +import { addSuffixToSecretsInServices } from "@/server/utils/docker/compose/secrets"; import type { ComposeSpecification } from "@/server/utils/docker/types"; import { load } from "js-yaml"; import { expect, test } from "vitest"; @@ -18,22 +18,22 @@ secrets: file: ./db_password.txt `; -test("Add prefix to secrets in services", () => { +test("Add suffix to secrets in services", () => { const composeData = load(composeFileSecretsServices) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData.services) { return; } - const updatedComposeData = addPrefixToSecretsInServices( + const updatedComposeData = addSuffixToSecretsInServices( composeData.services, - prefix, + suffix, ); const actualComposeData = { ...composeData, services: updatedComposeData }; expect(actualComposeData.services?.db?.secrets).toContain( - `db_password-${prefix}`, + `db_password-${suffix}`, ); }); @@ -51,22 +51,22 @@ secrets: file: ./app_secret.txt `; -test("Add prefix to secrets in services (Test 1)", () => { +test("Add suffix to secrets in services (Test 1)", () => { const composeData = load(composeFileSecretsServices1) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData.services) { return; } - const updatedComposeData = addPrefixToSecretsInServices( + const updatedComposeData = addSuffixToSecretsInServices( composeData.services, - prefix, + suffix, ); const actualComposeData = { ...composeData, services: updatedComposeData }; expect(actualComposeData.services?.app?.secrets).toContain( - `app_secret-${prefix}`, + `app_secret-${suffix}`, ); }); @@ -90,24 +90,24 @@ secrets: file: ./frontend_secret.txt `; -test("Add prefix to secrets in services (Test 2)", () => { +test("Add suffix to secrets in services (Test 2)", () => { const composeData = load(composeFileSecretsServices2) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData.services) { return; } - const updatedComposeData = addPrefixToSecretsInServices( + const updatedComposeData = addSuffixToSecretsInServices( composeData.services, - prefix, + suffix, ); const actualComposeData = { ...composeData, services: updatedComposeData }; expect(actualComposeData.services?.backend?.secrets).toContain( - `backend_secret-${prefix}`, + `backend_secret-${suffix}`, ); expect(actualComposeData.services?.frontend?.secrets).toContain( - `frontend_secret-${prefix}`, + `frontend_secret-${suffix}`, ); }); diff --git a/apps/dokploy/__test__/compose/secrets/secret.test.ts b/apps/dokploy/__test__/compose/secrets/secret.test.ts index 7922eb20..ea3552f3 100644 --- a/apps/dokploy/__test__/compose/secrets/secret.test.ts +++ b/apps/dokploy/__test__/compose/secrets/secret.test.ts @@ -1,4 +1,4 @@ -import { addPrefixToAllSecrets } from "@/server/utils/docker/compose/secrets"; +import { addSuffixToAllSecrets } from "@/server/utils/docker/compose/secrets"; import type { ComposeSpecification } from "@/server/utils/docker/types"; import { load } from "js-yaml"; import { expect, test } from "vitest"; @@ -47,11 +47,11 @@ secrets: file: ./app_secret.txt `) as ComposeSpecification; -test("Add prefix to all secrets", () => { +test("Add suffix to all secrets", () => { const composeData = load(composeFileCombinedSecrets) as ComposeSpecification; - const prefix = "testhash"; + const suffix = "testhash"; - const updatedComposeData = addPrefixToAllSecrets(composeData, prefix); + const updatedComposeData = addSuffixToAllSecrets(composeData, suffix); expect(updatedComposeData).toEqual(expectedComposeFileCombinedSecrets); }); @@ -98,11 +98,11 @@ secrets: file: ./cache_secret.txt `) as ComposeSpecification; -test("Add prefix to all secrets (3rd Case)", () => { +test("Add suffix to all secrets (3rd Case)", () => { const composeData = load(composeFileCombinedSecrets3) as ComposeSpecification; - const prefix = "testhash"; + const suffix = "testhash"; - const updatedComposeData = addPrefixToAllSecrets(composeData, prefix); + const updatedComposeData = addSuffixToAllSecrets(composeData, suffix); expect(updatedComposeData).toEqual(expectedComposeFileCombinedSecrets3); }); @@ -149,11 +149,11 @@ secrets: file: ./db_password.txt `) as ComposeSpecification; -test("Add prefix to all secrets (4th Case)", () => { +test("Add suffix to all secrets (4th Case)", () => { const composeData = load(composeFileCombinedSecrets4) as ComposeSpecification; - const prefix = "testhash"; + const suffix = "testhash"; - const updatedComposeData = addPrefixToAllSecrets(composeData, prefix); + const updatedComposeData = addSuffixToAllSecrets(composeData, suffix); expect(updatedComposeData).toEqual(expectedComposeFileCombinedSecrets4); }); diff --git a/apps/dokploy/__test__/compose/service/service-container-name.test.ts b/apps/dokploy/__test__/compose/service/service-container-name.test.ts index 9f5fe9ed..623b5381 100644 --- a/apps/dokploy/__test__/compose/service/service-container-name.test.ts +++ b/apps/dokploy/__test__/compose/service/service-container-name.test.ts @@ -1,5 +1,5 @@ import { generateRandomHash } from "@/server/utils/docker/compose"; -import { addPrefixToServiceNames } from "@/server/utils/docker/compose/service"; +import { addSuffixToServiceNames } from "@/server/utils/docker/compose/service"; import type { ComposeSpecification } from "@/server/utils/docker/types"; import { load } from "js-yaml"; import { expect, test } from "vitest"; @@ -27,33 +27,33 @@ test("Generate random hash with 8 characters", () => { expect(hash.length).toBe(8); }); -test("Add prefix to service names with container_name in compose file", () => { +test("Add suffix to service names with container_name in compose file", () => { const composeData = load(composeFile) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData.services) { return; } - const updatedComposeData = addPrefixToServiceNames( + const updatedComposeData = addSuffixToServiceNames( composeData.services, - prefix, + suffix, ); const actualComposeData = { ...composeData, services: updatedComposeData }; // Verificar que el nombre del contenedor ha cambiado correctamente - expect(actualComposeData.services?.[`web-${prefix}`]?.container_name).toBe( - `web_container-${prefix}`, + expect(actualComposeData.services?.[`web-${suffix}`]?.container_name).toBe( + `web_container-${suffix}`, ); // Verificar que la nueva clave del servicio tiene el prefijo y la vieja clave no existe - expect(actualComposeData.services).toHaveProperty(`web-${prefix}`); + expect(actualComposeData.services).toHaveProperty(`web-${suffix}`); expect(actualComposeData.services).not.toHaveProperty("web"); // Verificar que la configuración de la imagen sigue igual - expect(actualComposeData.services?.[`web-${prefix}`]?.image).toBe( + expect(actualComposeData.services?.[`web-${suffix}`]?.image).toBe( "nginx:latest", ); - expect(actualComposeData.services?.[`api-${prefix}`]?.image).toBe( + expect(actualComposeData.services?.[`api-${suffix}`]?.image).toBe( "myapi:latest", ); }); diff --git a/apps/dokploy/__test__/compose/service/service-depends-on.test.ts b/apps/dokploy/__test__/compose/service/service-depends-on.test.ts index e339ee65..02d88591 100644 --- a/apps/dokploy/__test__/compose/service/service-depends-on.test.ts +++ b/apps/dokploy/__test__/compose/service/service-depends-on.test.ts @@ -1,5 +1,5 @@ import { generateRandomHash } from "@/server/utils/docker/compose"; -import { addPrefixToServiceNames } from "@/server/utils/docker/compose/service"; +import { addSuffixToServiceNames } from "@/server/utils/docker/compose/service"; import type { ComposeSpecification } from "@/server/utils/docker/types"; import { load } from "js-yaml"; import { expect, test } from "vitest"; @@ -32,49 +32,49 @@ networks: driver: bridge `; -test("Add prefix to service names with depends_on (array) in compose file", () => { +test("Add suffix to service names with depends_on (array) in compose file", () => { const composeData = load(composeFile4) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData.services) { return; } - const updatedComposeData = addPrefixToServiceNames( + const updatedComposeData = addSuffixToServiceNames( composeData.services, - prefix, + suffix, ); const actualComposeData = { ...composeData, services: updatedComposeData }; // Verificar que la nueva clave del servicio tiene el prefijo y la vieja clave no existe - expect(actualComposeData.services).toHaveProperty(`web-${prefix}`); + expect(actualComposeData.services).toHaveProperty(`web-${suffix}`); expect(actualComposeData.services).not.toHaveProperty("web"); // Verificar que la configuración de la imagen sigue igual - expect(actualComposeData.services?.[`web-${prefix}`]?.image).toBe( + expect(actualComposeData.services?.[`web-${suffix}`]?.image).toBe( "nginx:latest", ); - expect(actualComposeData.services?.[`api-${prefix}`]?.image).toBe( + expect(actualComposeData.services?.[`api-${suffix}`]?.image).toBe( "myapi:latest", ); // Verificar que los nombres en depends_on tienen el prefijo - expect(actualComposeData.services?.[`web-${prefix}`]?.depends_on).toContain( - `db-${prefix}`, + expect(actualComposeData.services?.[`web-${suffix}`]?.depends_on).toContain( + `db-${suffix}`, ); - expect(actualComposeData.services?.[`web-${prefix}`]?.depends_on).toContain( - `api-${prefix}`, + expect(actualComposeData.services?.[`web-${suffix}`]?.depends_on).toContain( + `api-${suffix}`, ); // Verificar que los servicios `db` y `api` también tienen el prefijo - expect(actualComposeData.services).toHaveProperty(`db-${prefix}`); + expect(actualComposeData.services).toHaveProperty(`db-${suffix}`); expect(actualComposeData.services).not.toHaveProperty("db"); - expect(actualComposeData.services?.[`db-${prefix}`]?.image).toBe( + expect(actualComposeData.services?.[`db-${suffix}`]?.image).toBe( "postgres:latest", ); - expect(actualComposeData.services).toHaveProperty(`api-${prefix}`); + expect(actualComposeData.services).toHaveProperty(`api-${suffix}`); expect(actualComposeData.services).not.toHaveProperty("api"); - expect(actualComposeData.services?.[`api-${prefix}`]?.image).toBe( + expect(actualComposeData.services?.[`api-${suffix}`]?.image).toBe( "myapi:latest", ); }); @@ -102,49 +102,49 @@ networks: driver: bridge `; -test("Add prefix to service names with depends_on (object) in compose file", () => { +test("Add suffix to service names with depends_on (object) in compose file", () => { const composeData = load(composeFile5) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData.services) { return; } - const updatedComposeData = addPrefixToServiceNames( + const updatedComposeData = addSuffixToServiceNames( composeData.services, - prefix, + suffix, ); const actualComposeData = { ...composeData, services: updatedComposeData }; // Verificar que la nueva clave del servicio tiene el prefijo y la vieja clave no existe - expect(actualComposeData.services).toHaveProperty(`web-${prefix}`); + expect(actualComposeData.services).toHaveProperty(`web-${suffix}`); expect(actualComposeData.services).not.toHaveProperty("web"); // Verificar que la configuración de la imagen sigue igual - expect(actualComposeData.services?.[`web-${prefix}`]?.image).toBe( + expect(actualComposeData.services?.[`web-${suffix}`]?.image).toBe( "nginx:latest", ); - expect(actualComposeData.services?.[`api-${prefix}`]?.image).toBe( + expect(actualComposeData.services?.[`api-${suffix}`]?.image).toBe( "myapi:latest", ); // Verificar que los nombres en depends_on tienen el prefijo - const webDependsOn = actualComposeData.services?.[`web-${prefix}`] + const webDependsOn = actualComposeData.services?.[`web-${suffix}`] ?.depends_on as Record; - expect(webDependsOn).toHaveProperty(`db-${prefix}`); - expect(webDependsOn).toHaveProperty(`api-${prefix}`); - expect(webDependsOn[`db-${prefix}`].condition).toBe("service_healthy"); - expect(webDependsOn[`api-${prefix}`].condition).toBe("service_started"); + expect(webDependsOn).toHaveProperty(`db-${suffix}`); + expect(webDependsOn).toHaveProperty(`api-${suffix}`); + expect(webDependsOn[`db-${suffix}`].condition).toBe("service_healthy"); + expect(webDependsOn[`api-${suffix}`].condition).toBe("service_started"); // Verificar que los servicios `db` y `api` también tienen el prefijo - expect(actualComposeData.services).toHaveProperty(`db-${prefix}`); + expect(actualComposeData.services).toHaveProperty(`db-${suffix}`); expect(actualComposeData.services).not.toHaveProperty("db"); - expect(actualComposeData.services?.[`db-${prefix}`]?.image).toBe( + expect(actualComposeData.services?.[`db-${suffix}`]?.image).toBe( "postgres:latest", ); - expect(actualComposeData.services).toHaveProperty(`api-${prefix}`); + expect(actualComposeData.services).toHaveProperty(`api-${suffix}`); expect(actualComposeData.services).not.toHaveProperty("api"); - expect(actualComposeData.services?.[`api-${prefix}`]?.image).toBe( + expect(actualComposeData.services?.[`api-${suffix}`]?.image).toBe( "myapi:latest", ); }); diff --git a/apps/dokploy/__test__/compose/service/service-extends.test.ts b/apps/dokploy/__test__/compose/service/service-extends.test.ts index e8f31aab..5590005b 100644 --- a/apps/dokploy/__test__/compose/service/service-extends.test.ts +++ b/apps/dokploy/__test__/compose/service/service-extends.test.ts @@ -1,5 +1,5 @@ import { generateRandomHash } from "@/server/utils/docker/compose"; -import { addPrefixToServiceNames } from "@/server/utils/docker/compose/service"; +import { addSuffixToServiceNames } from "@/server/utils/docker/compose/service"; import type { ComposeSpecification } from "@/server/utils/docker/types"; import { load } from "js-yaml"; import { expect, test } from "vitest"; @@ -30,41 +30,41 @@ networks: driver: bridge `; -test("Add prefix to service names with extends (string) in compose file", () => { +test("Add suffix to service names with extends (string) in compose file", () => { const composeData = load(composeFile6) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData.services) { return; } - const updatedComposeData = addPrefixToServiceNames( + const updatedComposeData = addSuffixToServiceNames( composeData.services, - prefix, + suffix, ); const actualComposeData = { ...composeData, services: updatedComposeData }; // Verificar que la nueva clave del servicio tiene el prefijo y la vieja clave no existe - expect(actualComposeData.services).toHaveProperty(`web-${prefix}`); + expect(actualComposeData.services).toHaveProperty(`web-${suffix}`); expect(actualComposeData.services).not.toHaveProperty("web"); // Verificar que la configuración de la imagen sigue igual - expect(actualComposeData.services?.[`web-${prefix}`]?.image).toBe( + expect(actualComposeData.services?.[`web-${suffix}`]?.image).toBe( "nginx:latest", ); - expect(actualComposeData.services?.[`api-${prefix}`]?.image).toBe( + expect(actualComposeData.services?.[`api-${suffix}`]?.image).toBe( "myapi:latest", ); // Verificar que el nombre en extends tiene el prefijo - expect(actualComposeData.services?.[`web-${prefix}`]?.extends).toBe( - `base_service-${prefix}`, + expect(actualComposeData.services?.[`web-${suffix}`]?.extends).toBe( + `base_service-${suffix}`, ); // Verificar que el servicio `base_service` también tiene el prefijo - expect(actualComposeData.services).toHaveProperty(`base_service-${prefix}`); + expect(actualComposeData.services).toHaveProperty(`base_service-${suffix}`); expect(actualComposeData.services).not.toHaveProperty("base_service"); - expect(actualComposeData.services?.[`base_service-${prefix}`]?.image).toBe( + expect(actualComposeData.services?.[`base_service-${suffix}`]?.image).toBe( "base:latest", ); }); @@ -90,42 +90,42 @@ networks: driver: bridge `; -test("Add prefix to service names with extends (object) in compose file", () => { +test("Add suffix to service names with extends (object) in compose file", () => { const composeData = load(composeFile7) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData.services) { return; } - const updatedComposeData = addPrefixToServiceNames( + const updatedComposeData = addSuffixToServiceNames( composeData.services, - prefix, + suffix, ); const actualComposeData = { ...composeData, services: updatedComposeData }; // Verificar que la nueva clave del servicio tiene el prefijo y la vieja clave no existe - expect(actualComposeData.services).toHaveProperty(`web-${prefix}`); + expect(actualComposeData.services).toHaveProperty(`web-${suffix}`); expect(actualComposeData.services).not.toHaveProperty("web"); // Verificar que la configuración de la imagen sigue igual - expect(actualComposeData.services?.[`web-${prefix}`]?.image).toBe( + expect(actualComposeData.services?.[`web-${suffix}`]?.image).toBe( "nginx:latest", ); - expect(actualComposeData.services?.[`api-${prefix}`]?.image).toBe( + expect(actualComposeData.services?.[`api-${suffix}`]?.image).toBe( "myapi:latest", ); // Verificar que el nombre en extends.service tiene el prefijo - const webExtends = actualComposeData.services?.[`web-${prefix}`]?.extends; + const webExtends = actualComposeData.services?.[`web-${suffix}`]?.extends; if (typeof webExtends !== "string") { - expect(webExtends?.service).toBe(`base_service-${prefix}`); + expect(webExtends?.service).toBe(`base_service-${suffix}`); } // Verificar que el servicio `base_service` también tiene el prefijo - expect(actualComposeData.services).toHaveProperty(`base_service-${prefix}`); + expect(actualComposeData.services).toHaveProperty(`base_service-${suffix}`); expect(actualComposeData.services).not.toHaveProperty("base_service"); - expect(actualComposeData.services?.[`base_service-${prefix}`]?.image).toBe( + expect(actualComposeData.services?.[`base_service-${suffix}`]?.image).toBe( "base:latest", ); }); diff --git a/apps/dokploy/__test__/compose/service/service-links.test.ts b/apps/dokploy/__test__/compose/service/service-links.test.ts index 08252649..70697e29 100644 --- a/apps/dokploy/__test__/compose/service/service-links.test.ts +++ b/apps/dokploy/__test__/compose/service/service-links.test.ts @@ -1,5 +1,5 @@ import { generateRandomHash } from "@/server/utils/docker/compose"; -import { addPrefixToServiceNames } from "@/server/utils/docker/compose/service"; +import { addSuffixToServiceNames } from "@/server/utils/docker/compose/service"; import type { ComposeSpecification } from "@/server/utils/docker/types"; import { load } from "js-yaml"; import { expect, test } from "vitest"; @@ -31,46 +31,46 @@ networks: driver: bridge `; -test("Add prefix to service names with links in compose file", () => { +test("Add suffix to service names with links in compose file", () => { const composeData = load(composeFile2) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData.services) { return; } - const updatedComposeData = addPrefixToServiceNames( + const updatedComposeData = addSuffixToServiceNames( composeData.services, - prefix, + suffix, ); const actualComposeData = { ...composeData, services: updatedComposeData }; // Verificar que la nueva clave del servicio tiene el prefijo y la vieja clave no existe - expect(actualComposeData.services).toHaveProperty(`web-${prefix}`); + expect(actualComposeData.services).toHaveProperty(`web-${suffix}`); expect(actualComposeData.services).not.toHaveProperty("web"); // Verificar que la configuración de la imagen sigue igual - expect(actualComposeData.services?.[`web-${prefix}`]?.image).toBe( + expect(actualComposeData.services?.[`web-${suffix}`]?.image).toBe( "nginx:latest", ); - expect(actualComposeData.services?.[`api-${prefix}`]?.image).toBe( + expect(actualComposeData.services?.[`api-${suffix}`]?.image).toBe( "myapi:latest", ); // Verificar que los nombres en links tienen el prefijo - expect(actualComposeData.services?.[`web-${prefix}`]?.links).toContain( - `db-${prefix}`, + expect(actualComposeData.services?.[`web-${suffix}`]?.links).toContain( + `db-${suffix}`, ); // Verificar que los servicios `db` y `api` también tienen el prefijo - expect(actualComposeData.services).toHaveProperty(`db-${prefix}`); + expect(actualComposeData.services).toHaveProperty(`db-${suffix}`); expect(actualComposeData.services).not.toHaveProperty("db"); - expect(actualComposeData.services?.[`db-${prefix}`]?.image).toBe( + expect(actualComposeData.services?.[`db-${suffix}`]?.image).toBe( "postgres:latest", ); - expect(actualComposeData.services).toHaveProperty(`api-${prefix}`); + expect(actualComposeData.services).toHaveProperty(`api-${suffix}`); expect(actualComposeData.services).not.toHaveProperty("api"); - expect(actualComposeData.services?.[`api-${prefix}`]?.image).toBe( + expect(actualComposeData.services?.[`api-${suffix}`]?.image).toBe( "myapi:latest", ); }); diff --git a/apps/dokploy/__test__/compose/service/service-names.test.ts b/apps/dokploy/__test__/compose/service/service-names.test.ts index 0f071b2e..95910ef0 100644 --- a/apps/dokploy/__test__/compose/service/service-names.test.ts +++ b/apps/dokploy/__test__/compose/service/service-names.test.ts @@ -1,5 +1,5 @@ import { generateRandomHash } from "@/server/utils/docker/compose"; -import { addPrefixToServiceNames } from "@/server/utils/docker/compose/service"; +import { addSuffixToServiceNames } from "@/server/utils/docker/compose/service"; import type { ComposeSpecification } from "@/server/utils/docker/types"; import { load } from "js-yaml"; import { expect, test } from "vitest"; @@ -26,23 +26,23 @@ networks: driver: bridge `; -test("Add prefix to service names in compose file", () => { +test("Add suffix to service names in compose file", () => { const composeData = load(composeFile) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData.services) { return; } - const updatedComposeData = addPrefixToServiceNames( + const updatedComposeData = addSuffixToServiceNames( composeData.services, - prefix, + suffix, ); const actualComposeData = { ...composeData, services: updatedComposeData }; // Verificar que los nombres de los servicios han cambiado correctamente - expect(actualComposeData.services).toHaveProperty(`web-${prefix}`); - expect(actualComposeData.services).toHaveProperty(`api-${prefix}`); + expect(actualComposeData.services).toHaveProperty(`web-${suffix}`); + expect(actualComposeData.services).toHaveProperty(`api-${suffix}`); // Verificar que las claves originales no existen expect(actualComposeData.services).not.toHaveProperty("web"); expect(actualComposeData.services).not.toHaveProperty("api"); diff --git a/apps/dokploy/__test__/compose/service/service.test.ts b/apps/dokploy/__test__/compose/service/service.test.ts index 113576ae..02ccaea2 100644 --- a/apps/dokploy/__test__/compose/service/service.test.ts +++ b/apps/dokploy/__test__/compose/service/service.test.ts @@ -1,6 +1,6 @@ import { - addPrefixToAllServiceNames, - addPrefixToServiceNames, + addSuffixToAllServiceNames, + addSuffixToServiceNames, } from "@/server/utils/docker/compose/service"; import type { ComposeSpecification } from "@/server/utils/docker/types"; import { load } from "js-yaml"; @@ -70,17 +70,17 @@ networks: driver: bridge `); -test("Add prefix to all service names in compose file", () => { +test("Add suffix to all service names in compose file", () => { const composeData = load(composeFileCombinedAllCases) as ComposeSpecification; - const prefix = "testhash"; + const suffix = "testhash"; if (!composeData.services) { return; } - const updatedComposeData = addPrefixToServiceNames( + const updatedComposeData = addSuffixToServiceNames( composeData.services, - prefix, + suffix, ); const actualComposeData = { ...composeData, services: updatedComposeData }; @@ -175,11 +175,11 @@ networks: driver: bridge `) as ComposeSpecification; -test("Add prefix to all service names in compose file 1", () => { +test("Add suffix to all service names in compose file 1", () => { const composeData = load(composeFile1) as ComposeSpecification; - const prefix = "testhash"; + const suffix = "testhash"; - const updatedComposeData = addPrefixToAllServiceNames(composeData, prefix); + const updatedComposeData = addSuffixToAllServiceNames(composeData, suffix); expect(updatedComposeData).toEqual(expectedComposeFile1); }); @@ -270,11 +270,11 @@ networks: driver: bridge `) as ComposeSpecification; -test("Add prefix to all service names in compose file 2", () => { +test("Add suffix to all service names in compose file 2", () => { const composeData = load(composeFile2) as ComposeSpecification; - const prefix = "testhash"; + const suffix = "testhash"; - const updatedComposeData = addPrefixToAllServiceNames(composeData, prefix); + const updatedComposeData = addSuffixToAllServiceNames(composeData, suffix); expect(updatedComposeData).toEqual(expectedComposeFile2); }); @@ -365,11 +365,11 @@ networks: driver: bridge `) as ComposeSpecification; -test("Add prefix to all service names in compose file 3", () => { +test("Add suffix to all service names in compose file 3", () => { const composeData = load(composeFile3) as ComposeSpecification; - const prefix = "testhash"; + const suffix = "testhash"; - const updatedComposeData = addPrefixToAllServiceNames(composeData, prefix); + const updatedComposeData = addSuffixToAllServiceNames(composeData, suffix); expect(updatedComposeData).toEqual(expectedComposeFile3); }); diff --git a/apps/dokploy/__test__/compose/service/sevice-volumes-from.test.ts b/apps/dokploy/__test__/compose/service/sevice-volumes-from.test.ts index 00d75fe8..49c2b55e 100644 --- a/apps/dokploy/__test__/compose/service/sevice-volumes-from.test.ts +++ b/apps/dokploy/__test__/compose/service/sevice-volumes-from.test.ts @@ -1,5 +1,5 @@ import { generateRandomHash } from "@/server/utils/docker/compose"; -import { addPrefixToServiceNames } from "@/server/utils/docker/compose/service"; +import { addSuffixToServiceNames } from "@/server/utils/docker/compose/service"; import type { ComposeSpecification } from "@/server/utils/docker/types"; import { load } from "js-yaml"; import { expect, test } from "vitest"; @@ -35,44 +35,44 @@ networks: driver: bridge `; -test("Add prefix to service names with volumes_from in compose file", () => { +test("Add suffix to service names with volumes_from in compose file", () => { const composeData = load(composeFile3) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData.services) { return; } - const updatedComposeData = addPrefixToServiceNames( + const updatedComposeData = addSuffixToServiceNames( composeData.services, - prefix, + suffix, ); const actualComposeData = { ...composeData, services: updatedComposeData }; // Verificar que la nueva clave del servicio tiene el prefijo y la vieja clave no existe - expect(actualComposeData.services).toHaveProperty(`web-${prefix}`); + expect(actualComposeData.services).toHaveProperty(`web-${suffix}`); expect(actualComposeData.services).not.toHaveProperty("web"); // Verificar que la configuración de la imagen sigue igual - expect(actualComposeData.services?.[`web-${prefix}`]?.image).toBe( + expect(actualComposeData.services?.[`web-${suffix}`]?.image).toBe( "nginx:latest", ); - expect(actualComposeData.services?.[`api-${prefix}`]?.image).toBe( + expect(actualComposeData.services?.[`api-${suffix}`]?.image).toBe( "myapi:latest", ); // Verificar que los nombres en volumes_from tienen el prefijo - expect(actualComposeData.services?.[`web-${prefix}`]?.volumes_from).toContain( - `shared-${prefix}`, + expect(actualComposeData.services?.[`web-${suffix}`]?.volumes_from).toContain( + `shared-${suffix}`, ); - expect(actualComposeData.services?.[`api-${prefix}`]?.volumes_from).toContain( - `shared-${prefix}`, + expect(actualComposeData.services?.[`api-${suffix}`]?.volumes_from).toContain( + `shared-${suffix}`, ); // Verificar que el servicio shared también tiene el prefijo - expect(actualComposeData.services).toHaveProperty(`shared-${prefix}`); + expect(actualComposeData.services).toHaveProperty(`shared-${suffix}`); expect(actualComposeData.services).not.toHaveProperty("shared"); - expect(actualComposeData.services?.[`shared-${prefix}`]?.image).toBe( + expect(actualComposeData.services?.[`shared-${suffix}`]?.image).toBe( "busybox", ); }); diff --git a/apps/dokploy/__test__/compose/volume/volume-2.test.ts b/apps/dokploy/__test__/compose/volume/volume-2.test.ts index 57bfb761..9424bc0e 100644 --- a/apps/dokploy/__test__/compose/volume/volume-2.test.ts +++ b/apps/dokploy/__test__/compose/volume/volume-2.test.ts @@ -1,7 +1,7 @@ import { generateRandomHash } from "@/server/utils/docker/compose"; import { - addPrefixToAllVolumes, - addPrefixToVolumesRoot, + addSuffixToAllVolumes, + addSuffixToVolumesRoot, } from "@/server/utils/docker/compose/volume"; import type { ComposeSpecification } from "@/server/utils/docker/types"; import { load } from "js-yaml"; @@ -142,15 +142,15 @@ test("Generate random hash with 8 characters", () => { // Docker compose needs unique names for services, volumes, networks and containers // So base on a input which is a dockercompose file, it should replace the name with a hash and return a new dockercompose file -test("Add prefix to volumes root property", () => { +test("Add suffix to volumes root property", () => { const composeData = load(composeFile) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData?.volumes) { return; } - const volumes = addPrefixToVolumesRoot(composeData.volumes, prefix); + const volumes = addSuffixToVolumesRoot(composeData.volumes, suffix); // { // 'db-data-af045046': { driver: 'local' }, @@ -160,15 +160,15 @@ test("Add prefix to volumes root property", () => { expect(volumes).toBeDefined(); for (const volumeKey of Object.keys(volumes)) { - expect(volumeKey).toContain(`-${prefix}`); + expect(volumeKey).toContain(`-${suffix}`); } }); -test("Expect to change the prefix in all the possible places", () => { +test("Expect to change the suffix in all the possible places", () => { const composeData = load(composeFile) as ComposeSpecification; - const prefix = "testhash"; + const suffix = "testhash"; - const updatedComposeData = addPrefixToAllVolumes(composeData, prefix); + const updatedComposeData = addSuffixToAllVolumes(composeData, suffix); expect(updatedComposeData).toEqual(expectedDockerCompose); }); @@ -217,11 +217,11 @@ volumes: mongo-data-testhash: `) as ComposeSpecification; -test("Expect to change the prefix in all the possible places (2 Try)", () => { +test("Expect to change the suffix in all the possible places (2 Try)", () => { const composeData = load(composeFile2) as ComposeSpecification; - const prefix = "testhash"; + const suffix = "testhash"; - const updatedComposeData = addPrefixToAllVolumes(composeData, prefix); + const updatedComposeData = addSuffixToAllVolumes(composeData, suffix); expect(updatedComposeData).toEqual(expectedDockerCompose2); }); @@ -270,11 +270,11 @@ volumes: mongo-data-testhash: `) as ComposeSpecification; -test("Expect to change the prefix in all the possible places (3 Try)", () => { +test("Expect to change the suffix in all the possible places (3 Try)", () => { const composeData = load(composeFile3) as ComposeSpecification; - const prefix = "testhash"; + const suffix = "testhash"; - const updatedComposeData = addPrefixToAllVolumes(composeData, prefix); + const updatedComposeData = addSuffixToAllVolumes(composeData, suffix); expect(updatedComposeData).toEqual(expectedDockerCompose3); }); @@ -1011,11 +1011,11 @@ volumes: db-config-testhash: `) as ComposeSpecification; -test("Expect to change the prefix in all the possible places (4 Try)", () => { +test("Expect to change the suffix in all the possible places (4 Try)", () => { const composeData = load(composeFileComplex) as ComposeSpecification; - const prefix = "testhash"; + const suffix = "testhash"; - const updatedComposeData = addPrefixToAllVolumes(composeData, prefix); + const updatedComposeData = addSuffixToAllVolumes(composeData, suffix); expect(updatedComposeData).toEqual(expectedDockerComposeComplex); }); @@ -1110,11 +1110,11 @@ volumes: db-data-testhash: `) as ComposeSpecification; -test("Expect to change the prefix in all the possible places (5 Try)", () => { +test("Expect to change the suffix in all the possible places (5 Try)", () => { const composeData = load(composeFileExample1) as ComposeSpecification; - const prefix = "testhash"; + const suffix = "testhash"; - const updatedComposeData = addPrefixToAllVolumes(composeData, prefix); + const updatedComposeData = addSuffixToAllVolumes(composeData, suffix); expect(updatedComposeData).toEqual(expectedDockerComposeExample1); }); diff --git a/apps/dokploy/__test__/compose/volume/volume-root.test.ts b/apps/dokploy/__test__/compose/volume/volume-root.test.ts index 6b87f2ca..6c1f5d10 100644 --- a/apps/dokploy/__test__/compose/volume/volume-root.test.ts +++ b/apps/dokploy/__test__/compose/volume/volume-root.test.ts @@ -1,5 +1,5 @@ import { generateRandomHash } from "@/server/utils/docker/compose"; -import { addPrefixToVolumesRoot } from "@/server/utils/docker/compose/volume"; +import { addSuffixToVolumesRoot } from "@/server/utils/docker/compose/volume"; import type { ComposeSpecification } from "@/server/utils/docker/types"; import { load } from "js-yaml"; import { expect, test } from "vitest"; @@ -29,18 +29,18 @@ test("Generate random hash with 8 characters", () => { expect(hash.length).toBe(8); }); -test("Add prefix to volumes in root property", () => { +test("Add suffix to volumes in root property", () => { const composeData = load(composeFile) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData?.volumes) { return; } - const volumes = addPrefixToVolumesRoot(composeData.volumes, prefix); + const volumes = addSuffixToVolumesRoot(composeData.volumes, suffix); expect(volumes).toBeDefined(); for (const volumeKey of Object.keys(volumes)) { - expect(volumeKey).toContain(`-${prefix}`); + expect(volumeKey).toContain(`-${suffix}`); expect(volumes[volumeKey]).toBeDefined(); } }); @@ -67,18 +67,18 @@ networks: driver: bridge `; -test("Add prefix to volumes in root property (Case 2)", () => { +test("Add suffix to volumes in root property (Case 2)", () => { const composeData = load(composeFile2) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData?.volumes) { return; } - const volumes = addPrefixToVolumesRoot(composeData.volumes, prefix); + const volumes = addSuffixToVolumesRoot(composeData.volumes, suffix); expect(volumes).toBeDefined(); for (const volumeKey of Object.keys(volumes)) { - expect(volumeKey).toContain(`-${prefix}`); + expect(volumeKey).toContain(`-${suffix}`); expect(volumes[volumeKey]).toBeDefined(); } }); @@ -101,19 +101,19 @@ networks: driver: bridge `; -test("Add prefix to volumes in root property (Case 3)", () => { +test("Add suffix to volumes in root property (Case 3)", () => { const composeData = load(composeFile3) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData?.volumes) { return; } - const volumes = addPrefixToVolumesRoot(composeData.volumes, prefix); + const volumes = addSuffixToVolumesRoot(composeData.volumes, suffix); expect(volumes).toBeDefined(); for (const volumeKey of Object.keys(volumes)) { - expect(volumeKey).toContain(`-${prefix}`); + expect(volumeKey).toContain(`-${suffix}`); expect(volumes[volumeKey]).toBeDefined(); } }); @@ -179,15 +179,15 @@ volumes: `) as ComposeSpecification; -test("Add prefix to volumes in root property", () => { +test("Add suffix to volumes in root property", () => { const composeData = load(composeFile4) as ComposeSpecification; - const prefix = "testhash"; + const suffix = "testhash"; if (!composeData?.volumes) { return; } - const volumes = addPrefixToVolumesRoot(composeData.volumes, prefix); + const volumes = addSuffixToVolumesRoot(composeData.volumes, suffix); const updatedComposeData = { ...composeData, volumes }; // Verificar que el resultado coincide con el archivo esperado diff --git a/apps/dokploy/__test__/compose/volume/volume-services.test.ts b/apps/dokploy/__test__/compose/volume/volume-services.test.ts index 331c3bf1..1940a4f2 100644 --- a/apps/dokploy/__test__/compose/volume/volume-services.test.ts +++ b/apps/dokploy/__test__/compose/volume/volume-services.test.ts @@ -1,5 +1,5 @@ import { generateRandomHash } from "@/server/utils/docker/compose"; -import { addPrefixToVolumesInServices } from "@/server/utils/docker/compose/volume"; +import { addSuffixToVolumesInServices } from "@/server/utils/docker/compose/volume"; import type { ComposeSpecification } from "@/server/utils/docker/types"; import { load } from "js-yaml"; import { expect, test } from "vitest"; @@ -21,22 +21,22 @@ services: - db_data:/var/lib/postgresql/data `; -test("Add prefix to volumes declared directly in services", () => { +test("Add suffix to volumes declared directly in services", () => { const composeData = load(composeFile1) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData.services) { return; } - const updatedComposeData = addPrefixToVolumesInServices( + const updatedComposeData = addSuffixToVolumesInServices( composeData.services, - prefix, + suffix, ); const actualComposeData = { ...composeData, services: updatedComposeData }; expect(actualComposeData.services?.db?.volumes).toContain( - `db_data-${prefix}:/var/lib/postgresql/data`, + `db_data-${suffix}:/var/lib/postgresql/data`, ); }); @@ -56,25 +56,25 @@ volumes: driver: local `; -test("Add prefix to volumes declared directly in services (Case 2)", () => { +test("Add suffix to volumes declared directly in services (Case 2)", () => { const composeData = load(composeFileTypeVolume) as ComposeSpecification; - const prefix = generateRandomHash(); + const suffix = generateRandomHash(); if (!composeData.services) { return; } - const updatedComposeData = addPrefixToVolumesInServices( + const updatedComposeData = addSuffixToVolumesInServices( composeData.services, - prefix, + suffix, ); const actualComposeData = { ...composeData, services: updatedComposeData }; expect(actualComposeData.services?.db?.volumes).toEqual([ { type: "volume", - source: `db-test-${prefix}`, + source: `db-test-${suffix}`, target: "/var/lib/postgresql/data", }, ]); diff --git a/apps/dokploy/__test__/compose/volume/volume.test.ts b/apps/dokploy/__test__/compose/volume/volume.test.ts index 98a23588..8d799bcd 100644 --- a/apps/dokploy/__test__/compose/volume/volume.test.ts +++ b/apps/dokploy/__test__/compose/volume/volume.test.ts @@ -1,7 +1,7 @@ import { generateRandomHash } from "@/server/utils/docker/compose"; import { - addPrefixToAllVolumes, - addPrefixToVolumesInServices, + addSuffixToAllVolumes, + addSuffixToVolumesInServices, } from "@/server/utils/docker/compose/volume"; import type { ComposeSpecification } from "@/server/utils/docker/types"; import { load } from "js-yaml"; @@ -47,12 +47,12 @@ volumes: driver: local `) as ComposeSpecification; -test("Add prefix to volumes with type: volume in services", () => { +test("Add suffix to volumes with type: volume in services", () => { const composeData = load(composeFileTypeVolume) as ComposeSpecification; - const prefix = "testhash"; + const suffix = "testhash"; - const updatedComposeData = addPrefixToAllVolumes(composeData, prefix); + const updatedComposeData = addSuffixToAllVolumes(composeData, suffix); const actualComposeData = { ...composeData, ...updatedComposeData }; expect(actualComposeData).toEqual(expectedComposeFileTypeVolume); @@ -96,12 +96,12 @@ volumes: driver: local `) as ComposeSpecification; -test("Add prefix to mixed volumes in services", () => { +test("Add suffix to mixed volumes in services", () => { const composeData = load(composeFileTypeVolume1) as ComposeSpecification; - const prefix = "testhash"; + const suffix = "testhash"; - const updatedComposeData = addPrefixToAllVolumes(composeData, prefix); + const updatedComposeData = addSuffixToAllVolumes(composeData, suffix); const actualComposeData = { ...composeData, ...updatedComposeData }; expect(actualComposeData).toEqual(expectedComposeFileTypeVolume1); @@ -157,12 +157,12 @@ volumes: device: /path/to/app/logs `) as ComposeSpecification; -test("Add prefix to complex volume configurations in services", () => { +test("Add suffix to complex volume configurations in services", () => { const composeData = load(composeFileTypeVolume2) as ComposeSpecification; - const prefix = "testhash"; + const suffix = "testhash"; - const updatedComposeData = addPrefixToAllVolumes(composeData, prefix); + const updatedComposeData = addSuffixToAllVolumes(composeData, suffix); const actualComposeData = { ...composeData, ...updatedComposeData }; expect(actualComposeData).toEqual(expectedComposeFileTypeVolume2); @@ -276,12 +276,12 @@ volumes: device: /path/to/shared/logs `) as ComposeSpecification; -test("Add prefix to complex nested volumes configuration in services", () => { +test("Add suffix to complex nested volumes configuration in services", () => { const composeData = load(composeFileTypeVolume3) as ComposeSpecification; - const prefix = "testhash"; + const suffix = "testhash"; - const updatedComposeData = addPrefixToAllVolumes(composeData, prefix); + const updatedComposeData = addSuffixToAllVolumes(composeData, suffix); const actualComposeData = { ...composeData, ...updatedComposeData }; expect(actualComposeData).toEqual(expectedComposeFileTypeVolume3); diff --git a/apps/dokploy/__test__/traefik/traefik.test.ts b/apps/dokploy/__test__/traefik/traefik.test.ts index 7ca9f169..bc62cb62 100644 --- a/apps/dokploy/__test__/traefik/traefik.test.ts +++ b/apps/dokploy/__test__/traefik/traefik.test.ts @@ -107,7 +107,7 @@ test("Web entrypoint on http domain", async () => { ); expect(router.middlewares).not.toContain("redirect-to-https"); - expect(router.rule).not.toContain("PathPrefix"); + expect(router.rule).not.toContain("PathSuffix"); }); test("Web entrypoint on http domain with custom path", async () => { @@ -117,7 +117,7 @@ test("Web entrypoint on http domain with custom path", async () => { "web", ); - expect(router.rule).toContain("PathPrefix(`/foo`)"); + expect(router.rule).toContain("PathSuffix(`/foo`)"); }); test("Web entrypoint on http domain with redirect", async () => { diff --git a/apps/dokploy/components/dashboard/compose/general/randomize-compose.tsx b/apps/dokploy/components/dashboard/compose/general/randomize-compose.tsx index 2fc59f12..2c6184c8 100644 --- a/apps/dokploy/components/dashboard/compose/general/randomize-compose.tsx +++ b/apps/dokploy/components/dashboard/compose/general/randomize-compose.tsx @@ -11,13 +11,13 @@ import { DialogTrigger, } from "@/components/ui/dialog"; import { + Form, + FormControl, + FormDescription, FormField, FormItem, FormLabel, - FormControl, - FormDescription, FormMessage, - Form, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { @@ -39,7 +39,7 @@ interface Props { } const schema = z.object({ - prefix: z.string(), + suffix: z.string(), randomize: z.boolean().optional(), }); @@ -61,18 +61,18 @@ export const RandomizeCompose = ({ composeId }: Props) => { const form = useForm({ defaultValues: { - prefix: "", + suffix: "", randomize: false, }, resolver: zodResolver(schema), }); - const prefix = form.watch("prefix"); + const suffix = form.watch("suffix"); useEffect(() => { if (data) { form.reset({ - prefix: data?.prefix || "", + suffix: data?.suffix || "", randomize: data?.randomize || false, }); } @@ -81,7 +81,7 @@ export const RandomizeCompose = ({ composeId }: Props) => { const onSubmit = async (formData: Schema) => { await updateCompose({ composeId, - prefix: formData?.prefix || "", + suffix: formData?.suffix || "", randomize: formData?.randomize || false, }) .then(async (data) => { @@ -97,7 +97,7 @@ export const RandomizeCompose = ({ composeId }: Props) => { const randomizeCompose = async () => { await mutateAsync({ composeId, - prefix, + suffix, }) .then(async (data) => { await utils.project.all.invalidate(); @@ -127,7 +127,7 @@ export const RandomizeCompose = ({ composeId }: Props) => {
- This will randomize the compose file and will add a prefix to the + This will randomize the compose file and will add a suffix to the property to avoid conflicts
    @@ -163,13 +163,13 @@ export const RandomizeCompose = ({ composeId }: Props) => {
    ( - Prefix + Suffix diff --git a/apps/dokploy/drizzle/0035_tired_kinsey_walden.sql b/apps/dokploy/drizzle/0035_cool_gravity.sql similarity index 61% rename from apps/dokploy/drizzle/0035_tired_kinsey_walden.sql rename to apps/dokploy/drizzle/0035_cool_gravity.sql index b5ac9328..9749285d 100644 --- a/apps/dokploy/drizzle/0035_tired_kinsey_walden.sql +++ b/apps/dokploy/drizzle/0035_cool_gravity.sql @@ -1,2 +1,2 @@ -ALTER TABLE "compose" ADD COLUMN "prefix" text DEFAULT '' NOT NULL;--> statement-breakpoint +ALTER TABLE "compose" ADD COLUMN "suffix" text DEFAULT '' NOT NULL;--> statement-breakpoint ALTER TABLE "compose" ADD COLUMN "randomize" boolean DEFAULT false NOT NULL; \ No newline at end of file diff --git a/apps/dokploy/drizzle/meta/0035_snapshot.json b/apps/dokploy/drizzle/meta/0035_snapshot.json index 80b4e4a8..970edd40 100644 --- a/apps/dokploy/drizzle/meta/0035_snapshot.json +++ b/apps/dokploy/drizzle/meta/0035_snapshot.json @@ -1,5 +1,5 @@ { - "id": "51601bf9-6706-4a79-9029-cbad20ea9e02", + "id": "bb060896-7fc0-4bf3-b579-65f118769de0", "prevId": "6a7ce86e-f628-4786-ab30-e160dcdb0a39", "version": "6", "dialect": "postgresql", @@ -2602,8 +2602,8 @@ "notNull": true, "default": "'./docker-compose.yml'" }, - "prefix": { - "name": "prefix", + "suffix": { + "name": "suffix", "type": "text", "primaryKey": false, "notNull": true, diff --git a/apps/dokploy/drizzle/meta/_journal.json b/apps/dokploy/drizzle/meta/_journal.json index 2bd9e2b3..c945eb37 100644 --- a/apps/dokploy/drizzle/meta/_journal.json +++ b/apps/dokploy/drizzle/meta/_journal.json @@ -250,8 +250,8 @@ { "idx": 35, "version": "6", - "when": 1725421774684, - "tag": "0035_tired_kinsey_walden", + "when": 1725429324584, + "tag": "0035_cool_gravity", "breakpoints": true } ] diff --git a/apps/dokploy/server/api/routers/compose.ts b/apps/dokploy/server/api/routers/compose.ts index 82dee89a..26be7fca 100644 --- a/apps/dokploy/server/api/routers/compose.ts +++ b/apps/dokploy/server/api/routers/compose.ts @@ -144,7 +144,7 @@ export const composeRouter = createTRPCRouter({ randomizeCompose: protectedProcedure .input(apiRandomizeCompose) .mutation(async ({ input }) => { - return await randomizeComposeFile(input.composeId, input.prefix); + return await randomizeComposeFile(input.composeId, input.suffix); }), getConvertedCompose: protectedProcedure .input(apiFindCompose) diff --git a/apps/dokploy/server/api/services/compose.ts b/apps/dokploy/server/api/services/compose.ts index ca40e2c5..f1dadb95 100644 --- a/apps/dokploy/server/api/services/compose.ts +++ b/apps/dokploy/server/api/services/compose.ts @@ -4,6 +4,7 @@ import { db } from "@/server/db"; import { type apiCreateCompose, compose } from "@/server/db/schema"; import { generateAppName } from "@/server/db/schema/utils"; import { buildCompose } from "@/server/utils/builders/compose"; +import { randomizeSpecificationFile } from "@/server/utils/docker/compose"; import { cloneCompose, loadDockerCompose } from "@/server/utils/docker/domain"; import { sendBuildErrorNotifications } from "@/server/utils/notifications/build-error"; import { sendBuildSuccessNotifications } from "@/server/utils/notifications/build-success"; @@ -19,7 +20,6 @@ import { eq } from "drizzle-orm"; import { getDokployUrl } from "./admin"; import { createDeploymentCompose, updateDeploymentStatus } from "./deployment"; import { validUniqueServerAppName } from "./project"; -import { randomizeSpecificationFile } from "@/server/utils/docker/compose"; export type Compose = typeof compose.$inferSelect; @@ -123,7 +123,7 @@ export const loadServices = async ( if (compose.randomize && composeData) { const randomizedCompose = randomizeSpecificationFile( composeData, - compose.prefix, + compose.suffix, ); composeData = randomizedCompose; } diff --git a/apps/dokploy/server/db/schema/compose.ts b/apps/dokploy/server/db/schema/compose.ts index c8de5289..f2ab084a 100644 --- a/apps/dokploy/server/db/schema/compose.ts +++ b/apps/dokploy/server/db/schema/compose.ts @@ -64,7 +64,7 @@ export const compose = pgTable("compose", { command: text("command").notNull().default(""), // composePath: text("composePath").notNull().default("./docker-compose.yml"), - prefix: text("prefix").notNull().default(""), + suffix: text("suffix").notNull().default(""), randomize: boolean("randomize").notNull().default(false), composeStatus: applicationStatus("composeStatus").notNull().default("idle"), projectId: text("projectId") @@ -159,6 +159,6 @@ export const apiRandomizeCompose = createSchema composeId: true, }) .extend({ - prefix: z.string().optional(), + suffix: z.string().optional(), composeId: z.string().min(1), }); diff --git a/apps/dokploy/server/utils/builders/compose.ts b/apps/dokploy/server/utils/builders/compose.ts index 664f59ee..10e56aba 100644 --- a/apps/dokploy/server/utils/builders/compose.ts +++ b/apps/dokploy/server/utils/builders/compose.ts @@ -110,7 +110,7 @@ const createEnvFile = (compose: ComposeNested) => { } if (compose.randomize) { - envContent += `\nCOMPOSE_PREFIX=${compose.prefix}`; + envContent += `\nCOMPOSE_PREFIX=${compose.suffix}`; } const envFileContent = prepareEnvironmentVariables(envContent).join("\n"); diff --git a/apps/dokploy/server/utils/docker/compose.ts b/apps/dokploy/server/utils/docker/compose.ts index 42a7c0f7..8b9f8b7c 100644 --- a/apps/dokploy/server/utils/docker/compose.ts +++ b/apps/dokploy/server/utils/docker/compose.ts @@ -1,11 +1,11 @@ import crypto from "node:crypto"; import { findComposeById } from "@/server/api/services/compose"; import { dump, load } from "js-yaml"; -import { addPrefixToAllConfigs } from "./compose/configs"; -import { addPrefixToAllNetworks } from "./compose/network"; -import { addPrefixToAllSecrets } from "./compose/secrets"; -import { addPrefixToAllServiceNames } from "./compose/service"; -import { addPrefixToAllVolumes } from "./compose/volume"; +import { addSuffixToAllConfigs } from "./compose/configs"; +import { addSuffixToAllNetworks } from "./compose/network"; +import { addSuffixToAllSecrets } from "./compose/secrets"; +import { addSuffixToAllServiceNames } from "./compose/service"; +import { addSuffixToAllVolumes } from "./compose/volume"; import type { ComposeSpecification } from "./types"; export const generateRandomHash = (): string => { @@ -14,43 +14,43 @@ export const generateRandomHash = (): string => { export const randomizeComposeFile = async ( composeId: string, - prefix?: string, + suffix?: string, ) => { const compose = await findComposeById(composeId); const composeFile = compose.composeFile; const composeData = load(composeFile) as ComposeSpecification; - const randomPrefix = prefix || generateRandomHash(); + const randomSuffix = suffix || generateRandomHash(); - const newComposeFile = addPrefixToAllProperties(composeData, randomPrefix); + const newComposeFile = addSuffixToAllProperties(composeData, randomSuffix); return dump(newComposeFile); }; export const randomizeSpecificationFile = ( composeSpec: ComposeSpecification, - prefix?: string, + suffix?: string, ) => { - if (!prefix) { + if (!suffix) { return composeSpec; } - const newComposeFile = addPrefixToAllProperties(composeSpec, prefix); + const newComposeFile = addSuffixToAllProperties(composeSpec, suffix); return newComposeFile; }; -export const addPrefixToAllProperties = ( +export const addSuffixToAllProperties = ( composeData: ComposeSpecification, - prefix: string, + suffix: string, ): ComposeSpecification => { let updatedComposeData = { ...composeData }; - updatedComposeData = addPrefixToAllServiceNames(updatedComposeData, prefix); + updatedComposeData = addSuffixToAllServiceNames(updatedComposeData, suffix); - updatedComposeData = addPrefixToAllVolumes(updatedComposeData, prefix); + updatedComposeData = addSuffixToAllVolumes(updatedComposeData, suffix); - updatedComposeData = addPrefixToAllNetworks(updatedComposeData, prefix); - updatedComposeData = addPrefixToAllConfigs(updatedComposeData, prefix); + updatedComposeData = addSuffixToAllNetworks(updatedComposeData, suffix); + updatedComposeData = addSuffixToAllConfigs(updatedComposeData, suffix); - updatedComposeData = addPrefixToAllSecrets(updatedComposeData, prefix); + updatedComposeData = addSuffixToAllSecrets(updatedComposeData, suffix); return updatedComposeData; }; diff --git a/apps/dokploy/server/utils/docker/compose/configs.ts b/apps/dokploy/server/utils/docker/compose/configs.ts index 17bfb171..b985db1a 100644 --- a/apps/dokploy/server/utils/docker/compose/configs.ts +++ b/apps/dokploy/server/utils/docker/compose/configs.ts @@ -5,23 +5,23 @@ import type { DefinitionsService, } from "../types"; -export const addPrefixToConfigsRoot = ( +export const addSuffixToConfigsRoot = ( configs: { [key: string]: DefinitionsConfig }, - prefix: string, + suffix: string, ): { [key: string]: DefinitionsConfig } => { const newConfigs: { [key: string]: DefinitionsConfig } = {}; _.forEach(configs, (config, configName) => { - const newConfigName = `${configName}-${prefix}`; + const newConfigName = `${configName}-${suffix}`; newConfigs[newConfigName] = _.cloneDeep(config); }); return newConfigs; }; -export const addPrefixToConfigsInServices = ( +export const addSuffixToConfigsInServices = ( services: { [key: string]: DefinitionsService }, - prefix: string, + suffix: string, ): { [key: string]: DefinitionsService } => { const newServices: { [key: string]: DefinitionsService } = {}; @@ -32,12 +32,12 @@ export const addPrefixToConfigsInServices = ( if (_.has(newServiceConfig, "configs")) { newServiceConfig.configs = _.map(newServiceConfig.configs, (config) => { if (_.isString(config)) { - return `${config}-${prefix}`; + return `${config}-${suffix}`; } if (_.isObject(config) && config.source) { return { ...config, - source: `${config.source}-${prefix}`, + source: `${config.source}-${suffix}`, }; } return config; @@ -50,22 +50,22 @@ export const addPrefixToConfigsInServices = ( return newServices; }; -export const addPrefixToAllConfigs = ( +export const addSuffixToAllConfigs = ( composeData: ComposeSpecification, - prefix: string, + suffix: string, ): ComposeSpecification => { const updatedComposeData = { ...composeData }; if (composeData?.configs) { - updatedComposeData.configs = addPrefixToConfigsRoot( + updatedComposeData.configs = addSuffixToConfigsRoot( composeData.configs, - prefix, + suffix, ); } if (composeData?.services) { - updatedComposeData.services = addPrefixToConfigsInServices( + updatedComposeData.services = addSuffixToConfigsInServices( composeData.services, - prefix, + suffix, ); } diff --git a/apps/dokploy/server/utils/docker/compose/network.ts b/apps/dokploy/server/utils/docker/compose/network.ts index c52f1368..1245fb60 100644 --- a/apps/dokploy/server/utils/docker/compose/network.ts +++ b/apps/dokploy/server/utils/docker/compose/network.ts @@ -5,21 +5,21 @@ import type { DefinitionsService, } from "../types"; -export const addPrefixToNetworksRoot = ( +export const addSuffixToNetworksRoot = ( networks: { [key: string]: DefinitionsNetwork }, - prefix: string, + suffix: string, ): { [key: string]: DefinitionsNetwork } => { return _.mapKeys(networks, (_value, key) => { if (key === "dokploy-network") { return "dokploy-network"; } - return `${key}-${prefix}`; + return `${key}-${suffix}`; }); }; -export const addPrefixToServiceNetworks = ( +export const addSuffixToServiceNetworks = ( services: { [key: string]: DefinitionsService }, - prefix: string, + suffix: string, ): { [key: string]: DefinitionsService } => { return _.mapValues(services, (service) => { if (service.networks) { @@ -29,7 +29,7 @@ export const addPrefixToServiceNetworks = ( if (network === "dokploy-network") { return "dokploy-network"; } - return `${network}-${prefix}`; + return `${network}-${suffix}`; }); } else { // 2 Case @@ -37,7 +37,7 @@ export const addPrefixToServiceNetworks = ( if (key === "dokploy-network") { return "dokploy-network"; } - return `${key}-${prefix}`; + return `${key}-${suffix}`; }); // 3 Case @@ -47,7 +47,7 @@ export const addPrefixToServiceNetworks = ( if (innerKey === "aliases") { return "aliases"; } - return `${innerKey}-${prefix}`; + return `${innerKey}-${suffix}`; }); } @@ -59,23 +59,23 @@ export const addPrefixToServiceNetworks = ( }); }; -export const addPrefixToAllNetworks = ( +export const addSuffixToAllNetworks = ( composeData: ComposeSpecification, - prefix: string, + suffix: string, ): ComposeSpecification => { const updatedComposeData = { ...composeData }; if (updatedComposeData.networks) { - updatedComposeData.networks = addPrefixToNetworksRoot( + updatedComposeData.networks = addSuffixToNetworksRoot( updatedComposeData.networks, - prefix, + suffix, ); } if (updatedComposeData.services) { - updatedComposeData.services = addPrefixToServiceNetworks( + updatedComposeData.services = addSuffixToServiceNetworks( updatedComposeData.services, - prefix, + suffix, ); } diff --git a/apps/dokploy/server/utils/docker/compose/secrets.ts b/apps/dokploy/server/utils/docker/compose/secrets.ts index 2a598c1b..16c23308 100644 --- a/apps/dokploy/server/utils/docker/compose/secrets.ts +++ b/apps/dokploy/server/utils/docker/compose/secrets.ts @@ -1,21 +1,21 @@ import _ from "lodash"; import type { ComposeSpecification, DefinitionsService } from "../types"; -export const addPrefixToSecretsRoot = ( +export const addSuffixToSecretsRoot = ( secrets: ComposeSpecification["secrets"], - prefix: string, + suffix: string, ): ComposeSpecification["secrets"] => { const newSecrets: ComposeSpecification["secrets"] = {}; _.forEach(secrets, (secretConfig, secretName) => { - const newSecretName = `${secretName}-${prefix}`; + const newSecretName = `${secretName}-${suffix}`; newSecrets[newSecretName] = _.cloneDeep(secretConfig); }); return newSecrets; }; -export const addPrefixToSecretsInServices = ( +export const addSuffixToSecretsInServices = ( services: { [key: string]: DefinitionsService }, - prefix: string, + suffix: string, ): { [key: string]: DefinitionsService } => { const newServices: { [key: string]: DefinitionsService } = {}; @@ -26,12 +26,12 @@ export const addPrefixToSecretsInServices = ( if (_.has(newServiceConfig, "secrets")) { newServiceConfig.secrets = _.map(newServiceConfig.secrets, (secret) => { if (_.isString(secret)) { - return `${secret}-${prefix}`; + return `${secret}-${suffix}`; } if (_.isObject(secret) && secret.source) { return { ...secret, - source: `${secret.source}-${prefix}`, + source: `${secret.source}-${suffix}`, }; } return secret; @@ -44,23 +44,23 @@ export const addPrefixToSecretsInServices = ( return newServices; }; -export const addPrefixToAllSecrets = ( +export const addSuffixToAllSecrets = ( composeData: ComposeSpecification, - prefix: string, + suffix: string, ): ComposeSpecification => { const updatedComposeData = { ...composeData }; if (composeData?.secrets) { - updatedComposeData.secrets = addPrefixToSecretsRoot( + updatedComposeData.secrets = addSuffixToSecretsRoot( composeData.secrets, - prefix, + suffix, ); } if (composeData?.services) { - updatedComposeData.services = addPrefixToSecretsInServices( + updatedComposeData.services = addSuffixToSecretsInServices( composeData.services, - prefix, + suffix, ); } diff --git a/apps/dokploy/server/utils/docker/compose/service.ts b/apps/dokploy/server/utils/docker/compose/service.ts index ee6261c8..e22c7eb1 100644 --- a/apps/dokploy/server/utils/docker/compose/service.ts +++ b/apps/dokploy/server/utils/docker/compose/service.ts @@ -12,28 +12,28 @@ type DependsOnObject = NonNullable< : never >; -export const addPrefixToServiceNames = ( +export const addSuffixToServiceNames = ( services: { [key: string]: DefinitionsService }, - prefix: string, + suffix: string, ): { [key: string]: DefinitionsService } => { const newServices: { [key: string]: DefinitionsService } = {}; for (const [serviceName, serviceConfig] of Object.entries(services)) { - const newServiceName = `${serviceName}-${prefix}`; + const newServiceName = `${serviceName}-${suffix}`; const newServiceConfig = _.cloneDeep(serviceConfig); // Reemplazar nombres de servicios en depends_on if (newServiceConfig.depends_on) { if (Array.isArray(newServiceConfig.depends_on)) { newServiceConfig.depends_on = newServiceConfig.depends_on.map( - (dep) => `${dep}-${prefix}`, + (dep) => `${dep}-${suffix}`, ); } else { const newDependsOn: DependsOnObject = {}; for (const [depName, depConfig] of Object.entries( newServiceConfig.depends_on, )) { - newDependsOn[`${depName}-${prefix}`] = depConfig; + newDependsOn[`${depName}-${suffix}`] = depConfig; } newServiceConfig.depends_on = newDependsOn; } @@ -41,29 +41,29 @@ export const addPrefixToServiceNames = ( // Reemplazar nombre en container_name if (newServiceConfig.container_name) { - newServiceConfig.container_name = `${newServiceConfig.container_name}-${prefix}`; + newServiceConfig.container_name = `${newServiceConfig.container_name}-${suffix}`; } // Reemplazar nombres de servicios en links if (newServiceConfig.links) { newServiceConfig.links = newServiceConfig.links.map( - (link) => `${link}-${prefix}`, + (link) => `${link}-${suffix}`, ); } // Reemplazar nombres de servicios en extends if (newServiceConfig.extends) { if (typeof newServiceConfig.extends === "string") { - newServiceConfig.extends = `${newServiceConfig.extends}-${prefix}`; + newServiceConfig.extends = `${newServiceConfig.extends}-${suffix}`; } else { - newServiceConfig.extends.service = `${newServiceConfig.extends.service}-${prefix}`; + newServiceConfig.extends.service = `${newServiceConfig.extends.service}-${suffix}`; } } // Reemplazar nombres de servicios en volumes_from if (newServiceConfig.volumes_from) { newServiceConfig.volumes_from = newServiceConfig.volumes_from.map( - (vol) => `${vol}-${prefix}`, + (vol) => `${vol}-${suffix}`, ); } @@ -73,16 +73,16 @@ export const addPrefixToServiceNames = ( return newServices; }; -export const addPrefixToAllServiceNames = ( +export const addSuffixToAllServiceNames = ( composeData: ComposeSpecification, - prefix: string, + suffix: string, ): ComposeSpecification => { const updatedComposeData = { ...composeData }; if (updatedComposeData.services) { - updatedComposeData.services = addPrefixToServiceNames( + updatedComposeData.services = addSuffixToServiceNames( updatedComposeData.services, - prefix, + suffix, ); } diff --git a/apps/dokploy/server/utils/docker/compose/volume.ts b/apps/dokploy/server/utils/docker/compose/volume.ts index 87bc1248..91bde78c 100644 --- a/apps/dokploy/server/utils/docker/compose/volume.ts +++ b/apps/dokploy/server/utils/docker/compose/volume.ts @@ -6,16 +6,16 @@ import type { } from "../types"; // Función para agregar prefijo a volúmenes -export const addPrefixToVolumesRoot = ( +export const addSuffixToVolumesRoot = ( volumes: { [key: string]: DefinitionsVolume }, - prefix: string, + suffix: string, ): { [key: string]: DefinitionsVolume } => { - return _.mapKeys(volumes, (_value, key) => `${key}-${prefix}`); + return _.mapKeys(volumes, (_value, key) => `${key}-${suffix}`); }; -export const addPrefixToVolumesInServices = ( +export const addSuffixToVolumesInServices = ( services: { [key: string]: DefinitionsService }, - prefix: string, + suffix: string, ): { [key: string]: DefinitionsService } => { const newServices: { [key: string]: DefinitionsService } = {}; @@ -36,12 +36,12 @@ export const addPrefixToVolumesInServices = ( ) { return volume; } - return `${volumeName}-${prefix}:${path}`; + return `${volumeName}-${suffix}:${path}`; } if (_.isObject(volume) && volume.type === "volume" && volume.source) { return { ...volume, - source: `${volume.source}-${prefix}`, + source: `${volume.source}-${suffix}`, }; } return volume; @@ -54,23 +54,23 @@ export const addPrefixToVolumesInServices = ( return newServices; }; -export const addPrefixToAllVolumes = ( +export const addSuffixToAllVolumes = ( composeData: ComposeSpecification, - prefix: string, + suffix: string, ): ComposeSpecification => { const updatedComposeData = { ...composeData }; if (updatedComposeData.volumes) { - updatedComposeData.volumes = addPrefixToVolumesRoot( + updatedComposeData.volumes = addSuffixToVolumesRoot( updatedComposeData.volumes, - prefix, + suffix, ); } if (updatedComposeData.services) { - updatedComposeData.services = addPrefixToVolumesInServices( + updatedComposeData.services = addSuffixToVolumesInServices( updatedComposeData.services, - prefix, + suffix, ); } diff --git a/apps/dokploy/server/utils/docker/domain.ts b/apps/dokploy/server/utils/docker/domain.ts index fa7046fd..14f2a405 100644 --- a/apps/dokploy/server/utils/docker/domain.ts +++ b/apps/dokploy/server/utils/docker/domain.ts @@ -10,12 +10,12 @@ import { cloneGitRawRepository } from "../providers/git"; import { cloneRawGithubRepository } from "../providers/github"; import { cloneRawGitlabRepository } from "../providers/gitlab"; import { createComposeFileRaw } from "../providers/raw"; +import { randomizeSpecificationFile } from "./compose"; import type { ComposeSpecification, DefinitionsService, PropertiesNetworks, } from "./types"; -import { randomizeSpecificationFile } from "./compose"; export const cloneCompose = async (compose: Compose) => { if (compose.sourceType === "github") { @@ -76,7 +76,7 @@ export const writeDomainsToCompose = async ( let composeConverted = await addDomainToCompose(compose, domains); if (compose.randomize && composeConverted) { - const result = randomizeSpecificationFile(composeConverted, compose.prefix); + const result = randomizeSpecificationFile(composeConverted, compose.suffix); composeConverted = result; } @@ -101,7 +101,7 @@ export const addDomainToCompose = async ( } if (compose.randomize) { - const randomized = randomizeSpecificationFile(result, compose.prefix); + const randomized = randomizeSpecificationFile(result, compose.suffix); result = randomized; }