Closed dersch81 closed 5 years ago
That’s strange. Are you using the default calendar? I’look into this. Thanks for reporting!
yes i'm using the standard calendar.
For what it's worth, I added the following to the Dockerfile locally:
ENV TZ America/Chicago
RUN echo $TZ > /etc/timezone && \
apt-get update && apt-get install -y tzdata && \
rm /etc/localtime && \
ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && \
dpkg-reconfigure -f noninteractive tzdata && \
apt-get clean
Rebuilt the image:
docker build -t mm_tz .
And then ran it:
docker run -d --publish 80:8080 `
--restart always `
--volume ~/magic_mirror/config:/opt/magic_mirror/config `
--volume ~/magic_mirror/modules:/opt/magic_mirror/modules `
--name magic_mirror mm_tz
I'm sure not everyone will want to use one specific timezone, but this fixed the date issue I was having where the Calendar module was 6 hours off. Those commands are probably scriptable after the fact, too.
Afaik, if you want to set a timezone for a container you can pass the correct one on using the environment: TZ: 'Europe/Brussels' SET_CONTAINER_TIMEZONE: 'true' CONTAINER_TIMEZONE: 'Europe/Brussels'
No need to rebuild.
@sylvaingirardbe I can confirm that, just tested it
@mneundorfer how can i do this? i'm not a docker pro :(
Piece of cake: Just pass them via the docker run
command, i.e. add
-e TZ=Europe/Berlin -e SET_CONTAINER_TIMEZONE=true -e CONTAINER_TIMEZONE=Europe/Berlin
I haven't actually checked yet whether actually all three of them are required.
If anyone using Compose stubles accross this in the future:
environment:
- TZ=Europe/Berlin
- SET_CONTAINER_TIMEZONE=true
- CONTAINER_TIMEZONE=Europe/Berlin
Btw: If you want to check if it worked:
docker exec -it MM_CONTAINER_NAME /bin/date
If this does not return the date you expect, i.e. the date of your host, you are likely to run into "wrong calendar time" issues
thanks but that is showing the correc date Tue Dec 18 21:13:28 CET 2018
Sorry guys, I hadn't much time to look into this issue but it's awesome to see your engagement with this! 👍 I myself did some researching and it looks like there are two different tweaks you need to make, to get this running.
To sync the system timezone you need to create a link between your host machines /etc/localtime
file and the containers /etc/localtime
file. This is accomplished by mounting the volume:
-v /etc/localtime:/etc/localtime:ro
Now, this fixes a lot of issues regarding system applications but not MagicMirror, because NodeJS isn't using the /etc/localtime
file. It instead is looking for the environment variable TZ
. (Referenz)
So ideally you should also set the environment variable TZ
to your desired timezone:
-e TZ='Europe/Berlin'
Ok, I did test these things and nothing worked. I just looked, if the timezone is set by MagicMirror and indeed it is. You can manually set the timezone in the config.js
file. As soon as I did that, everything worked.
{
module: "clock",
position: "top_left",
config: {
timezone: "America/Campo_Grande"
}
},
@dersch81 Could you test if this works for you?
The right one is a running MagicMirror instance without the timezone setting set to any specific timezone:
Hi, sorry i just could test it now. Unfortunatley it did not fix my issue with the calendar. The clock was always ok.
{
module: 'clock',
position: 'top_left',
config: {
timezone: "Europe/Berlin"
}
How can be the clock ok but the timezone of the calendar different? For your information i'm using the calendar with webcal from my private Nextcloud, one calendar is fetched from Office365. But with a "normal" MMM there is no problem with it. I have totally no idea how to debug this.
My in-container date was on UTC-5 for some reason, using the -e
switch fixed it.
Did you had a correct Clock but incorrect times of your calendar appointments?
My in-container date was on UTC-5 for some reason, using the
-e
switch fixed it.
I've just noticed my calendar entries are also (still) off. I have an additional complication though - I have MMM running in a docker container on a server, and connecting to that (port 8080) has correct times. I have a client-only non-docker MMM Running on a pi (connected to the same server), and the times there are wrong. Any ideas?
I needed to set the clock with -e
on both client and server for everything to work.
I guess the -e flag solves this issue. Therefore I’m closing this issue. If it still persist please reopen it.
Hi, i have a quiet strange problem. All dates of the calendar are one hr in the future now in winter time. In the summer time it was 2 hrs.
I thought the time setting of the docker container is wrong. So i've started it now with
-v /etc/localtime:/etc/localtime:ro
to have the same time as the host.checking with
docker exec -it [ID] date
confirms it.But still the same problem. With a "normal" MM installation i don't have any problem like this.
How can this happen with the docker image?