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"))
Другие вопросы по тегам