はじめに
次世代エンジン「IOx」を搭載した InfluxDB 3 Core を、Debian上のDocker環境で構築しました。
公式ドキュメント通りに進めても、ディレクトリのパーミッションや起動引数の仕様変更でコンテナがリスタートを繰り返す場面があったため、完動する docker-compose.yml と初期設定手順をまとめます。
- ハマったポイント
構築中、主に以下の2点でコンテナが Restarting を繰り返しました。
ディレクトリの権限エラー (Permission Denied)
ログ内容: failed to persist catalog checkpoint file ... Permission denied
原因: ホスト側のディレクトリをマウントする際、コンテナ内部のユーザー権限と不整合が起き、カタログファイルの作成に失敗する。
必須引数の不足
ログ内容: error: the following required arguments were not provided: --node-id
原因: 環境変数だけでは不十分で、実行時に --node-id などの引数を明示的に渡す必要がある。
- 解決済みの docker-compose.yml
権限問題を回避するため、名前付きボリューム(Named Volume)と user: root を採用した構成です。
services:
influxdb3:
image: influxdb:3-core
container_name: influxdb3-core
# 権限問題を強制解決するためrootで実行
user: root
ports:
- "8181:8181"
environment:
- INFLUXDB3_LOG_FILTER=info
# 必須引数をcommandで明示的に指定
command: [
"influxdb3",
"serve",
"--node-id=0",
"--object-store=file",
"--data-dir=/var/lib/influxdb3/data"
]
volumes:
- influx_storage:/var/lib/influxdb3/data
restart: unless-stopped
explorer:
image: influxdata/influxdb3-ui:latest
container_name: influxdb3-explorer
ports:
- "8888:8080"
environment:
- SESSION_SECRET_KEY=your-random-secret-key
- DEFAULT_INFLUX_SERVER=http://influxdb3:8181
depends_on:
- influxdb3
restart: unless-stopped
volumes:
influx_storage:
- 起動後の初期セットアップ
コンテナが起動しただけでは、まだデータの受け皿がありません。以下の手順でトークンとDBを作成します。
① 管理用トークンの生成
docker exec -it influxdb3-core influxdb3 create token --admin
ここで表示されるトークンをコピーしておきます。
② データベースの作成
docker exec -it influxdb3-core influxdb3 create database my_database --token <さきほど生成したトークン>
- UI (Explorer) への接続
ブラウザで http://<サーバーのIP>:8888 にアクセス。
Server URL: http://localhost:8181
Token: 先ほど生成した Admin Token
これを入力することで、データのクエリや可視化がブラウザ上で行えるようになります。
まとめ
InfluxDB 3 Core は、従来の v2 までとはコンテナ起動時の挙動が一部異なります。
特に「ホストマウントの権限」と「起動引数の明示」に気をつければ、非常に高速で強力な時系列データベース環境を Docker で手軽に手に入れることができます。
おわりに
もしこれでも動かない場合は、一度 docker compose down -v でボリュームを完全に消去してから再試行してみてください。