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

プログラミング
この記事は最終更新から1年以上経過しています。内容が古くなっている可能性があります。

初めに

自分は勉強時間を自作の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 | Metabase Documentation
Running Metabase on Docker To get fast, reliable, and secure deployment with none of the work or hidden costs that come ...

適当にディレクトリを作成して、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をコピーしました