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

Comment définir le fuseau horaire lorsque vous utilisez le Python Alpine Docker image

Lorsque vous utilisez un Python Alpine Docker image nous devons ajouter le paquet tzdata avant de pouvoir définir le fuseau horaire.

13 novembre 2019
Dans Docker
post main image
https://unsplash.com/@danielcgold

En écrivant une application sur ma plate-forme Docker , j'ai rencontré un problème inattendu, oui, un autre... C'était la première fois que je devais afficher l'heure sur une page d'un site Web fonctionnant sur Docker et il semblait que l'heure était UTC au lieu de heure locale. Dans le code, j'utilisais juste les appels normaux Python pour obtenir l'heure :

import  datetime

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

J'habite aux Pays-Bas et quand il était 9h30, l'heure indiquée sur la page web était 8h30. Une recherche sur Internet a montré que les Docker images basés sur Ubuntu n'avaient pas ce problème. Il semble que le problème était avec l'image Alpine Docker image, j'utilise l'image Python 3.6-alpine. La taille de cette image est petite mais c'est parce qu'ils en ont oublié beaucoup ! La solution consiste en :

  1. Ajout du paquet tzdata au Docker image
  2. Réglage du fuseau horaire dans le Docker image

L'ajout du paquet tzdata est facile. J'utilise Docker multiphase builds donc dans la première étape on ajoute tzdata. Dans la deuxième étape, nous copions le répertoire zoneinfo de la première étape à la deuxième étape. Dans le fichier Docker, nous réglons également le fuseau horaire :

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

Après ces changements, l'heure correcte était affichée sur la page. Le seul inconvénient est que cela ajoute quelques Mo supplémentaires.

Liens / crédits

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

Laissez un commentaire

Commentez anonymement ou connectez-vous pour commenter.

Commentaires

Laissez une réponse

Répondez de manière anonyme ou connectez-vous pour répondre.