Docker Influx Восстановить БД при запуске - PullRequest
2 голосов
/ 02 апреля 2019

Новичок докера здесь.

Я бы хотел запустить экземпляр докера effxdb с восстановленной базой данных.

Я создал резервную копию данных, которые хочу восстановить. Теперь я хотел бы восстановить базу данных притока, когда я вызываю docker-compose.

У меня есть следующий Dockerfile:

FROM influxdb:1.7.4-alpine

WORKDIR /app
COPY entrypoint.sh ./

COPY backedUpInfluxDBFolder /tmp/backedUpInfluxDBFolder

RUN chmod u+x entrypoint.sh

ENTRYPOINT ["/app/entrypoint.sh"]

И entrypoint.sh заполняется следующим образом:

#!/usr/bin/env sh

if [ ! -f "/var/lib/influxdb/.init" ]; then
    exec influxd $@ &

    until wget -q "http://localhost:8086/ping" 2> /dev/null; do
        sleep 1
    done

    influx -host=localhost -port=8086 -execute="CREATE USER ${INFLUX_USER} WITH PASSWORD '${INFLUX_PASSWORD}' WITH ALL PRIVILEGES"

    touch "/var/lib/influxdb/.init"

    kill -s TERM %1
fi

exec influxd $@

Я хотел бы вызвать следующую команду внутри entrypoint.sh

influxd restore -portable /tmp/backedUpInfluxDBFolder

Я пытался поместить команду Inflow в оператор if, но, похоже, это не сработало. он создает базу данных, но не заполняет ее.

Буду признателен за любые указания о том, как решить эту проблему.

Заранее спасибо,

1 Ответ

0 голосов
/ 02 апреля 2019

Вам необходимо скопировать файл резервной копии в /docker-entrypoint-initdb.d внутри контейнера.

Изменить:

COPY backedUpInfluxDBFolder /tmp/backedUpInfluxDBFolder

на

COPY backedUpInfluxDBFolder/* /docker-entrypoint-initdb.d/

Я не знаю Influx, но я предполагаю, что папка резервного копирования содержит файлы sql?(мое решение основано на этом предположении).

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...