¿Cómo configurar la hora local/zona horaria de la forma más genérica e independiente de la distribución?

¿Cómo configurar la hora local/zona horaria de la forma más genérica e independiente de la distribución?

Creé un contenedor acoplable que se ejecuta en la zona horaria incorrecta. Personalmente necesito que se ejecute en mi zona horaria (Europa/Estocolmo, GMT+1). Dado que el proyecto es de código abierto, es posible que otros usuarios también deseen cambiarlo. Deseo que cualquiera pueda cambiar esto fácilmente, por ejemplo, en Dockerfile o en docker-compose.yml.

Si es posible, también deseo que la solución sea aplicable no sólo en CentOS en caso de que alguien desee utilizar una distribución diferente.

¿Cuál es el enfoque más independiente de la distribución para configurar la hora local/zona horaria en mi contenedor acoplable?


Estos dos enfoques parecen ser comunes, pero no estoy seguro de si realmente son la mejor manera de avanzar para mí:

variable de entorno TZ

Algunas distribuciones de Linux leen la variable de entorno TZ. Sin embargo, noto que no funciona cuando uso la centos:7imagen.

/etc/hora local

Puede asignar los contenedores /etc/localtimeal /etc/localtimehost en docker-compose.yml. Pero al hacer esto, las distribuciones que usan /etc/timezonese dejan en UTC y el software que puede estar leyendo leerá la zona horaria incorrecta.

Respuesta1

La distribución independiente requeriría un script que detecte qué distribución se está utilizando. Esto se debe a que cada "familia" de distribución tiene una forma diferente de señalar las zonas horarias. Para algunos, agregar lo siguiente al Dockerfile podría funcionar:

EJECUTAR echo "Europa/Estocolmo" > /etc/timezone

Otros (por ejemplo, Debian) requieren usar lo anterior y luego seguir con otro comando de Dockerfile como:

EJECUTAR EJECUTAR sudo dpkg-reconfigure -f tzdata no interactivo

Otras distribuciones (IIRC, incluido CentOS) requerirían algo como:

EJECUTAR ln -s /usr/share/zoneinfo/Europe/Stockhom /etc/localtime

Hacerlo independiente de las distribuciones requeriría investigar el método de cada distribución para reconfigurar la zona horaria. Si miras /etc/localtime, notarás que no es un archivo de texto.

información relacionada