7.6 KiB
7.6 KiB
Scenario 2: Dockerfile with Dry Run
Overview
This scenario demonstrates how Renovate detects outdated versions in a Dockerfile.
Take a look at the included Dockerfile.
Run Renovate with some defaults disabled
npx renovate \
--platform=local \ # our directory has no git repo (yet)
--token=<PAT> \ # authorization against GitHub
--dry-run \ # do not take any actions (create Issues, Pull Requests, etc.)
--onboarding=false \ # do not create an onboarding PR
--require-config=ignored \ # do not require a config file
--base-dir=. # limit discovery to this directory (would default to the entire repository)
The log below shows:
- Renovate detects the Dockerfile and one dependency (the base image)
- Renovate tries to look up the base image on Docker Hub, but fails with a 401 Unauthorized error due to no credentials
- Renovate tries to update a Dependency Dashboard: Renovate would create a GitHub Issue giving an overview of all dependencies
WARN: cli config dryRun property has been changed to full
INFO: Repository started (repository=local)
"renovateVersion": "37.440.7"
INFO: Dependency extraction complete (repository=local)
"stats": {
"managers": {"dockerfile": {"fileCount": 1, "depCount": 1}},
"total": {"fileCount": 1, "depCount": 1}
}
INFO: Docker Hub lookup failure (repository=local)
"err": {
"name": "HTTPError",
"code": "ERR_NON_2XX_3XX_RESPONSE",
"timings": {
"start": 1775591574057,
"socket": 1775591574057,
"lookup": 1775591574057,
"connect": 1775591574057,
"secureConnect": 1775591574057,
"upload": 1775591574057,
"response": 1775591574166,
"end": 1775591574167,
"phases": {
"wait": 0,
"dns": 0,
"tcp": 0,
"tls": 0,
"request": 0,
"firstByte": 109,
"download": 1,
"total": 110
}
},
"message": "Response code 401 (Unauthorized)",
"stack": "HTTPError: Response code 401 (Unauthorized)\n at Request.<anonymous> (/Users/vincent.mahnke/.npm/_npx/05eeecd92f4e18e0/node_modules/got/dist/source/as-promise/index.js:118:42)\n at processTicksAndRejections (node:internal/process/task_queues:104:5)",
"options": {
"headers": {
"user-agent": "RenovateBot/37.440.7 (https://github.com/renovatebot/renovate)",
"accept": "application/json",
"authorization": "***********",
"accept-encoding": "gzip, deflate, br"
},
"url": "https://index.docker.io/v2/paperlessngx/paperless/tags/list?n=10000",
"hostType": "docker",
"username": "",
"password": "",
"method": "GET",
"http2": false
},
"response": {
"statusCode": 401,
"statusMessage": "Unauthorized",
"body": {
"errors": [
{
"code": "UNAUTHORIZED",
"message": "authentication required",
"detail": [
{
"Type": "repository",
"Class": "",
"Name": "paperlessngx/paperless",
"Action": "pull"
}
]
}
]
},
"headers": {
"date": "Tue, 07 Apr 2026 19:52:54 GMT",
"content-type": "application/json",
"content-length": "165",
"connection": "keep-alive",
"docker-distribution-api-version": "registry/2.0",
"www-authenticate": "Bearer realm=\"https://auth.docker.io/token\",service=\"registry.docker.io\",scope=\"repository:paperlessngx/paperless:pull\",error=\"insufficient_scope\"",
"strict-transport-security": "max-age=31536000"
},
"httpVersion": "1.1",
"retryCount": 0
}
}
INFO: DRY-RUN: Would close Dependency Dashboard (repository=local)
"title": "Dependency Dashboard"
ERROR: Repository has unknown error (repository=local)
"err": {
"message": "Cannot read properties of undefined (reading 'renovate/reconfigure')",
"stack": "TypeError: Cannot read properties of undefined (reading 'renovate/reconfigure')\n at getBranchCommit (/Users/vincent.mahnke/.npm/_npx/05eeecd92f4e18e0/node_modules/renovate/lib/util/git/index.ts:504:30)\n at validateReconfigureBranch (/Users/vincent.mahnke/.npm/_npx/05eeecd92f4e18e0/node_modules/renovate/lib/workers/repository/reconfigure/index.ts:61:36)\n at processTicksAndRejections (node:internal/process/task_queues:104:5)\n at finalizeRepo (/Users/vincent.mahnke/.npm/_npx/05eeecd92f4e18e0/node_modules/renovate/lib/workers/repository/finalize/index.ts:20:3)\n at Object.renovateRepository (/Users/vincent.mahnke/.npm/_npx/05eeecd92f4e18e0/node_modules/renovate/lib/workers/repository/index.ts:105:7)\n at attributes.repository (/Users/vincent.mahnke/.npm/_npx/05eeecd92f4e18e0/node_modules/renovate/lib/workers/global/index.ts:218:11)\n at start (/Users/vincent.mahnke/.npm/_npx/05eeecd92f4e18e0/node_modules/renovate/lib/workers/global/index.ts:203:7)\n at /Users/vincent.mahnke/.npm/_npx/05eeecd92f4e18e0/node_modules/renovate/lib/renovate.ts:18:22"
}
INFO: Repository finished (repository=local)
"cloned": undefined,
"durationMs": 806
INFO: Renovate was run at log level "info". Set LOG_LEVEL=debug in environment variables to see extended debug logs.
INFO: Renovate is exiting with a non-zero code due to the following logged errors
"loggerErrors": [
{
"name": "renovate",
"level": 50,
"logContext": "zpmkFh2liN0xgt7FoPX1h",
"repository": "local",
"err": {
"message": "Cannot read properties of undefined (reading 'renovate/reconfigure')",
"stack": "TypeError: Cannot read properties of undefined (reading 'renovate/reconfigure')\n at getBranchCommit (/Users/vincent.mahnke/.npm/_npx/05eeecd92f4e18e0/node_modules/renovate/lib/util/git/index.ts:504:30)\n at validateReconfigureBranch (/Users/vincent.mahnke/.npm/_npx/05eeecd92f4e18e0/node_modules/renovate/lib/workers/repository/reconfigure/index.ts:61:36)\n at processTicksAndRejections (node:internal/process/task_queues:104:5)\n at finalizeRepo (/Users/vincent.mahnke/.npm/_npx/05eeecd92f4e18e0/node_modules/renovate/lib/workers/repository/finalize/index.ts:20:3)\n at Object.renovateRepository (/Users/vincent.mahnke/.npm/_npx/05eeecd92f4e18e0/node_modules/renovate/lib/workers/repository/index.ts:105:7)\n at attributes.repository (/Users/vincent.mahnke/.npm/_npx/05eeecd92f4e18e0/node_modules/renovate/lib/workers/global/index.ts:218:11)\n at start (/Users/vincent.mahnke/.npm/_npx/05eeecd92f4e18e0/node_modules/renovate/lib/workers/global/index.ts:203:7)\n at /Users/vincent.mahnke/.npm/_npx/05eeecd92f4e18e0/node_modules/renovate/lib/renovate.ts:18:22"
},
"msg": "Repository has unknown error"
}
]
Running on GitHub, Renovate only needs a token to work.
Self-hosting Renovate, please read the security implications.