docker influxdb восстанавливает базу данных при запуске

#docker #dockerfile

#docker #dockerfile

Вопрос:

Здесь новичок в Docker.

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

Я создал резервную копию данных, которые хочу восстановить. Теперь я хотел бы восстановить базу данных influx при вызове 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 $@ amp;

    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
  

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

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

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

Ответ №1:

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

Изменить:

 COPY backedUpInfluxDBFolder /tmp/backedUpInfluxDBFolder

  

Для

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

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

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