From 371f1cbf3ddb9ad2499c2564f60301d2c91d2a9f Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@keylocation.sg> Date: Wed, 22 Nov 2017 13:25:07 +0100 Subject: [PATCH] feat: docker registry cache (#1210) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use got’s built-in caching with in-memory map. Closes #1028 --- lib/manager/docker/registry.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/manager/docker/registry.js b/lib/manager/docker/registry.js index cae3a83f8c..5a53203555 100644 --- a/lib/manager/docker/registry.js +++ b/lib/manager/docker/registry.js @@ -5,6 +5,8 @@ module.exports = { getTags, }; +const map = new Map(); + async function getDigest(name, tag = 'latest') { const repository = name.includes('/') ? name : `library/${name}`; try { @@ -12,7 +14,7 @@ async function getDigest(name, tag = 'latest') { repository }:pull`; logger.debug(`Obtaining docker registry token for ${repository}`); - const { token } = (await got(authUrl, { json: true })).body; + const { token } = (await got(authUrl, { cache: map, json: true })).body; if (!token) { logger.warn('Failed to obtain docker registry token'); return null; @@ -23,9 +25,8 @@ async function getDigest(name, tag = 'latest') { Authorization: `Bearer ${token}`, Accept: 'application/vnd.docker.distribution.manifest.v2+json', }; - const digest = (await got(url, { json: true, headers })).headers[ - 'docker-content-digest' - ]; + const digest = (await got(url, { cache: map, json: true, headers })) + .headers['docker-content-digest']; logger.debug({ digest }, 'Got docker digest'); return digest; } catch (err) { @@ -41,7 +42,7 @@ async function getTags(name) { repository }:pull`; logger.debug(`Obtaining docker registry token for ${repository}`); - const { token } = (await got(authUrl, { json: true })).body; + const { token } = (await got(authUrl, { cache: map, json: true })).body; if (!token) { logger.warn('Failed to obtain docker registry token'); return null; @@ -52,7 +53,7 @@ async function getTags(name) { Authorization: `Bearer ${token}`, Accept: 'application/vnd.docker.distribution.manifest.v2+json', }; - const res = await got(url, { json: true, headers }); + const res = await got(url, { cache: map, json: true, headers }); logger.debug({ tags: res.body.tags }, 'Got docker tags'); return res.body.tags; } catch (err) { -- GitLab