From 9f146d7d809a792ed216e3f8c3f637a10243defe Mon Sep 17 00:00:00 2001 From: s1nyx Date: Wed, 11 Jun 2025 08:06:13 +0200 Subject: [PATCH 1/3] fix(traefik-setup): now pulling the traefik image to make it sure it's present locally --- packages/server/src/setup/traefik-setup.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/packages/server/src/setup/traefik-setup.ts b/packages/server/src/setup/traefik-setup.ts index 4d26c655c..aab7a3b79 100644 --- a/packages/server/src/setup/traefik-setup.ts +++ b/packages/server/src/setup/traefik-setup.ts @@ -124,6 +124,17 @@ export const initializeTraefik = async ({ console.log("No existing container to remove"); } + console.log(`Pulling image ${imageName}...`); + const stream = await docker.pull(imageName); + await new Promise((resolve, reject) => { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + docker.modem.followProgress(stream, (err: Error, res: any) => + err ? reject(err) : resolve(res), + ); + }); + console.log(`Image ${imageName} pulled successfully.`); + // Create and start the new container try { await docker.createContainer(settings); From 9fb6ca2b3b7e22c608c199409057a75026d9e0c6 Mon Sep 17 00:00:00 2001 From: s1nyx Date: Wed, 11 Jun 2025 08:12:00 +0200 Subject: [PATCH 2/3] feat(traefik-setup): check for existing image before pulling to optimize image management --- packages/server/src/setup/traefik-setup.ts | 29 ++++++++++++++-------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/packages/server/src/setup/traefik-setup.ts b/packages/server/src/setup/traefik-setup.ts index aab7a3b79..ba6e9bca8 100644 --- a/packages/server/src/setup/traefik-setup.ts +++ b/packages/server/src/setup/traefik-setup.ts @@ -124,16 +124,25 @@ export const initializeTraefik = async ({ console.log("No existing container to remove"); } - console.log(`Pulling image ${imageName}...`); - const stream = await docker.pull(imageName); - await new Promise((resolve, reject) => { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - docker.modem.followProgress(stream, (err: Error, res: any) => - err ? reject(err) : resolve(res), - ); - }); - console.log(`Image ${imageName} pulled successfully.`); + try { + await docker.getImage(imageName).inspect(); + console.log(`Image ${imageName} already exists locally.`); + } catch (error: any) { + if (error?.statusCode === 404) { + console.log(`Image ${imageName} not found, pulling...`); + const stream = await docker.pull(imageName); + await new Promise((resolve, reject) => { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + docker.modem.followProgress(stream, (err: Error, res: any) => + err ? reject(err) : resolve(res), + ); + }); + console.log(`Image ${imageName} pulled successfully.`); + } else { + throw error; + } + } // Create and start the new container try { From c15ee721ff134d6d5db4c3bf66990a3016284eb3 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sat, 5 Jul 2025 00:01:41 -0600 Subject: [PATCH 3/3] feat(setup): add async execution of docker pull for traefik image during setup --- apps/dokploy/setup.ts | 2 ++ packages/server/src/setup/traefik-setup.ts | 20 -------------------- 2 files changed, 2 insertions(+), 20 deletions(-) diff --git a/apps/dokploy/setup.ts b/apps/dokploy/setup.ts index 5e15db071..f7fe34106 100644 --- a/apps/dokploy/setup.ts +++ b/apps/dokploy/setup.ts @@ -12,6 +12,7 @@ import { initializeNetwork, initializeSwarm, } from "@dokploy/server/setup/setup"; +import { execAsync } from "@dokploy/server"; (async () => { try { setupDirectories(); @@ -20,6 +21,7 @@ import { await initializeNetwork(); createDefaultTraefikConfig(); createDefaultServerTraefikConfig(); + await execAsync("docker pull traefik:v3.1.2"); await initializeTraefik(); await initializeRedis(); await initializePostgres(); diff --git a/packages/server/src/setup/traefik-setup.ts b/packages/server/src/setup/traefik-setup.ts index ba6e9bca8..4d26c655c 100644 --- a/packages/server/src/setup/traefik-setup.ts +++ b/packages/server/src/setup/traefik-setup.ts @@ -124,26 +124,6 @@ export const initializeTraefik = async ({ console.log("No existing container to remove"); } - try { - await docker.getImage(imageName).inspect(); - console.log(`Image ${imageName} already exists locally.`); - } catch (error: any) { - if (error?.statusCode === 404) { - console.log(`Image ${imageName} not found, pulling...`); - const stream = await docker.pull(imageName); - await new Promise((resolve, reject) => { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - docker.modem.followProgress(stream, (err: Error, res: any) => - err ? reject(err) : resolve(res), - ); - }); - console.log(`Image ${imageName} pulled successfully.`); - } else { - throw error; - } - } - // Create and start the new container try { await docker.createContainer(settings);