Docker新手在这里。
我想使用还原后的数据库启动docker influxdb实例。
我已经备份了要还原的数据。现在,我想在调用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
我尝试将influxd命令放在if语句中,但这似乎不起作用。它会创建数据库,但不会填充数据库。
如果有任何解决方法的建议,我将不胜感激。
预先感谢
答案 0 :(得分:0)
您需要将备份文件复制到容器内的/docker-entrypoint-initdb.d中。
更改:
COPY backedUpInfluxDBFolder /tmp/backedUpInfluxDBFolder
到
COPY backedUpInfluxDBFolder/* /docker-entrypoint-initdb.d/
我不知道Influx,但我假设备份文件夹包含sql文件? (我的解决方案基于此假设)。
希望这会有所帮助。