プログラムを中心とした個人的なメモ用のブログです。 タイトルは迷走中。
内容の保証はできませんのであしからずご了承ください。

2022/08/09

InfluxDB のコンテナ作成時にデータベースとリテンションポリシーの作成を行う

event_note2022/08/09 8:59

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