Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

watchtower ignores mounted /etc/timezone file #876

Closed
scottjl opened this issue Apr 2, 2021 · 3 comments · Fixed by #877
Closed

watchtower ignores mounted /etc/timezone file #876

scottjl opened this issue Apr 2, 2021 · 3 comments · Fixed by #877
Assignees

Comments

@scottjl
Copy link

scottjl commented Apr 2, 2021

Describe the bug
using docker compose, mounted volume for /etc/timezone is ignored

To Reproduce

volumes:
  - '/etc/timezone:/etc/timezone:ro'

Expected behavior
Expect to see watchtower operate in mounted timezone in notification timestamps and schedule checking.

Environment

  • ubuntu 18.04 LTS
  • x86
  • Docker version 20.10.5, build 55c4c88
  • containrrr/watchtower latest c992dfdeb81b 4 days ago 16.3MB
  • timezone is "America/Chicago" in my case

Additional context
watchtower operates in correct timezone if environmental variable TZ is set.

@github-actions
Copy link

github-actions bot commented Apr 2, 2021

Hi there! 👋🏼 As you're new to this repo, we'd like to suggest that you read our code of conduct as well as our contribution guidelines. Thanks a bunch for opening your first issue! 🙏

@piksel
Copy link
Member

piksel commented Apr 2, 2021

I modified the watchtower startup to print some TZ info:

Output from running outside docker in a "clean" multipass VM
ubuntu@primary:~/dev/watchtower$ go run .
Local location: Local
LOC: 2021-04-02 11:48:11.084724485 +0200 CEST m=+1.003943893
UTC: 2021-04-02 09:48:11.084724485 +0000 UTC
/etc/timezone: Europe/Stockholm
Manually loaded location: Europe/Stockholm
ETC: 2021-04-02 11:48:11.084724485 +0200 CEST
/usr/share/zoneinfo/Europe/Stockholm: 1909 byte(s)
Environment:
  SHELL=/bin/bash
  PWD=/home/ubuntu/dev/watchtower
  LOGNAME=ubuntu
  XDG_SESSION_TYPE=tty
  MOTD_SHOWN=pam
  HOME=/home/ubuntu
  LANG=C.UTF-8
  LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
  SSH_CONNECTION=192.168.112.1 50436 192.168.113.245 22
  LESSCLOSE=/usr/bin/lesspipe %s %s
  XDG_SESSION_CLASS=user
  TERM=xterm-256color
  LESSOPEN=| /usr/bin/lesspipe %s
  USER=ubuntu
  SHLVL=1
  XDG_SESSION_ID=32
  XDG_RUNTIME_DIR=/run/user/1000
  SSH_CLIENT=192.168.112.1 50436 22
  XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop
  PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
  CGO_ENABLED=0
  DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
  SSH_TTY=/dev/pts/0
  OLDPWD=/home/ubuntu
  _=/usr/bin/go
  DOCKER_HOST=unix:///var/run/docker.sock
  DOCKER_API_VERSION=1.25
Output running inside a docker container:
ubuntu@primary:~/dev/watchtower$ go build && docker build -t wtdev -f dockerfiles/Dockerfile .
ubuntu@primary:~/dev/watchtower$ docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock -v /etc/timezone:/etc/timezone:ro  wtdev:latest --run-once
Local location: UTC
LOC: 2021-04-02 09:48:56.284432609 +0000 UTC m=+0.003314540
UTC: 2021-04-02 09:48:56.284432609 +0000 UTC
/etc/timezone: Europe/Stockholm
Manually loaded location: Europe/Stockholm
ETC: 2021-04-02 11:48:56.284432609 +0200 CEST
/usr/share/zoneinfo/Europe/Stockholm: 1909 byte(s)
Environment:
  PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  HOSTNAME=6594f073fc1b
  TERM=xterm
  HOME=/
  DOCKER_HOST=unix:///var/run/docker.sock
  DOCKER_API_VERSION=1.25

Container was built using dockerfiles/Dockerfile and started with a bound /etc/timezone.
Everything looks like it SHOULD work, but for some reason it's not picking up the timezone from /etc.

Manually loading the correct timezone does work, but according to the docs the file it uses for local time is /etc/localtime and not /etc/timezone... So let's try that...

ubuntu@primary:~/dev/watchtower$ docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock -v /etc/localtime:/etc/localtime:ro  wtdev:latest
Local location: Local
LOC: 2021-04-02 11:55:56.204415857 +0200 CEST m=+1.007427835
UTC: 2021-04-02 09:55:56.204415857 +0000 UTC
INFO[0001] Watchtower v0.0.0-unknown
Using no notifications
Checking all containers (except explicitly disabled with label)
Scheduling first run: 2021-04-03 11:55:56 +0200 CEST

Indeed, that works. We should update the docs to reflect this.

Some more details regarding this:
/etc/localtime is usually a symlink to /usr/share/zoneinfo/<contents of /etc/timezone>, but that symlink has to be created. So whatever is in /etc/timezone does not affect the actual tz database being used, and since the image is a base image, no service that updates that symlink ever runs.

The only potential problem I can see with binding the hosts /etc/localtime are binary incompability between systems, but that doesn't seem like it should be an issue, since the format is system-independent (bigendian, regardless of arch. etc), defined in an RFC and hasn't changed in a long time.

@ghost
Copy link

ghost commented Apr 18, 2021

To avoid important communication to get lost in a closed issues no one monitors, I'll go ahead and lock this issue. If you want to continue the discussion, please open a new issue. Thank you! 🙏🏼

@ghost ghost locked as resolved and limited conversation to collaborators Apr 18, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants