DEV Community

Discussion on: Set timezone in your docker image

 
bitecode profile image
BC

Ah, interesting, thank you. When I was using the "ENV TZ" method, my base image is FROM node:16-slim, and it worked perfectly when run date:

Fri Aug 13 23:47:09 EDT 2021
Enter fullscreen mode Exit fullscreen mode

Do you know why that works while FROM ubuntu:20.04 does not? Is it b/c the node:16 image already set the tzdata like you did?

Thread Thread
 
peter279k profile image
peter279k • Edited

The node:16-slim is based on Debian:10 image to build the Node.js version 16 environment.

And it's worked for Debian 10 when setting the ENV TZ to set the timezone.

I think setting ENV TZ is not the common way to set system timezone on every Linux distributions.

Thread Thread
 
bitecode profile image
BC

Hmm, you are right, just tried FROM debian:10 , the ENV TZ way works. Seems just not working for ubuntu. Thank you for pointing out. TIL.

Thread Thread
 
peter279k profile image
peter279k

If using the ENV to set TZ to set the timezone, it should have the tzdata package installed on Linux distribution Docker base image.

After investigating some common Linux distributions, the Debian and CentOS have the tzdata installed on their Base Docker images.

And Ubuntu doesn't have the tzdata package on the Docker base image.

Thread Thread
 
peter279k profile image
peter279k

That's the reason why I need to use apt-get update and apt-get install -yq tzdata firstly on my Dockerfile when using the Ubuntu 20.04 for my Docker base image.

Of course, we can simplify my Dockerfile when using the Ubuntu to be the Docker base image:

FROM ubuntu:20.04

RUN apt-get update && \
    apt-get install -yq tzdata

ENV TZ="Asia/Taipei"
Enter fullscreen mode Exit fullscreen mode
Thread Thread
 
bitecode profile image
BC

Got it, thanks for the awesome explanation. 👍