初めに
自分は勉強時間を自作のWEBアプリで記録しています。
以下が記事投稿時点で使用している勉強時間記録アプリです。
このアプリは記録が主な機能です。
記録した情報を見れる機能はだいぶ絞っており、アプリ上で確認できる情報は以下の3つだけです。
– 今月の総学習時間
– 今日の総学習時間
– 今日付けた記録
このアプリを運用して3か月たつのでデータもいい感じにたまってきました。
というわけでもっといろんなデータ見てぇよな!ということでBIツールを入れてみることにしました。
職場で使ったことがあるのでMetabaseにしました。
お試しとしてローカルで動かしています。
環境
Ubuntu 22.04.2 LTS (WSL)
Docker version 24.0.2
やってみた
公式サイトにdocker composeを使ったサンプルがあるのでこれを参考にやってみました。

適当にディレクトリを作成して、docker-compose.ymlを作成
version: '3.9'
x-common_logging: &common_logging
driver: json-file
options:
max-size: 1m
max-file: '3'
services:
metabase:
image: metabase/metabase:v0.47.3
container_name: metabase
hostname: metabase
ports:
- 3000:3000
environment:
MB_DB_TYPE: postgres
MB_DB_DBNAME: metabase
MB_DB_PORT: 5432
MB_DB_USER_FILE: /run/secrets/db_user
MB_DB_PASS_FILE: /run/secrets/db_password
MB_DB_HOST: postgres
networks:
- metanet1
secrets:
- db_password
- db_user
healthcheck:
test: curl --fail -I http://localhost:3000/api/health || exit 1
interval: 15s
timeout: 5s
retries: 5
logging: *common_logging
postgres:
image: postgres:11.21-bookworm
container_name: postgres
hostname: postgres
environment:
POSTGRES_USER_FILE: /run/secrets/db_user
POSTGRES_DB: metabase
POSTGRES_PASSWORD_FILE: /run/secrets/db_password
networks:
- metanet1
secrets:
- db_password
- db_user
logging: *common_logging
volumes:
- ./data:/var/lib/postgresql/data
networks:
metanet1:
driver: bridge
secrets:
db_password:
file: db_password.txt
db_user:
file: db_user.txt
基本的に先ほど記載したサンプルのままです。
変更点は以下
– postgresにvolumeの指定を追加
– 全部のコンテナにログローテーションの設定を追加
– latestではなくバージョンを指定するようにした
– 記事投稿時点の最新バージョンに合わせた
docker compose up -d を実行してコンテナを起動。
localhost:3000 でログインしたら無事起動しました!!

とりあえず見たいデータの質問を作成して、ダッシュボードに追加してみました。
これも問題なくできたのでmetabaseの機能としては使える状態になっているかと思います。

docker compose down を実行して、再度 docker compose up -d を実行しても同じダッシュボード見れたのでデータの永続化も問題なさそうでした。
感想
公式がdocker-compose.yml用意していただいているおかげで簡単にMetabaseの環境を用意できました!
最初、ボリュームの永続化をmysqlの方法でやっていて「なんでできないんだ…」となっていましたが、そこはChatGPT先生に教えてもらいました。
手軽に聞ける先生が手に入るChatGPTすごいなと。
今はローカルなのですが、VPSなどを借りてどこからでもデータを確認できるようにしたいです。
コメント