我想在运行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命令,当独立执行该命令时会创建另一个数据库。
您不应该覆盖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] 删除。
我来说两句