From 3e1189776238cd6fd24b75ec531146f210bc67bf Mon Sep 17 00:00:00 2001 From: Rizki Putra Date: Tue, 7 Apr 2026 08:53:47 +0700 Subject: [PATCH 1/2] fix: return a valid docker host for docker desktop --- apps/dokploy/server/utils/docker.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/apps/dokploy/server/utils/docker.ts b/apps/dokploy/server/utils/docker.ts index 07e4e26e1..35144913a 100644 --- a/apps/dokploy/server/utils/docker.ts +++ b/apps/dokploy/server/utils/docker.ts @@ -11,10 +11,20 @@ export const isWSL = async () => { } }; +/** Returns if running in Docker Desktop. */ +export const isDockerDesktop = async () => { + try { + const { stdout } = await execAsync("getent hosts host.docker.internal"); + return !!stdout.trim(); + } catch { + return false; + } +}; + /** Returns the Docker host IP address. */ export const getDockerHost = async (): Promise => { if (process.env.NODE_ENV === "production") { - if (process.platform === "linux" && !(await isWSL())) { + if (process.platform === "linux" && !(await isWSL() || await isDockerDesktop())) { try { // Try to get the Docker bridge IP first const { stdout } = await execAsync( From e802342f5711aef5c64692cf5517139567a0e142 Mon Sep 17 00:00:00 2001 From: rpoetrap Date: Tue, 7 Apr 2026 17:04:38 +0700 Subject: [PATCH 2/2] fix sequential awaits --- apps/dokploy/server/utils/docker.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/dokploy/server/utils/docker.ts b/apps/dokploy/server/utils/docker.ts index 35144913a..084315241 100644 --- a/apps/dokploy/server/utils/docker.ts +++ b/apps/dokploy/server/utils/docker.ts @@ -24,7 +24,11 @@ export const isDockerDesktop = async () => { /** Returns the Docker host IP address. */ export const getDockerHost = async (): Promise => { if (process.env.NODE_ENV === "production") { - if (process.platform === "linux" && !(await isWSL() || await isDockerDesktop())) { + const isLinux = process.platform === "linux" + ? (await Promise.all([isWSL(), isDockerDesktop()])).every((v) => !v) + : false; + + if (isLinux) { try { // Try to get the Docker bridge IP first const { stdout } = await execAsync(