构建 Metabase

本文档将向您展示如何在您自己的计算机上构建和运行 Metabase,以便您可以试用或测试开发中的功能。您还可以使用预构建的 Docker 镜像运行 Metabase 的开发分支。

安装先决条件

如果您使用的是 macOS,您需要首先安装 Xcode 命令行工具,通过运行

xcode-select --install

要完成 Metabase 代码的任何构建,您需要安装以下内容。

  1. Clojure (https://clojure.net.cn) - 根据您的操作系统,按照指南安装最新版本

  2. Java 开发工具包 JDK (https://adoptopenjdk.net/releases.html) - 您需要安装 JDK 11 (有关 Java 版本的更多信息)

  3. Node.js (https://node.org.cn/) - 最新 LTS 版本

  4. Yarn Node.js 包管理器 - 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 计算机上运行

如果您是在较新的 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 仓库

  1. 创建一个 workspace 文件夹(您可以将其命名为您想要的任何名称),该文件夹将存储 Metabase 代码文件。

  2. 打开您的终端应用程序,并使用以下命令导航到您的 workspace 文件夹

cd ~/workspace

{:start=”3”} 3. 运行以下命令以使用 GitHub 上 Metabase 仓库的 URL 将 Metabase “克隆” 到此文件夹中

git clone https://github.com/metabase/metabase

选择您要运行的分支并运行它

这是您将反复使用的部分。

Metabase 的“官方”分支称为 master,其他功能开发分支在获得批准后会合并到其中。因此,如果您想在那之前试用某个功能,您需要知道该分支的名称,以便您可以切换到它。以下是操作方法

{:start=”4”} 4. 打开您的终端应用程序

  1. 导航到您存储 Metabase 代码的位置。如果您完全按照本指南操作,您可以通过输入以下命令到达那里

    cd ~/workspace/metabase
    
  2. 通过运行以下命令“拉取”最新代码

    git pull
    

    您应该每次都这样做,以确保您的计算机上拥有所有最新的 Metabase 分支和代码。这也是您获取某人对其进行更改的功能分支的更新的方式。

  3. 通过转到 GitHub 上该功能的“拉取请求”页面并从那里复制分支名称来查找您要运行的分支的名称。这是一个示例 PR 页面,分支名称为 fix-native-dataset-drill-popover

  4. 通过运行以下命令切换到或“检出”该分支

    git checkout <branch-name>
    

    如果我们想切换到上一步中的分支,我们将运行

    git checkout fix-native-dataset-drill-popover
    

    当您想切换回 master 时,运行

    git checkout master
    

运行 Metabase

{:start=”9”} 9. 现在我们将使用以下命令启动 Metabase 的后端服务器

clojure -M:run

完成后,您应该会看到一条消息,例如“Metabase 初始化完成”。保持终端应用程序中的此选项卡运行,否则它将停止 Metabase。

  1. 打开终端应用程序的另一个选项卡或窗口,然后使用以下命令“构建”前端(所有 UI)
yarn build-hot

如果您在此步骤中遇到问题,请确保您使用的是 Node.js (https://node.org.cn/) 的 LTS 版本。

{:start=”11”} 11. 在您选择的 Web 浏览器中,导航到 https://127.0.0.1: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 上运行。有一个脚本可以执行该过程中的所有步骤,并为您输出最终的工件。您可以在运行构建脚本之前传递环境变量 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 的文档。