Run self-hosted Renovate in an always-on container, on a schedule or when your own scheduler asks
50K+
docker-renovate-scheduler keeps your self-hosted Renovate bot in one always-on container that runs it on a schedule or when your own scheduler asks. It opens no ports.
docker-renovate-scheduler keeps dependency pull requests coming from your Renovate bot, with no cron job to write:
docker exec or your own scheduler, for all repositories or only named ones./data between runs.docker-renovate-scheduler is built for people who self-host Renovate on a Docker host and want it to run like their other always-on containers, not from cron. It is Renovate's official image plus a scheduler, and passes your RENOVATE_* settings on unchanged. You need a bot account's token or a GitHub App.
Other ways to run Renovate suit a different setup:
docker-renovate-scheduler is free software under the Apache-2.0 license.
docker pull cplieger/docker-renovate-scheduler:latest
Also published to ghcr.io/cplieger/docker-renovate-scheduler with identical images and tags. Release versions are tagged vX.Y.Z alongside latest.
# Example compose for docker-renovate-scheduler. See docs/configuration.md and docs/hardening.md for all configuration options and hardening.
services:
renovate:
image: ghcr.io/cplieger/docker-renovate-scheduler:latest
container_name: renovate
restart: unless-stopped
stop_grace_period: 10m # lets a run in progress finish when the container stops
environment:
RUN_INTERVAL: "6h" # time between runs, or "off" to wait for your own scheduler
LOG_FORMAT: "json" # Renovate's own setting, for JSON logs a log collector can read
# Every RENOVATE_* setting goes to Renovate unchanged.
RENOVATE_PLATFORM: "github"
RENOVATE_AUTODISCOVER: "true" # or list the repositories in RENOVATE_REPOSITORIES
RENOVATE_TOKEN: "${RENOVATE_TOKEN}" # the bot account's token, set in .env
RENOVATE_GITHUB_COM_TOKEN: "${RENOVATE_GITHUB_COM_TOKEN}" # a github.com token for changelogs and rate limits, set in .env
RENOVATE_PERSIST_REPO_DATA: "true" # later runs fetch the repositories instead of cloning them again
RENOVATE_REPOSITORY_CACHE: "enabled"
RENOVATE_X_SQLITE_PACKAGE_CACHE: "true" # keeps the package cache from growing until runs fail
volumes:
# Create ./data and run "sudo chown 12021:0 data" before the first start,
# or the container restarts in a loop.
- "./data:/data"
Apache-2.0. See LICENSE. The image carries the license text of every bundled component under /usr/share/licenses/.
The runtime base is the official renovate/renovate image, which packages Renovate under AGPL-3.0. The version and digest that base is pinned to are in the Dockerfile's FROM line, and Renovate's license and the corresponding source for that version are in the upstream repository at the matching release tag (https://github.com/renovatebot/renovate/releases/tag/<version>). The build applies no patches to Renovate, so this repository's Dockerfile is the complete record of what it adds to that image (the scheduler binary and a Go toolchain) and what it removes from it (the unused docker CLI).
Content type
Image
Digest
sha256:30ab0cd8b…
Size
488 MB
Last updated
about 8 hours ago
docker pull cplieger/docker-renovate-scheduler