From 425b8ec3c2785ef998a1af8b00f08168d055cd8e Mon Sep 17 00:00:00 2001 From: Mauricio Siu Date: Wed, 19 Nov 2025 09:58:16 -0600 Subject: [PATCH] fix: update Docker command execution to use a clean environment - Modified Docker command invocations in compose service functions to use `env -i PATH="$PATH"` for improved environment isolation. - Ensured consistent handling of Docker commands across `removeCompose`, `startCompose`, and `stopCompose` functions in `compose.ts`. - Updated command execution in the builders to maintain environment integrity during Docker operations. --- packages/server/src/services/compose.ts | 15 +++++++++------ packages/server/src/utils/builders/compose.ts | 2 +- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/packages/server/src/services/compose.ts b/packages/server/src/services/compose.ts index 519a0c404..3a2afb64d 100644 --- a/packages/server/src/services/compose.ts +++ b/packages/server/src/services/compose.ts @@ -375,7 +375,7 @@ export const removeCompose = async ( } else { const command = ` docker network disconnect ${compose.appName} dokploy-traefik; - cd ${projectPath} && docker compose -p ${compose.appName} down ${ + cd ${projectPath} && env -i PATH="$PATH" docker compose -p ${compose.appName} down ${ deleteVolumes ? "--volumes" : "" } && rm -rf ${projectPath}`; @@ -402,7 +402,7 @@ export const startCompose = async (composeId: string) => { const projectPath = join(COMPOSE_PATH, compose.appName, "code"); const path = compose.sourceType === "raw" ? "docker-compose.yml" : compose.composePath; - const baseCommand = `docker compose -p ${compose.appName} -f ${path} up -d`; + const baseCommand = `env -i PATH="$PATH" docker compose -p ${compose.appName} -f ${path} up -d`; if (compose.composeType === "docker-compose") { if (compose.serverId) { await execAsyncRemote( @@ -437,14 +437,17 @@ export const stopCompose = async (composeId: string) => { if (compose.serverId) { await execAsyncRemote( compose.serverId, - `cd ${join(COMPOSE_PATH, compose.appName)} && docker compose -p ${ + `cd ${join(COMPOSE_PATH, compose.appName)} && env -i PATH="$PATH" docker compose -p ${ compose.appName } stop`, ); } else { - await execAsync(`docker compose -p ${compose.appName} stop`, { - cwd: join(COMPOSE_PATH, compose.appName), - }); + await execAsync( + `env -i PATH="$PATH" docker compose -p ${compose.appName} stop`, + { + cwd: join(COMPOSE_PATH, compose.appName), + }, + ); } } diff --git a/packages/server/src/utils/builders/compose.ts b/packages/server/src/utils/builders/compose.ts index 6ac5bf130..e52beef57 100644 --- a/packages/server/src/utils/builders/compose.ts +++ b/packages/server/src/utils/builders/compose.ts @@ -54,7 +54,7 @@ Compose Type: ${composeType} ✅`; ${exportEnvCommand} ${compose.isolatedDeployment ? `docker network inspect ${compose.appName} >/dev/null 2>&1 || docker network create --attachable ${compose.appName}` : ""} - docker ${command.split(" ").join(" ")} 2>&1 || { echo "Error: ❌ Docker command failed"; exit 1; } + env -i PATH="$PATH" docker ${command.split(" ").join(" ")} 2>&1 || { echo "Error: ❌ Docker command failed"; exit 1; } ${compose.isolatedDeployment ? `docker network connect ${compose.appName} $(docker ps --filter "name=dokploy-traefik" -q) >/dev/null 2>&1` : ""} echo "Docker Compose Deployed: ✅";