diff --git a/lib/datasource/docker/index.ts b/lib/datasource/docker/index.ts index 65fe0466323ea0444c333da5f47dc806c5968545..815f7af94d5a7ad0b074b634cdf84800718b4e49 100644 --- a/lib/datasource/docker/index.ts +++ b/lib/datasource/docker/index.ts @@ -15,10 +15,13 @@ import { PkgReleaseConfig, ReleaseResult } from '../common'; const ecrRegex = /\d+\.dkr\.ecr\.([-a-z0-9]+)\.amazonaws\.com/; -function getRegistryRepository(lookupName: string, registryUrls: string[]) { +export function getRegistryRepository( + lookupName: string, + registryUrls: string[] +) { let registry: string; const split = lookupName.split('/'); - if (split.length > 1 && split[0].includes('.')) { + if (split.length > 1 && (split[0].includes('.') || split[0].includes(':'))) { [registry] = split; split.shift(); } @@ -33,7 +36,7 @@ function getRegistryRepository(lookupName: string, registryUrls: string[]) { registry = `https://${registry}`; } const opts = hostRules.find({ url: registry }); - if (opts.insecureRegistry) { + if (opts && opts.insecureRegistry) { registry = registry.replace('https', 'http'); } if (registry.endsWith('.docker.io') && !repository.includes('/')) { diff --git a/test/datasource/__snapshots__/docker.spec.ts.snap b/test/datasource/__snapshots__/docker.spec.ts.snap index 90e322975cd7436cd9984839935fe8482f782c63..88b83ee46b3fe756b9ec0d3d2e029d34f6bd8d39 100644 --- a/test/datasource/__snapshots__/docker.spec.ts.snap +++ b/test/datasource/__snapshots__/docker.spec.ts.snap @@ -396,3 +396,10 @@ exports[`api/docker getPkgReleases uses lower tag limit for ECR deps 1`] = ` ], } `; + +exports[`api/docker getRegistryRepository handles local registries 1`] = ` +Object { + "registry": "https://registry:5000", + "repository": "org/package", +} +`; diff --git a/test/datasource/docker.spec.ts b/test/datasource/docker.spec.ts index 1140f1e22a82f724bfe0b80f1e6403a20bdc1127..8d32c136c408f6ae308ab8b4f878b155e3d025f2 100644 --- a/test/datasource/docker.spec.ts +++ b/test/datasource/docker.spec.ts @@ -12,6 +12,12 @@ jest.mock('../../lib/util/got'); jest.mock('../../lib/util/host-rules'); describe('api/docker', () => { + describe('getRegistryRepository', () => { + it('handles local registries', () => { + const res = docker.getRegistryRepository('registry:5000/org/package', []); + expect(res).toMatchSnapshot(); + }); + }); describe('getDigest', () => { beforeEach(() => { jest.resetAllMocks();