Go не находит /usr/share/zoneinfo в контейнере Docker
В программе Go я звоню time.LoadLocation("Europe/Berlin")
и он возвращает сообщение об ошибке open /usr/local/go/lib/time/zoneinfo.zip: no such file or directory
, хотя в контейнере (работает alpine:3.9
с установленными цдатами) /usr/share/zoneinfo/Europe/Berlin
существует и, согласно документам, должен иметь приоритет над zip-файлом. Эта же программа находит файл на моей машине (Arch Linux). Исполняемый файл был статически связан с моей машиной, а затем скопирован в контейнер. Я пробовал Go 1.11.5 и 1.10.3.
Я построил исполняемый файл с:
CGO_ENABLED=0 go build -a -ldflags "-s" -o gocake_static
Я ищу любые идеи, которые помогут мне определить проблему.
0 ответов
Если вы используете только одну статическую информацию о зоне. может бытьFixedZone
может решить вашу проблему.
Не требует timezone.zip, поэтому скачивать не нужно. zoneinfo.zip
и установите env ZONEINFO
в Dockerfile.
например
loc := time.FixedZone("Europe/Berlin", 1*60*60)
fmt.Println(time.Now().In(loc).Format("2006-01-02 15:04:05"))