diff --git a/lib/manager/docker-compose/extract.ts b/lib/manager/docker-compose/extract.ts
index 88adf9f278bf801854aea0e379e47f7fb8b10f25..4bcf0a791324f6cbf0d66b222b9bfeb2357e9261 100644
--- a/lib/manager/docker-compose/extract.ts
+++ b/lib/manager/docker-compose/extract.ts
@@ -1,3 +1,4 @@
+import is from '@sindresorhus/is';
 import { safeLoad } from 'js-yaml';
 
 import { logger } from '../../logger';
@@ -78,7 +79,7 @@ export function extractPackageFile(
     // Image name/tags for services are only eligible for update if they don't
     // use variables and if the image is not built locally
     const deps = Object.values(services || {})
-      .filter((service) => service?.image && !service?.build)
+      .filter((service) => is.string(service?.image) && !service?.build)
       .map((service) => {
         const dep = getDep(service.image);
         const lineNumber = lineMapper.pluckLineNumber(service.image);
diff --git a/lib/manager/dockerfile/__snapshots__/extract.spec.ts.snap b/lib/manager/dockerfile/__snapshots__/extract.spec.ts.snap
index 8fa40c464167908d51018d899be6938725ccabb9..19960ee8cc275f3983b805ff326a9ebd9d29d71f 100644
--- a/lib/manager/dockerfile/__snapshots__/extract.spec.ts.snap
+++ b/lib/manager/dockerfile/__snapshots__/extract.spec.ts.snap
@@ -378,3 +378,9 @@ Array [
   },
 ]
 `;
+
+exports[`lib/manager/dockerfile/extract getDep() rejects null 1`] = `
+Object {
+  "skipReason": "invalid-value",
+}
+`;
diff --git a/lib/manager/dockerfile/extract.spec.ts b/lib/manager/dockerfile/extract.spec.ts
index 864c53b1d32f95b08edab3b8551f494eef0789f9..93d0af0dacf2aca7207ab0e6c344083173ff60ec 100644
--- a/lib/manager/dockerfile/extract.spec.ts
+++ b/lib/manager/dockerfile/extract.spec.ts
@@ -1,5 +1,5 @@
 import { readFileSync } from 'fs';
-import { extractPackageFile } from './extract';
+import { extractPackageFile, getDep } from './extract';
 
 const d1 = readFileSync(
   'lib/manager/dockerfile/__fixtures__/Dockerfile1',
@@ -151,4 +151,9 @@ describe('lib/manager/dockerfile/extract', () => {
       expect(res).toMatchSnapshot();
     });
   });
+  describe('getDep()', () => {
+    it('rejects null', () => {
+      expect(getDep(null)).toMatchSnapshot();
+    });
+  });
 });
diff --git a/lib/manager/dockerfile/extract.ts b/lib/manager/dockerfile/extract.ts
index 2c9b69763784fbf70bceca60f61650ceb8024655..aaba5097229e5d09b53dba6edb84a2cf2d986aad 100644
--- a/lib/manager/dockerfile/extract.ts
+++ b/lib/manager/dockerfile/extract.ts
@@ -1,3 +1,4 @@
+import is from '@sindresorhus/is';
 import * as datasourceDocker from '../../datasource/docker';
 import { logger } from '../../logger';
 import { SkipReason } from '../../types';
@@ -35,6 +36,11 @@ export function getDep(
   currentFrom: string,
   specifyReplaceString = true
 ): PackageDependency {
+  if (!is.string(currentFrom)) {
+    return {
+      skipReason: SkipReason.InvalidValue,
+    };
+  }
   const dep = splitImageParts(currentFrom);
   if (specifyReplaceString) {
     dep.replaceString = currentFrom;