diff --git a/apps/dokploy/components/dashboard/project/duplicate-project.tsx b/apps/dokploy/components/dashboard/project/duplicate-project.tsx index df81c41f0..3455f34cf 100644 --- a/apps/dokploy/components/dashboard/project/duplicate-project.tsx +++ b/apps/dokploy/components/dashboard/project/duplicate-project.tsx @@ -80,6 +80,29 @@ export const DuplicateProject = ({ api.project.duplicate.useMutation({ onSuccess: async (newProject) => { await utils.project.all.invalidate(); + + // If duplicating to same project+environment, invalidate the environment query + // to refresh the services list + if (duplicateType === "existing-environment") { + await utils.environment.one.invalidate({ + environmentId: selectedTargetEnvironment, + }); + await utils.environment.byProjectId.invalidate({ + projectId: selectedTargetProject, + }); + + // If duplicating to the same environment we're currently viewing, + // also invalidate the current environment to refresh the services list + if (selectedTargetEnvironment === environmentId) { + await utils.environment.one.invalidate({ environmentId }); + // Also invalidate the project query to refresh the project data + const projectId = router.query.projectId as string; + if (projectId) { + await utils.project.one.invalidate({ projectId }); + } + } + } + toast.success( duplicateType === "new-project" ? "Project duplicated successfully" diff --git a/apps/dokploy/package.json b/apps/dokploy/package.json index 883b0f880..68958907c 100644 --- a/apps/dokploy/package.json +++ b/apps/dokploy/package.json @@ -1,6 +1,6 @@ { "name": "dokploy", - "version": "v0.25.1", + "version": "v0.25.2", "private": true, "license": "Apache-2.0", "type": "module", diff --git a/apps/schedules/src/index.ts b/apps/schedules/src/index.ts index af8ad8ff9..c37deac56 100644 --- a/apps/schedules/src/index.ts +++ b/apps/schedules/src/index.ts @@ -11,7 +11,7 @@ import { } from "./queue.js"; import { jobQueueSchema } from "./schema.js"; import { initializeJobs } from "./utils.js"; -import { firstWorker, secondWorker } from "./workers.js"; +import { firstWorker, secondWorker, thirdWorker } from "./workers.js"; const app = new Hono(); @@ -91,6 +91,7 @@ export const gracefulShutdown = async (signal: string) => { logger.warn(`Received ${signal}, closing server...`); await firstWorker.close(); await secondWorker.close(); + await thirdWorker.close(); process.exit(0); }; diff --git a/apps/schedules/src/workers.ts b/apps/schedules/src/workers.ts index 1a6d24705..37f24b38d 100644 --- a/apps/schedules/src/workers.ts +++ b/apps/schedules/src/workers.ts @@ -7,22 +7,34 @@ import { runJobs } from "./utils.js"; export const firstWorker = new Worker( "backupQueue", async (job: Job) => { - logger.info({ data: job.data }, "Running job"); + logger.info({ data: job.data }, "Running job first worker"); await runJobs(job.data); }, { - concurrency: 50, + concurrency: 100, connection, }, ); export const secondWorker = new Worker( "backupQueue", async (job: Job) => { - logger.info({ data: job.data }, "Running job"); + logger.info({ data: job.data }, "Running job second worker"); await runJobs(job.data); }, { - concurrency: 50, + concurrency: 100, + connection, + }, +); + +export const thirdWorker = new Worker( + "backupQueue", + async (job: Job) => { + logger.info({ data: job.data }, "Running job third worker"); + await runJobs(job.data); + }, + { + concurrency: 100, connection, }, ); diff --git a/packages/server/src/utils/docker/domain.ts b/packages/server/src/utils/docker/domain.ts index 4bd38f874..cfb74e974 100644 --- a/packages/server/src/utils/docker/domain.ts +++ b/packages/server/src/utils/docker/domain.ts @@ -251,11 +251,15 @@ export const addDomainToCompose = async ( } labels.unshift(...httpLabels); if (!compose.isolatedDeployment) { - if (!labels.includes("traefik.docker.network=dokploy-network")) { - labels.unshift("traefik.docker.network=dokploy-network"); - } - if (!labels.includes("traefik.swarm.network=dokploy-network")) { - labels.unshift("traefik.swarm.network=dokploy-network"); + if (compose.composeType === "docker-compose") { + if (!labels.includes("traefik.docker.network=dokploy-network")) { + labels.unshift("traefik.docker.network=dokploy-network"); + } + } else { + // Stack Case + if (!labels.includes("traefik.swarm.network=dokploy-network")) { + labels.unshift("traefik.swarm.network=dokploy-network"); + } } } } diff --git a/packages/server/src/utils/providers/github.ts b/packages/server/src/utils/providers/github.ts index b13bbfcc4..30125db8b 100644 --- a/packages/server/src/utils/providers/github.ts +++ b/packages/server/src/utils/providers/github.ts @@ -171,7 +171,7 @@ export const cloneGithubRepository = async ({ const cloneUrl = `https://oauth2:${token}@${repoclone}`; try { - writeStream.write(`\nClonning Repo ${repoclone} to ${outputPath}: ✅\n`); + writeStream.write(`\nCloning Repo ${repoclone} to ${outputPath}: ✅\n`); const cloneArgs = [ "clone", "--branch",