Вы не должны переопределять команду запуска контейнера DB притока, если вы переопределяете CMD
, то вам также необходимо запустить процесс influxd
.Поэтому лучше пойти со скриптом init.db и заполнить скрипт во время выполнения.
Файлы инициализации
Если образ Docker находит какие-либо файлы с расширениями.sh
или .iql
внутри папки /docker-entrypoint-initdb.d
, он выполнит их.Порядок, в котором они выполняются, определяется оболочкой.Обычно это алфавитный порядок.
Инициализация базы данных вручную
Чтобы вручную инициализировать базу данных и выйти из нее, можно использовать сценарий /init-influxdb.sh
непосредственно.Он принимает те же параметры, что и команда притока effxd.Например:
$ 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
Когда вы проверяете точку входа официальное изображение притока БД и вы можете изучить инициализацию базы данных со официальной страницы.
Так что вам нужно поместить ваш скрипт в .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