Sign inSign up

cplieger/docker-renovate-scheduler

By cplieger

•Updated about 8 hours ago

Run self-hosted Renovate in an always-on container, on a schedule or when your own scheduler asks

Image
Security
Integration & delivery
Developer tools
0

50K+

cplieger/docker-renovate-scheduler repository overview

⁠docker-renovate-scheduler

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.

⁠What it does

docker-renovate-scheduler keeps dependency pull requests coming from your Renovate bot, with no cron job to write:

  • Runs Renovate every 6 hours by default and keeps that rhythm when the container restarts or updates.
  • Also starts a run on request, from docker exec or your own scheduler, for all repositories or only named ones.
  • Runs one pass at a time and queues the others, each with its own result.
  • Keeps clones and caches on /data between runs.
  • Marks itself unhealthy when a run fails, until the next good run.

⁠Who it is for

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.

⁠Pull

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.

⁠Quick start

# 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"

⁠Documentation

⁠License

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).

Tag summary

Content type

Image

Digest

sha256:30ab0cd8b…

Size

488 MB

Last updated

about 8 hours ago

docker pull cplieger/docker-renovate-scheduler