From 2ba6ab854b6543bd9e069e04a6d2c1c5b50221f8 Mon Sep 17 00:00:00 2001 From: PunGrumpy <108584943+PunGrumpy@users.noreply.github.com> Date: Sun, 12 Jul 2026 00:01:29 +0700 Subject: [PATCH 1/4] fix(core): add dockerignores to ProjectInfo type definition --- packages/core/src/types/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/core/src/types/index.ts b/packages/core/src/types/index.ts index a33267a..eec85e7 100644 --- a/packages/core/src/types/index.ts +++ b/packages/core/src/types/index.ts @@ -18,6 +18,7 @@ export interface Diagnostic { export interface ProjectInfo { dockerfiles: string[]; composeFiles: string[]; + dockerignores?: string[]; } export interface DiagnoseResult { From 1fde3649086aa9f93d89a1f12db829b472af9f85 Mon Sep 17 00:00:00 2001 From: PunGrumpy <108584943+PunGrumpy@users.noreply.github.com> Date: Sun, 12 Jul 2026 00:02:09 +0700 Subject: [PATCH 2/4] fix(core): track .dockerignore in discoverProject --- packages/core/src/project-info/discover.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/core/src/project-info/discover.ts b/packages/core/src/project-info/discover.ts index afd69a5..7a2dfa8 100644 --- a/packages/core/src/project-info/discover.ts +++ b/packages/core/src/project-info/discover.ts @@ -36,10 +36,15 @@ export const discoverProject = async ( const allFiles = await walk(rootDir); const dockerfiles: string[] = []; const composeFiles: string[] = []; + const dockerignores: string[] = []; for (const file of allFiles) { const base = path.basename(file).toLowerCase(); + if (base === ".dockerignore") { + dockerignores.push(path.relative(rootDir, file)); + } + // Match Dockerfile, Dockerfile.*, *.dockerfile if ( base === "dockerfile" || @@ -65,5 +70,6 @@ export const discoverProject = async ( return { composeFiles, dockerfiles, + dockerignores, }; }; From 54dd50b9746756bf8b4fe99b65b0b6480972bc51 Mon Sep 17 00:00:00 2001 From: PunGrumpy <108584943+PunGrumpy@users.noreply.github.com> Date: Sun, 12 Jul 2026 00:03:49 +0700 Subject: [PATCH 3/4] fix(cli): include dockerignores in CLI projectFilesList and extract filterDiagnostics --- packages/docker-doctor/src/cli.ts | 37 ++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/packages/docker-doctor/src/cli.ts b/packages/docker-doctor/src/cli.ts index 5acabe0..ff76aeb 100644 --- a/packages/docker-doctor/src/cli.ts +++ b/packages/docker-doctor/src/cli.ts @@ -338,6 +338,25 @@ const runRulesEngine = async ( return diagnostics; }; +const filterDiagnostics = ( + diagnostics: Diagnostic[], + categories?: Record +): Diagnostic[] => { + if (!categories) { + return diagnostics; + } + return diagnostics.filter((d) => { + const ruleDef = findRule(d.rule); + if (ruleDef) { + const catSeverity = categories[ruleDef.category]; + if (catSeverity === "off") { + return false; + } + } + return true; + }); +}; + const program = new Command(); program @@ -417,6 +436,7 @@ program const projectFilesList = [ ...project.dockerfiles, ...project.composeFiles, + ...(project.dockerignores || []), ]; const diagnostics = await runRulesEngine( @@ -430,19 +450,10 @@ program ); // Filter by category config if needed - let filteredDiagnostics = diagnostics; - if (config.categories) { - filteredDiagnostics = diagnostics.filter((d) => { - const ruleDef = findRule(d.rule); - if (ruleDef) { - const catSeverity = config.categories?.[ruleDef.category]; - if (catSeverity === "off") { - return false; - } - } - return true; - }); - } + const filteredDiagnostics = filterDiagnostics( + diagnostics, + config.categories + ); // Calculate score const { score, label } = calculateScore(filteredDiagnostics); From 611545a644ada2273e227ebea5f99a3754e380ea Mon Sep 17 00:00:00 2001 From: PunGrumpy <108584943+PunGrumpy@users.noreply.github.com> Date: Sun, 12 Jul 2026 00:46:12 +0700 Subject: [PATCH 4/4] chore(changeset): add changeset for .dockerignore validation fix --- .changeset/fix-dockerignore-validation.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/fix-dockerignore-validation.md diff --git a/.changeset/fix-dockerignore-validation.md b/.changeset/fix-dockerignore-validation.md new file mode 100644 index 0000000..1630b6e --- /dev/null +++ b/.changeset/fix-dockerignore-validation.md @@ -0,0 +1,5 @@ +--- +"@docker-doctor/cli": patch +--- + +Fix workspace discovery to correctly track and validate `.dockerignore` files, resolving false-positive warnings in the `useDockerignore` performance rule.