docker influxdb在启动时还原数据库

时间:2019-04-02 09:35:14

标签: docker dockerfile

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语句中,但这似乎不起作用。它会创建数据库,但不会填充数据库。

如果有任何解决方法的建议,我将不胜感激。

预先感谢

1 个答案:

答案 0 :(得分:0)

您需要将备份文件复制到容器内的/docker-entrypoint-initdb.d中。

更改:

COPY backedUpInfluxDBFolder /tmp/backedUpInfluxDBFolder

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

我不知道Influx,但我假设备份文件夹包含sql文件? (我的解决方案基于此假设)。

希望这会有所帮助。