Actualizar los archivos de zonas horarias en microservicios Java

De Plataforma COA Crowd
Saltar a: navegación, buscar

Antecedentes

Cuando la zona horaria de un microservicio esta correcta pero la hora esta incorrecta lo más probable es que se deba a que los archivos de definición de las zonas horarias están desactualizados.

La información de las zonas horarias se basa en los datos de la base de datos IANA de zonas horarias.

Oracle ofrece una herramienta que permite actualizar estas bases de datos en sus versiones de JDK y JRE

Para las máquinas virtuales como OpenJDK, se puede emplear la herramienta de fuente abierta ZIUpdater

Herramientas requeridas

IANA

La entidad Internet Assigned Numbers Authority desempeña un papel esencial en la gestión de Internet, ya que es responsable de asignar nombres y sistemas de números únicos que se usan de acuerdo con los estándares técnicos –protocolo de red– de Internet y constituyen la base del direccionamiento de páginas web.

La IANA coordina la reserva global de números IP y de los conocidos como números de sistema autónomo (en inglés Autonomous System Numbers, ASN),

que se asignan en bloques de direcciones a los cinco registros regionales de Internet (RIR). A su vez, RIR pone a disposición de los registros locales

(LIR) y nacionales (NIR) bloques de direcciones más pequeños que se conceden a los proveedores de servicios de Internet.

El ámbito de competencia de cada RIR.


  • RIR :Ámbito de competencia

  • AFRINIC :África

  • APNIC :Asia, Australia y Oceanía

  • ARIN :Canadá, EE.UU y algunas islas del Caribe

  • LACNIC :Latinoamérica y algunas islas del Caribe

  • RIPE NCC :Europa, Oriente Medio y partes de Asia Central

Time Zone Database

La base de datos de zona horaria (a menudo llamada tz o zoneinfo ) contiene código y datos que representan el historial de la hora local para muchas ubicaciones representativas en todo el mundo.

Se actualiza periódicamente para reflejar los cambios realizados por los órganos políticos en los límites de las zonas horarias, las compensaciones UTC y las reglas de horario de verano.

Su procedimiento de gestión está documentado en BCP 175: Procedimientos para el mantenimiento de la base de datos de zonas horarias .

La última versión a Junio de 2023 es la siguiente:

tzdb-2023c.tar.lz

tzdata2023c.tar.gz

tzcode2023c.tar.gz

ZIUpdater Time Zone Tool

ZIUpdater proporciona un subconjunto funcional de la herramienta equivalente de Oracle TZUpdater.

La versión actual de ZIUpdater actualiza la información de zona horaria obtenida de cualquier copia descargada de la base de datos de zona horaria de la IANA.

ZIUpdater realiza un paso de compilación, transformando la base de datos de IANA en un conjunto de archivos compatible con JDK, luego lo aplica al árbol de archivos

del JDK/JRE invocado. Puede usar ZIUpdater en cualquier plataforma (Windows, Linux, macOS, etc.) donde haya instalado Java. Por diseño, funciona con Azul Zulu Builds

de OpenJDK y Azul Zulu Prime Builds de OpenJDK, pero ZIUpdater también se probó con éxito contra OpenJDK y Oracle JDK.

Cada versión de Azul Zulu incluye una base de datos de zonas horarias de IANA actualizada. Sin embargo, si desea actualizar los archivos de zona horaria en una

instalación existente de Azul Zulu sin instalar una nueva versión, puede usar la herramienta ZIUpdater.

Siga estos pasos para actualizar los archivos de zona horaria.

Para usar ZIUpdater con Azul Zulu 7, debe crear el tarball tzdata en el rearguardformato.
  • Detenga cualquier programa que se esté ejecutando javadesde su instalación de Azul Zulu.

  • Ejecute la herramienta:

    java -jar ziupdater-1.1.1.1.jar -l file://<path to tzdata archive>

Configuración del Dockerfile

  • En el directorio raíz del proyecto poner los archivos siguientes (Los nombres pueden variar ligeramente dependiendo la versión):

    A) Archivo con la base de datos de zonas horarias: tzdata2023c.tar.gz

    B) archivo con la aplicación ZIUpdater para actualizar las máquinas virtuales: ziupdater-1.1.1.1.jar

  • En el archivo Dockerfile en la parte donde se configuran las dependencias copiar ambos archivos:

    COPY tzdata2023c.tar.gz .

    COPY ziupdater-1.1.1.1.jar .

  • En el archivo Dockerfile en el último stage, copiar ambos archivos desde el primer stage.

    COPY --from=build /ziupdater-1.1.1.1.jar /ziupdater-1.1.1.1.jar

    COPY --from=build /tzdata2023c.tar.gz /tzdata2023c.tar.gz

Nota: la ruta puede variar.

  • En el archivo Dockerfile en el último stage, antes de ejecutar la máquina virtual, poner el comando siguiente:

    RUN java -jar /ziupdater-1.1.1.1.jar -l file:///tzdata2023c.tar.gz

Nota: el comando de ejecución, las rutas donde están ubicados los archivos y los nombres exactos pueden variar dependiendo de como estén las rutas en el Dockerfile, y como está configurada la imagen. Estos ejemplos están hechos en un Dockerfile con los datos siguientes:

 ARG BUILD_IMAGE=openjdk:8

 ARG RUNTIME_IMAGE=openjdk:8