From 1664ae9b92bf744878cc003dade629da7d6b1e21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B0=B8=E6=81=92?= Date: Mon, 8 Sep 2025 12:26:36 +0800 Subject: [PATCH 1/6] fix traefik 3.5.0 error fix traefik error:"both Docker and Swarm labels are defined" --- packages/server/src/utils/docker/domain.ts | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) 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"); + } } } } From abcbd2d59946da9ac749ab83396763c23b0c9352 Mon Sep 17 00:00:00 2001 From: HarikrishnanD Date: Tue, 9 Sep 2025 22:07:40 +0530 Subject: [PATCH 2/6] feat: auto-refresh services list when duplicating to same environment - Add cache invalidation for environment.one and environment.byProjectId queries - Fix issue where duplicated services weren't visible until hard refresh - Ensure proper invalidation when duplicating to current environment - Resolves #2565 --- .../dashboard/project/duplicate-project.tsx | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/apps/dokploy/components/dashboard/project/duplicate-project.tsx b/apps/dokploy/components/dashboard/project/duplicate-project.tsx index df81c41f0..b87faa1ed 100644 --- a/apps/dokploy/components/dashboard/project/duplicate-project.tsx +++ b/apps/dokploy/components/dashboard/project/duplicate-project.tsx @@ -80,6 +80,25 @@ 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" @@ -328,4 +347,4 @@ export const DuplicateProject = ({ ); -}; +}; \ No newline at end of file From ec11325165f9ad52952911c26e22c1d6cf0bdf1e Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Tue, 9 Sep 2025 16:40:00 +0000 Subject: [PATCH 3/6] [autofix.ci] apply automated fixes --- .../dashboard/project/duplicate-project.tsx | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/apps/dokploy/components/dashboard/project/duplicate-project.tsx b/apps/dokploy/components/dashboard/project/duplicate-project.tsx index b87faa1ed..3455f34cf 100644 --- a/apps/dokploy/components/dashboard/project/duplicate-project.tsx +++ b/apps/dokploy/components/dashboard/project/duplicate-project.tsx @@ -80,14 +80,18 @@ 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, + 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 }); @@ -98,7 +102,7 @@ export const DuplicateProject = ({ } } } - + toast.success( duplicateType === "new-project" ? "Project duplicated successfully" @@ -347,4 +351,4 @@ export const DuplicateProject = ({ ); -}; \ No newline at end of file +}; From d8a98f39361b9e2d2bbd7d9cac145405810b5c46 Mon Sep 17 00:00:00 2001 From: Andrew Margetts Date: Fri, 12 Sep 2025 15:27:10 +0200 Subject: [PATCH 4/6] =?UTF-8?q?=C2=A0fix:=20fix=20typo=20for=20Github=20cl?= =?UTF-8?q?one?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/server/src/utils/providers/github.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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", From 788dbe405092c447335c1b05580ca5f66d7806f9 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Mon, 15 Sep 2025 23:23:03 -0600 Subject: [PATCH 5/6] chore(package): bump version from v0.25.1 to v0.25.2 --- apps/dokploy/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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", From d9398b955816c68a22826490461b1ca5585493fd Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Mon, 15 Sep 2025 23:43:27 -0600 Subject: [PATCH 6/6] feat(workers): add third worker and increase concurrency for existing workers --- apps/schedules/src/index.ts | 3 ++- apps/schedules/src/workers.ts | 20 ++++++++++++++++---- 2 files changed, 18 insertions(+), 5 deletions(-) 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, }, );