
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:7
imagen.
/etc/hora local
Puede asignar los contenedores /etc/localtime
al /etc/localtime
host en docker-compose.yml. Pero al hacer esto, las distribuciones que usan /etc/timezone
se 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.