从docker创建两个influxdb组成YAML文件

用户4021949

我想在运行docker-compose up命令时创建两个数据库以下是我尝试过但未解决的解决方案

version: '3.2'
services:
  influxdb:
    image: influxdb
    env_file: configuration.env
    ports:
      - '8086:8086'
    volumes:
      - 'influxdb:/var/lib/influxdb'
    environment:
      - INFLUXDB_DB=testDB
    command: sh -c Sample.sh

我收到influxdb_1_170f324e55e3 | sh: 1: Sample.sh: not found内部Sample.sh时出错,我有curl命令,当独立执行该命令时会创建另一个数据库。

Adiii

您不应该覆盖influx DB容器的run命令,如果您覆盖,CMD则还需要启动该influxd过程。因此最好使用init.db脚本并在运行时填充该脚本。

初始化文件

如果Docker映像在扩展名中.sh文件夹.iql找到任何文件/docker-entrypoint-initdb.d,它将执行它们。它们的执行顺序由外壳决定。这通常是字母顺序。

手动初始化数据库

要手动初始化数据库并退出,/init-influxdb.sh可以直接使用脚本。它采用与influxd run命令相同的参数。举个例子:

$ docker run --rm \
      -e INFLUXDB_DB=db0 -e INFLUXDB_ADMIN_ENABLED=true \
      -e INFLUXDB_ADMIN_USER=admin -e INFLUXDB_ADMIN_PASSWORD=supersecretpassword \
      -e INFLUXDB_USER=telegraf -e INFLUXDB_USER_PASSWORD=secretpassword \
      -v $PWD:/var/lib/influxdb \
      influxdb /init-influxdb.sh

在检查Influx DB官方映像的入口点时,您可以从官方页面探索数据库初始化

因此,您需要将脚本放置在.iql或中.sh并将该位置安装在docker-compose中。

    volumes:
      - 'influxdb:/var/lib/influxdb'
      - init.db/init.iql:/docker-entrypoint-initdb.d/

最好使用InfluxQL创建,将以下行添加到脚本中并另存为init.iql

CREATE DATABASE "NOAA_water_database"

您还需要更新Dockerfile。

FROM influxdb
COPY init.iql  /docker-entrypoint-initdb.d/

现在您可以从CMD删除命令,它应该创建数据库

version: '3.2'
services:
  influxdb:
    build: .
    env_file: configuration.env
    ports:
      - '8086:8086'
    volumes:
      - 'influxdb:/var/lib/influxdb'
    environment:
      - INFLUXDB_DB=testDB

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章