构建 Metabase
本文档将向您展示如何在自己的计算机上构建和运行 Metabase,以便您可以试用或测试开发中的功能。您还可以使用预构建的 Docker 镜像运行 Metabase 的开发分支。
安装先决条件
如果您使用 macOS,您需要首先安装 Xcode Command Line Tools,运行
xcode-select --install
要完成 Metabase 代码的任何构建,您需要安装以下工具。
-
Clojure (https://clojure.net.cn) - 根据您的操作系统按照指南安装最新版本
-
Java Development Kit JDK (https://adoptopenjdk.net/releases.html) - 您需要安装 JDK 11(更多 Java 版本信息)
-
Node.js (https://node.org.cn/) - 最新 LTS 版本
-
Node.js 的 Yarn 包管理器 - 版本 1.x 的最新版本 - 您可以在任何操作系统中通过运行以下命令安装
npm install --global yarn
在最新稳定的 Ubuntu/Debian 上,除了 Clojure 之外的所有上述工具都可以通过使用以下命令安装
sudo apt install openjdk-11-jdk nodejs && sudo npm install --global yarn
如果您的机器上安装了多个 JDK 版本,请务必在构建前使用以下命令切换您的 JDK
sudo update-alternatives --config java
然后从菜单中选择 Java 21。
在 M1 苹果电脑上运行
如果您正在较新的 Apple M1 电脑上开发,请注意当前的 NodeJS LTS 原生支持 arm 架构。但是,在尝试构建前端之前,请确保您已安装 Rosetta 2
/usr/sbin/softwareupdate --install-rosetta (root permission not required)
或
/usr/sbin/softwareupdate --install-rosetta --agree-to-license (root permission required)
如果您运行的是 Windows,请使用 WSL
如果您正在 Windows 上开发,您应该在适用于 Linux 的 Windows 子系统 (WSL) 上运行 Ubuntu,并遵循 Ubuntu/Linux 的说明。
使用远程容器进行 VS Code 开发
或者,无需明确安装上述依赖项,请遵循有关使用 Visual Studio Code及其远程容器支持的指南。
克隆 Metabase 仓库
安装所有构建工具后,您需要从 GitHub 克隆 Metabase 仓库。
-
创建一个名为
workspace
的文件夹(您可以将其命名为该名称或任何您喜欢的名称),它将存储 Metabase 代码文件。 -
打开您的终端应用程序,并使用以下命令导航到您的工作区文件夹
cd ~/workspace
- 运行以下命令将 Metabase “克隆”到此文件夹中,使用 GitHub 上 Metabase 仓库的 URL
git clone https://github.com/metabase/metabase
选择您要运行的分支,然后运行它
这是您将反复使用的部分。
Metabase 的“官方”分支名为 master
,其他功能开发分支在批准后会合并到其中。因此,如果您想在此之前试用某个功能,您需要知道该分支的名称才能切换到它。操作方法如下:
-
打开您的终端应用程序
-
导航到您存储 Metabase 代码的位置。如果您严格遵循本指南,您将通过输入以下命令到达那里
cd ~/workspace/metabase
-
通过运行以下命令“拉取”最新代码
git pull
您应该每次都这样做,以确保您的计算机上拥有所有最新的 Metabase 分支和代码。这也是当有人更改功能分支时您获取更新的方式。
-
通过转到 GitHub 上该功能的“拉取请求”页面并从那里复制分支名称来查找您要运行的分支名称。这是一个示例 PR 页面,分支名称为
fix-native-dataset-drill-popover
。 -
通过运行以下命令切换到或“签出”该分支
git checkout <branch-name>
如果我们要切换到上一步中的分支,我们将运行
git checkout fix-native-dataset-drill-popover
当您想切换回
master
时,运行git checkout master
运行 Metabase
- 现在我们将使用以下命令启动 Metabase 的后端服务器
clojure -M:run
完成后,您应该会看到一条消息,例如“Metabase 初始化完成”。保持终端应用程序中的此选项卡运行,否则 Metabase 将停止。
- 打开终端应用程序的另一个选项卡或窗口,然后使用此命令“构建”前端(所有 UI)
yarn build-hot
如果您在此步骤遇到问题,请确保您使用的是 Node.js (https://node.org.cn/) 的 LTS 版本。
- 在您选择的 Web 浏览器中,导航到
http://localhost:3000
,您应该会看到 Metabase!
这是您计算机上的本地“服务器”,3000 是 Metabase 运行的“端口”。您可以在自己的计算机上运行多个不同的应用程序,每个应用程序在不同的端口上运行。请注意,如果您与他人共享任何以 localhost
开头的 URL,他们将无法访问它们,因为您的计算机默认情况下不向全世界开放,这是出于安全考虑。
要切换到不同的分支或切换回 master
,请打开另一个终端选项卡,然后重复步骤 6、7 和 8。如果 Metabase 尚未运行,您还需要再次完成步骤 9 和 10。如果它已经运行,前端将自动重建。您可以通过切换到终端中的该选项卡来检查其进度——通常需要大约 15 秒,但这取决于您的硬件。
关闭 Metabase
如果您想停止 Metabase 运行,您可以退出终端程序,或者转到运行后端的选项卡,按 Ctrl+C
停止后端。大多数情况下,您无需执行此操作即可切换分支,但在某些情况下,您尝试查看的更改或功能是后端更改,您可能需要按 Ctrl+C
停止后端,然后通过再次完成步骤 9 来重新启动它。
构建 Metabase Uberjar
整个 Metabase 应用程序被编译并组装成一个单一的 .jar 文件,可以在任何现代 JVM 上运行。有一个脚本将执行所有步骤并为您输出最终的 artifact。您可以在运行构建脚本之前传递环境变量 MB_EDITION 来选择您要构建的版本。如果您不提供值,默认是 oss
,它将构建社区版。
./bin/build.sh
运行构建脚本后,只需在 target/uberjar
中查找输出的 .jar 文件即可。
在容器化环境中构建 Metabase Uberjar
如果您想在不安装 Clojure、Java 和 Node.js 的主机上构建 Metabase,您可以在容器内构建 Uberjar,方法是运行
DOCKER_BUILDKIT=1 docker build --output container-output/ .
在执行命令之前,请确保您的 Docker Daemon 正在运行。运行命令后,您将在 ./container-output/app/metabase.jar
找到 Metabase JAR 文件。
阅读其他Metabase 版本的文档。