3

我正在部署一个用于存储实时数据的 influxdb。我使用 1.8.4 已经有一段时间了,最​​近决定更新到 v2。

我的docker-compose.yml文件看起来像这样:

influxdb:
    image: influxdb:2.0.4-alpine
    ports:
      - "8086:8086"
    volumes:
      - ./influxdb/data:/var/lib/influxdb2
      - ./influxdb/config:/etc/influxdb2
      - ./influxdb/scripts:/docker-entrypoint-initdb.d
    environment:
      - DOCKER_INFLUXDB_INIT_MODE=setup
      - DOCKER_INFLUXDB_INIT_USERNAME=${INFLUXDB_USR}
      - DOCKER_INFLUXDB_INIT_PASSWORD=${INFLUXDB_PWD}
      - DOCKER_INFLUXDB_INIT_ORG=Org0
      - DOCKER_INFLUXDB_INIT_BUCKET=bucket0

这确实创建了一个名为bucket0.

也就是说,我想要一个脚本来初始化更多的存储桶,写入一些数据或添加身份验证。在我的./influxdb/scripts目录中,我有一个init.sh如下所示的脚本:

#!/bin/bash
set -e
influx bucket create -n bucket1 -d "Bucket 1"

然后我会继续使用influx cli 提供influx writeinflux auth所有好东西,但是上面的脚本似乎对创建存储桶没有任何影响。

我也尝试过使用该-c /etc/influxdb2/influx-configs选项或--token无济于事。

执行 adocker exec -it <container> /bin/bash然后执行完全相同的命令会按预期创建存储桶。

有任何想法吗 ?非常感谢 !

4

1 回答 1

0

我设法在 influxdb 启动时运行以下脚本:

#!/bin/sh

set -e
influx bucket create -n first -r 7d
influx bucket create -n second -r 7d
  • 即使 influxdb docker 映像支持 bash,您也应该更喜欢为 alpine 编写 sh 脚本。
  • 你的脚本可执行吗?(chmod +x init.sh)
  • 仅在第一次启动 influxdb 时执行 init.sh 脚本。初始化后,您必须清理与此映像关联的 docker 卷。如果你使用 docker-compose : docker-compose down -v

最好的祝福

于 2021-03-18T17:42:59.287 回答