# -*- ispell-local-dictionary: "english" -*- #+SETUPFILE: ~/.emacs.d/etc/setup/latex.setup #+SETUPFILE: ~/.emacs.d/etc/setup/html-readtheorg-local.setup #+TITLE: Rocket.Chat * Updating the charm to a new version We are using official image. Latest tags usually. You can double-check available candidate for official images like this: #+begin_src sh docker search rocket.chat #+end_src So we usually pull and test images like this : #+begin_src sh docker pull rocket.chat:X.Y.Z #+end_src This worked on 3.6.3, but changed before 3.8.0 to: #+begin_src sh docker pull rocketchat/rocket.chat:X.Y.Z #+end_src from: https://hub.docker.com/r/rocketchat/rocket.chat Get the available tags: #+begin_src sh IMAGE_BASE_NAME=rocket.chat ## lookup on docker hub only. Could think doing it for any docker ## image identifier available on `pull`. This would mean querying ## other registries, probably with a different api. docker:lookup_available_tags() { local image="$1" limit="${2:-10}" filter="$3" eor p ## remove any tags on image name image="${image%%:*}" if [[ "$image" == *"/"* ]]; then username="${image%%/*}" image="${image##*/}" else username="library" fi p=0 eor= while [ -z "$eor" ]; do ((p++)) out=$(curl -s "https://registry.hub.docker.com/v2/repositories/$username/$image/tags/?page=$p" | jq -r '."results"[]["name"]') || break [ -z "$out" ] && break ## 10 results are expected per request, otherwise ## this means we are hitting End of Records. nb_result=$(printf "%s\n" "$out" | wc -l) [ "$nb_result" -lt 10 ] && eor=true ## filter records [ "$filter" ] && out=$(printf "%s\n" "$out" | egrep "$filter") [ -z "$out" ] && continue nb_result=$(printf "%s\n" "$out" | wc -l) if [ "$limit" -le "$nb_result" ]; then printf "%s\n" "$out" | head -n "$limit" break fi printf "%s\n" "$out" limit=$((limit - nb_result)) done } docker:lookup_available_tags rocketchat/rocket.chat 15 "^[0-9]+(\.[0-9]+)*$" #+end_src Rocket.chat has a powerfull and working update database that will take care of migrating database on startup.