WUD (What's up docker?) Keep your containers up-to-date!

Same here. And I though that I can somehow update from GUI or from actionable notification. Is that possible please? :slight_smile:

I just run into the problem:

 toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit

Could anybody advise how to avoid that pls?

I’m using watchover for updating my containers. I set it up to do update without question. It can be set up just to notify you there is a new version, but this is to much hassle for me. It can notify you on telegram account when the last run was made and what containers were updated.

  watchtower:
    image: containrrr/watchtower
    container_name: watchtower
    restart: unless-stopped
    environment:
      - "WATCHTOWER_INCLUDE_RESTARTING=true"
      - "WATCHTOWER_CLEANUP=true" 
      - "WATCHTOWER_POLL_INTERVAL=86400"
      - "WATCHTOWER_NOTIFICATION_REPORT=true"
      - "WATCHTOWER_NOTIFICATION_URL=telegram://xxxx@telegram/?chats=xxxxx"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

Sorry to hijack the thread, but can anyone tell me why most of my update entities aren’t reporting the current container version correctly please?

Could somebody pls explain me if the trigger Docker or Docker-compose actually triggering the upgrade of containers? I cannot figure it out. Thank you!

Yes, it does.
As mentioned in the doc, this trigger will:

  • Update the related docker-compose.yml file
  • Clone the existing container specification
  • Pull the new image
  • Stop the existing container
  • Remove the existing container
  • Create the new container
  • Start the new container (if the previous one was running)
  • Remove the previous image (optionally)

Thanks, but will docker trigger actually do anything if i run every container by docker-compose?

1 Like

Yes, it will.
But your docker-compose.yml file won’t be in sync with the current state of your containers anymore.

That means that the next time you’ll perform a docker compose up -d, it will revert your containers to the versions described in the docker-compose.yml file.

That’s why you must use the docker-compose trigger and not the docker trigger in your situation.

1 Like

Thanks! So it works that it will update the container no matter version stated in docker-compose? Perphaps this is why it errored to run Postgress after upgrade since it is part of Paperless ngx docker compose where version 15 is stated. When I use docker-compose trigger will WUD respect the versions in file please?
How I can update for example docker-compose of Nextcloud running on another server please? It is not possible currently right?
And …I removed all the triggers except Discord as until I figure out how I will update all containers manually. But I am getting this error:
Error when processing some containers (Cannot read properties of undefined (reading 'tag'))
Any idea why please?

And sorry for my questions, I might have quite a chaos in my head :slight_smile:

I’m watching a number of containers without issue, but I have one, Uptime-Kuma which I can’t seem to get the correct setup to inform me of updates. Here’s what I have in my compose file:

      - 'wud.tag.include=^\d{6}-.*$$'
      - 'wud.tag.transform=^(\d{6})-.*$$ => $$1'
      - 'wud.link.template=https://github.com/louislam/uptime-kuma/releases/tag/$${major}$${minor}$${patch}'

My last attempt at fixing it was adding the transform which I’ve not needed for any other containers. In any case it doesn’t work to resolve my issue.

I’m not sure exactly what trips it, but it occasionally notifies me that it needs to be updated when it doesn’t. Right now the current released version and what I’m running is “1.23.11”. But the latest version always says “nightly-amd64” which I don’t want, nor does it make sense that it matches my include tag. I previously was using an include tag that works for many of my other containers and no transform tag, but that didn’t work either. The include looked like this:

      - 'wud.tag.include=^\d+\.\d+\.\d+$$'

Anyone have any ideas why I’m struggling with this issue?

I tested it by myself and with only the label wud.tag.include=^\d+\.\d+\.\d+$, it’s working.

I deployed intentionally the 1.23.10 version to see if wud would find the 1.23.11 and it did.

version: '3'
services:
  whatsupdocker:
    image: fmartinou/whats-up-docker
    container_name: wud
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    ports:
      - 3000:3000

  uptime-kuma:
    container_name: update_kuma
    image: louislam/uptime-kuma:1.23.10
    labels:
      - 'wud.tag.include=^\d+\.\d+\.\d+$$'

1 Like

Thank you. That’s what I had originally and would have worked, except I was missing the “labels” section and it was winding up in my “environment” instead! Working great now.

For inspiration: this is the way how I show the informations of WUD in a markdown-card:

image

{% set UKC = {"unknown": "RED", "minor": "ORANGE", "patch": "GREEN"} %}
<table>
{% for S in states.update 
  | selectattr('state', '==', 'on') 
  | selectattr('entity_id', 'match', 'update.wud_container_')
  | sort(attribute='attributes.display_name') 
%}

<tr>
<td>{{ S.attributes.display_name }}&ensp;</td>
<td>{{ S.attributes.watcher }}&ensp;</td>
<td><font color={{ UKC.get(S.attributes.update_kind_semver_diff) }}>
    <ha-icon icon="mdi:docker"></ha-icon></font>&ensp;</td>
<td>{{ S.attributes.installed_version }}&ensp;</td>
<td><a href="{{ S.attributes.release_url }}" target="_blank">
    {{ S.attributes.latest_version }}</a></td>
{% set AGE = (now()- S.attributes.image_created | as_datetime).days %}
<td align=right><font color=GRAY>&ensp;{{ AGE }}&nbsp;Tage</font></td>
</tr>
{% endfor %}
</table>
4 Likes

Hi,
I am testing wud on my system at the moment but I don’t understand the trigger:

WUD_TRIGGER_{{trigger_type}}}_{trigger_name}_ONCE

Does it mean that the trigger just runs once and after that, it will never run again? So if I am right, when I want to update some containers automatically, I have to set this trigger to “no”?!
I did exactly this in my yaml file, but in the configuration section in the gui, it says once <empty>

This is my configuration of the yaml:

services:
whatsupdocker:
image: fmartinou/whats-up-docker
container_name: wud
ports:
- 3000:3000
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /home/user/Docker/mealie/docker-compose.yml:/composefiles/mealie/docker-compose.yml
environment:
- WUD_TRIGGER_DOCKERCOMPOSE_MEALIE_THRESHOLD=PATCH
- WUD_TRIGGER_DOCKERCOMPOSE_MEALIE_FILE=/composefiles/mealie/docker-compose.yml
- WUD_TRIGGER_DOCKERCOMPOSE_MEALIE_ONCE=false

What did I wrong?

Is it possible to update containers with this directly from the UI?

I have this in the portainer stack I do NOT want updated by WUD.

    labels:
        - wud.watch=false

Good morning,
I don’t understand how to display my dockers’ information in Home Assistant, can you please guide me?

hi @fmartinou

First of all - thanks for sharing your project with everyone. I just started testing it to understand exactly how it works and what it does. One thing I seem to be missing is ability to monitor ALL my images, but trigger an action only on specific images.

So for example, let’s say I have 100 containers across 4 Docker hosts. What I would like to do is monitor ALL images for updates, but trigger Docker container update only on some - exclude some from the update.

Is this something that can be done and I miss-configured something or is it something not currently supported?

I think I just found an answer to my own question…

Hi,

This is in work in progress :slight_smile:
=> ⭐ [TRIGGER] - Add support for associating specific triggers to s… by fmartinou · Pull Request #512 · getwud/wud · GitHub

This idea is to allow to add some extra labels ‘per container’ to filter the triggers to run on the container depending on the kind of update.

For example:

  • send me a mail regardless the kind of update
  • auto update the container only if it’s a minor or a patch version
version: '3'

services:

  my_important_service:
    image: my_important_service:1.0.0
    labels:
      - wud.trigger.include=smtp.gmail,dockercompose.local:minor