#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? (мое решение основано на этом предположении).
Надеюсь, это поможет.