docker compose使ってMetabase構築してみた

プログラミング

初めに

自分は勉強時間を自作のWEBアプリで記録しています。
以下が記事投稿時点で使用している勉強時間記録アプリです。

GitHub - nakajima97/laravel-study-record-app-v2: 学習記録アプリのv2
学習記録アプリのv2. Contribute to nakajima97/laravel-study-record-app-v2 development by creating an account on GitHub.

このアプリは記録が主な機能です。
記録した情報を見れる機能はだいぶ絞っており、アプリ上で確認できる情報は以下の3つだけです。
– 今月の総学習時間
– 今日の総学習時間
– 今日付けた記録

このアプリを運用して3か月たつのでデータもいい感じにたまってきました。
というわけでもっといろんなデータ見てぇよな!ということでBIツールを入れてみることにしました。
職場で使ったことがあるのでMetabaseにしました。

お試しとしてローカルで動かしています。

環境

Ubuntu 22.04.2 LTS (WSL)
Docker version 24.0.2

やってみた

公式サイトにdocker composeを使ったサンプルがあるのでこれを参考にやってみました。

Running Metabase on Docker
Running Metabase on Docker Metabase provides an official Docker image via Dockerhub that can be used for deployments on ...

適当にディレクトリを作成して、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などを借りてどこからでもデータを確認できるようにしたいです。

Follow me!

コメント

PAGE TOP
タイトルとURLをコピーしました