Skip to content

File provider

About

The file provider lets you define Docker images to analyze through a YAML file or a directory.

Example

Register the file provider:

db:
  path: diun.db

watch:
  workers: 20
  schedule: "0 */6 * * *"

regopts:
  - name: "myregistry"
    username: fii
    password: bor
    timeout: 5s
  - name: "docker.io/crazymax"
    selector: image
    username: fii
    password: bor
  - name: "docker.io"
    selector: image
    username: foo
    password: bar

providers:
  file:
    filename: /path/to/config.yml
### /path/to/config.yml

# Watch latest tag of crazymax/nextcloud image on docker.io (DockerHub)
# with registry options named 'docker.io/crazymax' (image selector).
- name: docker.io/crazymax/nextcloud:latest

# Watch 4.0.0 tag of jfrog/artifactory-oss image on frog-docker-reg2.bintray.io (Bintray)
# with registry options named 'myregistry' (name selector).
- name: jfrog-docker-reg2.bintray.io/jfrog/artifactory-oss:4.0.0
  regopt: myregistry

# Watch coreos/hyperkube image on quay.io (Quay) and assume latest tag.
# Add foo=bar metadata to be used in notification template.
- name: quay.io/coreos/hyperkube
  metadata:
    foo: bar

# Watch crazymax/swarm-cronjob image and assume docker.io registry and latest tag
# with registry options named 'docker.io/crazymax' (image selector).
# Only include tags matching regexp ^1\.2\..* and only be notified on new tag.
- name: crazymax/swarm-cronjob
  watch_repo: true
  notify_on:
    - new
  include_tags:
    - ^1\.2\..*

# Watch portainer/portainer image on docker.io (DockerHub) and assume latest tag
# with registry options named 'docker.io' (image selector).
# Only watch latest 10 tags and include tags matching regexp ^\d+\.\d+\..*
- name: docker.io/portainer/portainer
  watch_repo: true
  max_tags: 10
  include_tags:
    - ^\d+\.\d+\..*

# Watch alpine image (library) and assume docker.io registry and latest tag
# with registry options named 'docker.io' (image selector).
# Force linux/arm64/v8 platform for this image
- name: alpine
  watch_repo: true
  platform:
    os: linux
    arch: arm64
    variant: v8

Quick start

Let's take a look with a simple example:

db:
  path: diun.db

watch:
  workers: 20
  schedule: "0 */6 * * *"

regopts:
  - name: "docker.bintray.io"
    selector: image
    username: foo
    password: bar

providers:
  file:
    filename: /path/to/config.yml
# /path/to/config.yml
- name: crazymax/cloudflared
  watch_repo: true
- name: docker.bintray.io/jfrog/xray-mongo:3.2.6

Here we want to analyze all tags of crazymax/cloudflared and docker.bintray.io/jfrog/xray-mongo:3.2.6 tag. Now let's start Diun:

$ diun serve --config diun.yml
Sat, 14 Dec 2019 15:32:23 UTC INF Starting Diun 2.0.0
Sat, 14 Dec 2019 15:32:23 UTC INF Found 2 image(s) to analyze... provider=file
Sat, 14 Dec 2019 15:32:25 UTC INF New image found id=crazymax/cloudflared image=docker.io/crazymax/cloudflared:latest provider=file
Sat, 14 Dec 2019 15:32:28 UTC INF New image found id=crazymax/cloudflared image=docker.io/crazymax/cloudflared:2019.11.3 provider=file
Sat, 14 Dec 2019 15:32:28 UTC INF New image found id=crazymax/cloudflared image=docker.io/crazymax/cloudflared:2019.11.0 provider=file
Sat, 14 Dec 2019 15:32:28 UTC INF New image found id=crazymax/cloudflared image=docker.io/crazymax/cloudflared:2019.10.1 provider=file
Sat, 14 Dec 2019 15:32:28 UTC INF New image found id=crazymax/cloudflared image=docker.io/crazymax/cloudflared:2019.9.0 provider=file
Sat, 14 Dec 2019 15:32:28 UTC INF New image found id=crazymax/cloudflared image=docker.io/crazymax/cloudflared:2019.9.2 provider=file
Sat, 14 Dec 2019 15:32:28 UTC INF New image found id=crazymax/cloudflared image=docker.io/crazymax/cloudflared:2019.10.2 provider=file
Sat, 14 Dec 2019 15:32:28 UTC INF New image found id=crazymax/cloudflared image=docker.io/crazymax/cloudflared:2019.11.2 provider=file
Sat, 14 Dec 2019 15:32:28 UTC INF New image found id=crazymax/cloudflared image=docker.io/crazymax/cloudflared:2019.9.1 provider=file
Sat, 14 Dec 2019 15:32:28 UTC INF New image found id=crazymax/cloudflared image=docker.io/crazymax/cloudflared:2019.10.4 provider=file
Sat, 14 Dec 2019 15:32:28 UTC INF New image found id=docker.bintray.io/jfrog/xray-mongo:3.2.6 image=docker.bintray.io/jfrog/xray-mongo:3.2.6 provider=file
Sat, 14 Dec 2019 15:32:28 UTC INF Cron initialized with schedule 0 */6 * * *
Sat, 14 Dec 2019 15:32:28 UTC INF Next run in 31 seconds (2019-12-14 15:33:00 +0000 UTC)

Configuration

filename

Defines the path to the configuration file.

Warning

filename and directory are mutually exclusive

File

providers:
  file:
    filename: /path/to/config/conf.yml

Environment variables

  • DIUN_PROVIDERS_FILE_FILENAME

directory

Defines the path to the directory that contains the configuration files (*.yml or *.yaml).

Warning

filename and directory are mutually exclusive

File

providers:
  file:
    directory: /path/to/config

Environment variables

  • DIUN_PROVIDERS_FILE_DIRECTORY

YAML configuration file

The configuration file(s) defines a slice of images to analyze with the following fields:

Name Default Description
name latest Docker image name to watch using registry/path:tag format. If registry omitted, docker.io will be used and if tag omitted, latest will be used
regopt Registry options name to use
watch_repo false Watch all tags of this image (be careful with this setting)
notify_on new;update Semicolon separated list of status to be notified: new, update
sort_tags reverse Sort tags method if diun.watch_repo enabled. One of default, reverse, semver, lexicographical
max_tags 0 Maximum number of tags to watch if watch_repo enabled. 0 means all of them
include_tags List of regular expressions to include tags. Can be useful if you enable watch_repo
exclude_tags List of regular expressions to exclude tags. Can be useful if you enable watch_repo
hub_link automatic Set registry hub link for this image
platform.os automatic Operating system to use as custom platform
platform.arch automatic CPU architecture to use as custom platform
platform.variant automatic Variant of the CPU to use as custom platform
metadata.* Additional metadata that can be used in notification template (e.g. metadata.foo=bar)

Last update: 2022-12-29 10:06:32
Created: 2020-05-25 12:08:12