From 9f146d7d809a792ed216e3f8c3f637a10243defe Mon Sep 17 00:00:00 2001 From: s1nyx Date: Wed, 11 Jun 2025 08:06:13 +0200 Subject: [PATCH 1/2] 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 4d26c655..aab7a3b7 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/2] 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 aab7a3b7..ba6e9bca 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 {