diff --git a/lib/config/presets/internal/workarounds.spec.ts b/lib/config/presets/internal/workarounds.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..f0d8440bbb99175b0f234e266ce66b5defa2f0c9
--- /dev/null
+++ b/lib/config/presets/internal/workarounds.spec.ts
@@ -0,0 +1,45 @@
+import { regEx } from '../../../util/regex';
+import { presets } from './workarounds';
+
+describe('config/presets/internal/workarounds', () => {
+  describe('bitnamiDockerImageVersioning', () => {
+    const versioning = presets.bitnamiDockerImageVersioning.packageRules![0]
+      .versioning as string;
+    const versioningRe = regEx(versioning.substring(6));
+    const matchCurrentValue = presets.bitnamiDockerImageVersioning
+      .packageRules![0].matchCurrentValue as string;
+    const matchCurrentValueRe = regEx(
+      matchCurrentValue.substring(1, matchCurrentValue.length - 1),
+    );
+
+    it.each`
+      input                     | expected
+      ${'latest'}               | ${false}
+      ${'20'}                   | ${true}
+      ${'20-debian'}            | ${false}
+      ${'20-debian-12'}         | ${true}
+      ${'1.24'}                 | ${true}
+      ${'1.24-debian-12'}       | ${true}
+      ${'1.24.0'}               | ${true}
+      ${'1.24.0-debian-12'}     | ${true}
+      ${'1.24.0-debian-12-r24'} | ${true}
+    `('versioning("$input") == "$expected"', ({ input, expected }) => {
+      expect(versioningRe.test(input)).toEqual(expected);
+    });
+
+    it.each`
+      input                     | expected
+      ${'latest'}               | ${false}
+      ${'20'}                   | ${false}
+      ${'20-debian'}            | ${false}
+      ${'20-debian-12'}         | ${true}
+      ${'1.24'}                 | ${false}
+      ${'1.24-debian-12'}       | ${true}
+      ${'1.24.0'}               | ${false}
+      ${'1.24.0-debian-12'}     | ${true}
+      ${'1.24.0-debian-12-r24'} | ${true}
+    `('matchCurrentValue("$input") == "$expected"', ({ input, expected }) => {
+      expect(matchCurrentValueRe.test(input)).toEqual(expected);
+    });
+  });
+});
diff --git a/lib/config/presets/internal/workarounds.ts b/lib/config/presets/internal/workarounds.ts
index a6c8fe3f0c1b5aaa5d8c981f2b09712b34425d83..158515222e43b0b1d34074975a5995c717b83e3a 100644
--- a/lib/config/presets/internal/workarounds.ts
+++ b/lib/config/presets/internal/workarounds.ts
@@ -21,9 +21,27 @@ export const presets: Record<string, Preset> = {
       'workarounds:disableEclipseLifecycleMapping',
       'workarounds:disableMavenParentRoot',
       'workarounds:containerbase',
+      'workarounds:bitnamiDockerImageVersioning',
     ],
     ignoreDeps: [], // Hack to improve onboarding PR description
   },
+  bitnamiDockerImageVersioning: {
+    description: 'Use custom regex versioning for bitnami images',
+    packageRules: [
+      {
+        matchCurrentValue:
+          '/^(?<major>\\d+)(?:\\.(?<minor>\\d+)(?:\\.(?<patch>\\d+))?)?-(?<compatibility>.+)-(?<build>\\d+)(?:-r(?<revision>\\d+))?$/',
+        matchDatasources: ['docker'],
+        matchPackagePrefixes: [
+          'bitnami/',
+          'docker.io/bitnami/',
+          'gcr.io/bitnami-containers/',
+        ],
+        versioning:
+          'regex:^(?<major>\\d+)(?:\\.(?<minor>\\d+)(?:\\.(?<patch>\\d+))?)?(:?-(?<compatibility>.+)-(?<build>\\d+)(?:-r(?<revision>\\d+))?)?$',
+      },
+    ],
+  },
   containerbase: {
     description: 'Add some containerbase overrides.',
     packageRules: [