Создать два притока от докера, составить файл YAML - PullRequest
1 голос
/ 25 сентября 2019

Я хочу создать две базы данных при выполнении команды 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, которая при выполнении в автономном режиме создает другую базу данных.

1 Ответ

1 голос
/ 25 сентября 2019

Вы не должны переопределять команду запуска контейнера 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
...