Docker を使って InfluxDB を動かしているのですが、データベースとリテンションポリシーをコンテナ起動時に作成できないかなと思い、調べてみたらやり方を見つけました。
以下のページが参考になりました。
環境
- InfluxDB: 1.8.10
作成方法
まず適当な名前(ここでは setup_influxdb.sh
)でシェルスクリプトファイルを作成し、以下のような内容で記述します。
# create database
influx -execute "CREATE DATABASE dbname"
# create retention policy
influx -execute "CREATE RETENTION POLICY rpname ON dbname DURATION 30d REPLICATION 1 DEFAULT"
dbname
, rpname
, 保存期間などは適当に置き換えてください。
これを、InfluxDB のコンテナ内の /docker-entrypoint-initdb.d/
に配置します。
例えば、私の場合は docker-compse を使っているので、以下のようにマウントしました。
services:
influxdb:
image: influxdb:1.8.10
container_name: influxdb
restart: unless-stopped
expose:
- 8086
volumes:
- influxdb:/var/lib/influxdb
- ./setup_influxdb.sh:/docker-entrypoint-initdb.d/setup_influxdb.sh:ro
volumes:
influxdb:
これでコンテナ起動時にスクリプトが実行され、データベースとリテンションポリシーが作成されます。
確認方法
まずコンテナに入ります。
$ docker exec -it influxdb bash
データベースの一覧は以下で確認できます。
# influx
> show databases
リテンションポリシーの一覧は以下で確認できます。
# influx
> use dbname
> show retention policies