Docker InfluxDB 在 UTC 时区运行

Docker InfluxDB runs in UTC timezone

我尝试运行influxdb作为Docker容器。我正在为此使用 docker-compose:

influxdb:
  image: influxdb:1.7.7-alpine
  ports:
  - "8083:8083"
  - "8086:8086"
  - "8090:8090"
  volumes:
  - ./influxdb-data:/var/lib/influxdb
  networks:
    - mynet
  expose:
    - "8086"
  environment:
    TZ: Europe/Prague

问题出在时区。我不知道如何在我的本地时区启动 InfluxDB,这里你可以看到问题:

[michal@motoko ~]$ LC_ALL=C date
Fri Aug 23 07:38:44 CEST 2019
[michal@motoko ~]$ LC_ALL=C influx -host 'localhost'
Connected to http://localhost:8086 version 1.7.7
InfluxDB shell version: 1.7.7
> use test Using database test
> insert test value=4 
> precision rfc3339
> select * from test
name: test
time                           value
----                           ----
2019-08-23T05:39:09.017460215Z 4
>

如您所见(正确),我机器上的实时时间是“07:38:44”,而存储在数据库中的时间戳是“05:39:09”。我在 UTC+2 时区。

InfluxDB 可以在我当地的时区 Docker 运行 中使用吗?我尝试设置 TZ 变量,但 InfluxDB 可能需要 /etc/timezone。我还没有找到 InfluxDB 配置参数。

或者我是否需要在每个查询中使用 tz()?这可以正常工作:

> select * from test tz('Europe/Prague')
name: test
time                                value
----                                -----
2019-08-23T07:39:09.017460215+02:00 4

如评论中所述,InfluxDB 时区默认为 immutable。但是正如您提到的,您可以使用 tz() 命令设置时区。

一个可能的解决方案是将您的时区存储在 InfluxDB 上并在您的查询中使用它。