【问题标题】:Create two influxdb from docker compose YAML file从 docker compose YAML 文件创建两个 influxdb
【发布时间】:2019-09-25 05:04:56
【问题描述】:

我想在运行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 命令,当独立执行时会创建另一个数据库。

【问题讨论】:

  • 你在哪里复制Sample.sh在容器中?
  • @LinPy 我放置的位置是我的 docker-compose.yml 文件存在。
  • 是的,但您没有将文件复制到容器中。 compose 中的command 将在容器中运行,而不是在主机上
  • @LinPy 我是 Docker 新手,请原谅我。那么这是否意味着我不必在准备 Dockerfile 中的图像时复制该 sh 文件?
  • 查看答案。

标签: docker docker-compose influxdb


【解决方案1】:

你不应该覆盖流入数据库容器的运行命令,如果你覆盖了CMD,那么你也需要启动influxd进程。所以最好使用 init.db 脚本并在运行时填充脚本。

初始化文件

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

手动初始化数据库

要手动初始化数据库并退出,/init-influxdb.sh 脚本可以直接使用。它采用与 涌入运行命令。举个例子:

$ 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 offical image 的入口点时,您可以从官方页面探索database initialization

因此,您需要将脚本放置在 .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 中删除该命令,它应该会创建 DB

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

【讨论】:

  • compose需要构建图像而不是从influxdb获取它
  • 是的,您需要先构建才能在映像中包含脚本docker-compose up -d --build
  • 不,我的意思是您必须在撰写中更改答案才能使用构建
  • 哦,对不起。谢谢@LinPy,你可以更新我的答案,我会批准:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-12
  • 2021-04-17
  • 1970-01-01
  • 2020-01-06
  • 1970-01-01
  • 1970-01-01
  • 2020-04-06
相关资源
最近更新 更多