From 825e6b654c11f302f4353e2166e566b6e2859c5a Mon Sep 17 00:00:00 2001 From: Mauricio Siu Date: Thu, 9 Apr 2026 16:25:36 -0600 Subject: [PATCH] fix: prevent orphaned containers when deleting compose services MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Commands were chained with && so if the project directory was missing, cd would fail and docker compose down would never execute — leaving containers and volumes running. Use semicolons to run each command independently, matching the existing stack deletion pattern. Closes #4064 --- packages/server/src/services/compose.ts | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/packages/server/src/services/compose.ts b/packages/server/src/services/compose.ts index 5db6526a6..0cec3418b 100644 --- a/packages/server/src/services/compose.ts +++ b/packages/server/src/services/compose.ts @@ -440,17 +440,16 @@ export const removeCompose = async ( } } else { const command = ` - docker network disconnect ${compose.appName} dokploy-traefik; - cd ${projectPath} && env -i PATH="$PATH" docker compose -p ${compose.appName} down ${ + docker network disconnect ${compose.appName} dokploy-traefik; + env -i PATH="$PATH" docker compose -p ${compose.appName} down ${ deleteVolumes ? "--volumes" : "" - } && rm -rf ${projectPath}`; + }; + rm -rf ${projectPath}`; if (compose.serverId) { await execAsyncRemote(compose.serverId, command); } else { - await execAsync(command, { - cwd: projectPath, - }); + await execAsync(command); } } } catch (error) {