angle-uparrow-clockwisearrow-counterclockwisearrow-down-uparrow-leftatcalendarcard-listchatcheckenvelopefolderhouseinfo-circlepencilpeoplepersonperson-fillperson-plusphoneplusquestion-circlesearchtagtrashx

Hoe de tijdzone in te stellen bij gebruik van de Python Alpine Docker image

Bij gebruik van een Python Alpine Docker image moeten we het tzdatapakket toevoegen voordat we de tijdzone kunnen instellen.

13 november 2019
In Docker
post main image
https://unsplash.com/@danielcgold

Tijdens het schrijven van een applicatie op mijn Docker platform raakte ik een onverwacht probleem, ja, nog een ... Dit was de eerste keer dat ik de tijd moest laten zien op een pagina van een website die draait op Docker en het bleek dat de tijd UTC was in plaats van lokale tijd. In de code gebruikte ik gewoon de normale Python calls om de tijd te krijgen:

import  datetime

    ...
    now =  datetime.datetime.now()
    hour = now.hour
    minute = now.minute

Ik woon in Nederland en toen het 9:30 uur was, was de tijd op de webpagina 8:30 uur. Waarom? Bij het zoeken op het internet bleek dat Docker image's op basis van Ubuntu dit probleem niet hadden. Het probleem bleek met de Alpine Docker image te zijn, ik gebruik de Python 3.6-alpine afbeelding. Het formaat van deze foto is klein, maar dat komt omdat ze veel weggelaten hebben! De oplossing bestaat uit:

  1. Toevoegen van het tzdatapakket aan het Docker image
  2. Instellen van de tijdzone in de Docker image

Het toevoegen van het tzdata pakket is eenvoudig. Ik gebruik Docker meerfasige builds, dus in de eerste fase voegen we tzdata toe. In de tweede fase kopiëren we de zoneinfo directory van de eerste fase naar de tweede fase. In het Docker-bestand stellen we ook de tijdzone in:

FROM python:3.6-alpine as base
...
RUN apk add --update \
    ....
    tzdata \
    ...

FROM python:3.6-alpine
...
COPY --from=base /usr/share/zoneinfo /usr/share/zoneinfo
ENV TZ=Europe/Amsterdam

Na deze wijzigingen werd de juiste tijd getoond in de pagina. Het enige nadeel is dat dit nog enkele MB's extra toevoegt.

Links / credits

Setting the timezone
https://wiki.alpinelinux.org/wiki/Setting_the_timezone

Using local time in a Golang Docker container built from Scratch
https://medium.com/@mhcbinder/using-local-time-in-a-golang-docker-container-built-from-scratch-2900af02fbaf

Laat een reactie achter

Reageer anoniem of log in om commentaar te geven.

Opmerkingen

Laat een antwoord achter

Antwoord anoniem of log in om te antwoorden.