构建Metabase
本文档将向您展示如何在您的计算机上构建和运行Metabase,以便您可以尝试它或测试开发中的功能。您还可以使用预构建的Docker镜像运行Metabase的开发分支使用预构建的Docker镜像。
安装先决条件
如果您正在使用macOS,您需要首先安装Xcode命令行工具,方法如下:
xcode-select --install
为了完成任何Metabase代码的构建,您需要安装以下内容。
-
Clojure (https://clojure.net.cn) - 根据您的操作系统遵循指南安装最新版本
-
Java开发工具包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 11。
在M1苹果电脑上运行
如果您正在较新的苹果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上开发,您应该在Windows Subsystem for Linux (WSL)上运行Ubuntu,并遵循Ubuntu/Linux的说明。
在远程容器中使用VS Code进行开发
或者,无需显式安装上述依赖项,请遵循有关使用Visual Studio Code及其远程容器支持的指南使用Visual Studio Code。
克隆Metabase仓库
安装所有构建工具后,您需要从GitHub克隆Metabase仓库。
-
创建一个
workspace
文件夹(您可以将其命名为您想要的任何名称),它将存储Metabase代码文件。 -
打开您的终端应用,使用以下命令导航到您的workspace文件夹
cd ~/workspace
{:start=”3”} 3. 运行以下命令将Metabase“克隆”到该文件夹,使用GitHub上Metabase仓库的URL
git clone https://github.com/metabase/metabase
选择您想要运行的分支,并运行它
这部分是您将反复使用的部分。
Metabase的“官方”分支称为master
,其他功能开发分支在得到批准后会被合并到其中。因此,如果你想在这之前尝试某个功能,你需要知道该分支的名称,以便切换到它。以下是该怎么做:
{:start=”4”} 4. 打开你的终端应用
-
导航到您存储Metabase代码的位置。如果您完全遵循本指南,您可以通过输入以下命令到达那里
cd ~/workspace/metabase
-
通过运行以下命令“拉取”最新的代码
git pull
您应该每次都这样做,以确保您电脑上有所有最新的Metabase分支和代码。这也是您如何获得对某个分支进行更改的功能更新的方式。
-
通过访问该功能在GitHub上的“pull request”页面并复制分支名称来找到您想要运行的分支名称。以下是一个示例PR页面,其中分支名称为
fix-native-dataset-drill-popover
。 -
通过运行以下命令切换到该分支或“检出”
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将会停止。
- 在您的终端应用的另一个标签页或窗口中,然后使用此命令“构建”前端(所有UI)
yarn build-hot
如果您在此步骤中遇到问题,请确保您正在使用Node.js(https://node.org.cn/)的长期支持版本。
{: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应用程序被编译和组装成一个可以在任何现代JVM上运行的单一.jar文件。有一个脚本会执行整个过程的所有步骤,并为您生成最终成果。在运行构建脚本之前,您可以通过传递环境变量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守护进程正在运行。运行命令后,您将在./container-output/app/metabase.jar
找到Metabase JAR文件。
阅读关于其他Metabase版本的文档。