Ouroboros logo

Ouroboros est un outil déployé via Docker permettant d'automatiser les mises-à-jour des images dockers utilisées par certains conteneurs.

Configuration

Ouroboros étant déployé via Docker, il n'est pas nécessaire de l'installer. À la place on le configure via un fichier docker-compose.yml :

#docker-compose.yml
version: '3'

services:
  ouroboros:
    image: pyouroboros/ouroboros:1.4.2
    restart: "always"
    container_name: "ouroboros"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    environment:
      LABEL_ENABLE: "true"
      LABELS_ONLY: "true"
      CRON: "* * * * *"
      SELF_UPDATE: "false"
      REPO_USER: ${REPO_USER}
      REPO_PASS: ${REPO_PASS}

On peut noter ici qu'Ouroboros manipulant docker, il convient de lui donner accès au socker docker via un volume. La configuration se fait via les variables d'environnement:

  • LABEL_ENABLE, combiné à LABELS_ONLY: Dit à Ouroboros d'utiliser des labels docker pour savoir quels conteneurs mettre à jour
  • CRON: Définit la fréquence à laquelle chercher des mises-à-jour, suivant la syntaxe cron
  • SELF_UPDATE : Indique à Ouroboros de ne pas se mettre lui-même à jour
  • REPO_USER et REPO_PASS : Ces deux variables sont facultatives, mais nécessaires si on utilise des images d'un dépôt privé (tel Harbor).

Les valeurs de REPO_USER et REPO_PASS sont définies via des variables d'environnement déclarées dans un fichier .env situé au même endroit que le fichier docker-compose.yml, par exemple :

#.env
REPO_USER=toto
REPO_PASS=mon_password_tres_securise

On peut enfin démarrer Ouroboros comme n'importe quel conteneur :

sudo docker-compose up -d

Utilisation des labels

Une fois Ouroboros configuré et démarré, on peut lui indiquer quels conteneurs surveiller et mettre à jour si besoin via des labels. Il suffit en effet d'associer aux conteneurs désirés le label suivant :

com.ouroboros.enable: "true"

Par exemple, le fichier docker-compose.yml d'une image nginx qu'on voudrait mettre à jour automatiquement via Ouroboros serait :

version: '3'
services:
  alpine:
    image: nginx/nginx:latest
    labels:
      com.ouroboros.enable: "true"