Metabaseをビルドしようとしたのですが、Clojureに慣れてなくて環境構築詰まったので、Dockerでビルドしてみました。
環境前提
- Docker
- Git
Metabaseソースの取得
Gitでソースコードクローンします。
git clone https://github.com/metabase/metabase.git cd metabase/ # ビルドしたいバージョンのタグをチェックアウト git checkout -f v1.43.5
ビルド用のDockerコンテナ起動
こちらからビルド用に使うコンテナ選びます。
java-version
https://hub.docker.com/_/clojure
docker run -it --rm \ -v $(pwd):/tmp/metabase \ --workdir /tmp/metabase \ clojure:openjdk-11-tools-deps-slim-bullseye /bin/bash
ビルド用の準備
上記の docker run
で /bin/bash
を渡しているのでBashのプロンプト待ちになります。
以下のコマンドを打っていきます。マシンスペック次第ですが、ビルド部分は時間かかると思います。
# 必要モジュールインストール apt update && apt install -y curl gnupg # nodejsのインストール curl -sL https://deb.nodesource.com/setup_lts.x | bash - apt update && apt install -y nodejs # yarnインストール curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list apt update && apt install -y yarn # ビルド yarn ./bin/build
ビルドが完了すると以下のように表示されます。
2022-08-13 06:22:03,548 INFO metabase.core :: Metabase v0.43.6-SNAPSHOT (7a895ac ?) Copyright © 2022 Metabase, Inc. Metabase Enterprise Edition extensions are PRESENT. Usage of Metabase Enterprise Edition features are subject to the Metabase Commercial License. See https://www.metabase.com/license/commercial/ for details. Finished compilation in 29.2 seconds. Copy resources Copy src Copy shared/src Copy resources Create uberjar Building uber jar: /tmp/metabase/target/uberjar/metabase.jar Created uberjar in 16.6 seconds. Update META-INF/MANIFEST.MF Built target/uberjar/metabase.jar in 49.3 seconds. Uberjar built successfully. All build steps finished.
アーティファクトの確認と実行
以下のようにjarファイルが作成されています。
root@13499f53b576:/tmp/metabase# ls -lh target/uberjar/metabase.jar -rw-r--r-- 1 root root 232M Aug 13 06:22 target/uberjar/metabase.jar
早速実行することでmetabaseが立ち上がります。
java -jar ./target/uberjar/metabase.jar
http://localhost:3000
で起動してアクセスできました。
エラー対応
途中で以下のエラーが発生しました。
2022-08-13 14:41:45,948 ERROR metabase.core :: Metabase Initialization FAILED liquibase.exception.ValidationFailedException: Validation Failed: 1 change sets check sum migrations/000_migrations.yaml::268::rlotun was: 8:4ccc4d50f9b233bc6515780d9cae360b but is now: 8:9da2f706a7cd42b5101601e0106fa929 at liquibase.changelog.DatabaseChangeLog.validate(DatabaseChangeLog.java:296)
DBのmigrationが失敗しているようなので、以下のコマンドを打ったところ解消したので書いておきます。
java -jar ./target/uberjar/metabase.jar migrate force
直ったようです。この後改めてmetabase起動したら問題無く起動できました。
2022-08-13 14:44:17,373 INFO db.setup :: Setting up Liquibase... 2022-08-13 14:44:17,586 INFO db.setup :: Liquibase is ready.