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

So stellen Sie die Zeitzone bei Verwendung der Python Alpine Docker image ein

Bei Verwendung eines Python Alpine Docker image müssen wir das tzdata-Paket hinzufügen, bevor wir die Zeitzone einstellen können.

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

Beim Schreiben einer Anwendung auf meiner Docker -Plattform bin ich auf ein unerwartetes Problem gestoßen, ja, ein weiteres.... Dies war das erste Mal, dass ich die Zeit auf einer Seite einer Website mit Docker anzeigen musste, und es schien, dass die Zeit UTC statt Lokalzeit war. Im Code habe ich nur die normalen Python -Aufrufe verwendet, um die Zeit zu erhalten:

import  datetime

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

Ich lebe in den Niederlanden und als es 9:30 Uhr war, war die auf der Webseite angezeigte Zeit 8:30 Uhr. Die Suche im Internet ergab, dass Docker images auf Ubuntu-Basis dieses Problem nicht hatten. Es schien, dass das Problem mit dem Alpine Docker image war, ich verwende das Python 3.6-alpine Bild. Die Größe dieses Bildes ist klein, aber das liegt daran, dass sie viel ausgelassen haben! Die Lösung besteht aus:

  1. Hinzufügen des tzdata-Pakets zum Docker image
  2. Einstellen der Zeitzone in der Docker image

Das Hinzufügen des tzdata-Pakets ist einfach. Ich verwende Docker mehrstufige Builds, so dass wir in der ersten Phase tzdata hinzufügen. In der zweiten Stufe kopieren wir das Zoneinfo-Verzeichnis von der ersten Stufe auf die zweite Stufe. In der Dockerfile setzen wir auch die Zeitzone:

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

Nach diesen Änderungen wurde die richtige Zeit auf der Seite angezeigt. Der einzige Nachteil ist, dass dadurch weitere wenige MBs hinzukommen.

Links / Impressum

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

Einen Kommentar hinterlassen

Kommentieren Sie anonym oder melden Sie sich zum Kommentieren an.

Kommentare

Eine Antwort hinterlassen

Antworten Sie anonym oder melden Sie sich an, um zu antworten.