跳到主要内容

使用Docker Compose安装本地安装Superset

在本地最快的尝试Superset方式是在一个Linux或者Mac系统的电脑上使用Docker和Docker Compose。Superset对Windows没有官方支持,所以我们提供了一个通过使用虚拟机的变通方式。

1. 安装Docker引擎和Docker Compose

Mac OSX

Mac安装Docker, 它包括开箱即用的Docker引擎和最新版本的Docker Compose. 当你在Mac上安装Docker后,打开docker的偏好设置,进入到资源区域,把分配内存增加到6GB。当默认分配2GB内存时,Superset将会启动失败。

Linux

通过使用适合你的系统的Docker的使用说明来在Linux上安装Docker.因为docker-compose 你不是在Linux上安装docker的一部分, 当你有了一个能运行的引擎, 使用Linux的docker-compose 安装说明来安装一下docker-compose.

Windows

不幸的是,Superset不支持在Windows上安装。对于想本地安装Superest的Windows用户可以通过VirtualBox安装一个Ubuntu桌面版的系统,在这个虚拟机上使用linux架构来启动docker。 我们建议至少分配8GB内存和至少40G的硬盘存储给这个虚拟机,以便于有足够的空间给操作系统和Superset的依赖使用。最近通过增加Windows子系统来支持Linux(WSL)2的Docker Desktop,也可能是另一个选择。

2. 克隆Superset的GitHub仓库

在您的终端通过使用下面的命令行来拷贝Superset仓库

git clone https://github.com/apache/superset.git

当上述命令成功完成后,你会在当前的文件夹下看到新创建的superst文件夹。

3. 使用Docker Compose启动Superset

进入到在上一步创建的的文件夹里:

cd superset

当你使用master分支时, 运行下面的命令:

docker-compose -f docker-compose-non-dev.yml pull
docker-compose -f docker-compose-non-dev.yml up

或者,你可以通过使用签出的分支标签来运行指定版本的Superset. 然后使用TAG变量运行docker compose。例如,想要运行1.4.0版本,执行下面的命令:

git checkout 1.4.0
TAG=1.4.0 docker-compose -f docker-compose-non-dev.yml pull
TAG=1.4.0 docker-compose -f docker-compose-non-dev.yml up

当容器在你的机器上启动时,你可以看到大量的日志输出。当日志输出减少,在你的本地机器上会运行一个Superset实例。

注意: 这将会使Superset处于非开发模式, 修改代码库将不会实时反应出来.如果你想在测试模式下测试本地修改, 你可以使用docker-compose up替换之前的命令,然后等待Superset节点容器构建完资源。

配置Docker Compose

下面的的部分是为了想要在Docker Compose启动时配置Superset的准备的。如果你不想配置,你可以跳过下面的部分。

你可以使用docker/.envdocker/.env-non-dev分别的为Docker Compose配置开发模式和非开发模式。在Docker Compose配置中,这些环境变量文件为大多数的容器设置变量,其中一些变量影响多个容器,其他的只影响一个容器。一个重要的变量是SUPERSET_LOAD_EXAMPLES,它决定superset_init容器是否在数据库和Superset加载示例和可视化数据。这些示例对于大多数人是有用的,但是,对于有经验的用户可能是不需要的。加载过程有时会花费几分钟和大量的CUP,所以在一个资源紧张的设备上你可能希望禁用他。

注意: 用户经常想要从Superset连接其他的数据库.当前,最容易的方式是修改docker-compose-non-dev.yml文件,然后添加你的数据库作为其他服务依赖的服务(通过x-superset-depends-on),其他人试图在Superset服务上设置network_mode: host,但是,这个安装通常会打断安装,因为对于这些服务来说,这个配置需要使用Docker Compose域名解析器。如果你对于这个你有好的解决方案,请告知我们!

4. 登录到Superset

你的本地Superset实例包括了一个存储数据的Postgres服务,它也预载了一些示例数据集。你能通过浏览器访问http://localhost:8088来进入Superset.当你的浏览器默认使用https,请确保使用http。

使用默认的用户名和密码登录

username: admin
password: admin

5. 使用本地数据库实例连接Superset

当使用docker或者docker-compose运行Superset,它运行在自己的docker容器时,它好像运行在一个独立的服务器中。因为localhost指向正在运行Superset的docker容器,而不是你实际的本地机器,所以,试图使用主机名localhost连接你的本地数据库将不会成功。幸运的是,docker提供一个简单的方式去连接网络资源,它能让我们从容器内部连接到本地机器,我们将充分利用这个能力去连接我们本地的数据库实例。

下面的将说明如何从Superset(它运行在docker容器中)连接postgresql(它运行在你的本地机器中). 其他的数据库可能会有轻微不同的配置,但是要点是相同的,归结为下面两步

  1. (Mac用户可以跳过这个步骤)配置本地的postgresql数据库允许公共连接。postgresql默认只允许从localhost连接,再说一次,对于本地机器和docker容器来说localhosts是不同的。对于postgresql,它只需要在postgresql.confpg_hba.conf修改一行,对于这个修改你可以在网站上找到针对你的操作系统和PG版本的有用链接。对于docker来说,将IP白名单从172.0.0.0/8 修改为 *就可以了,无论如何,你是被警告的去做这个,因为你把你的数据库对所以人开放了,在生产的数据库里可能会产生灾难性的后果。
  2. 当试图连接数据库是,使用host.docker.internal (Mac用户) or 172.18.0.1 (Linux用户)代替localhost作为作为主机名。这是docker内部细节:在Mac系统docker创建了一个叫host.docker.internal的域名解析器入口,它负责解析本地正确的地址。然而,在linux不是这样的(至少默认情况)。如果这两个主机名都不成功,你可能需要精确的主机名来使用,对此,可以使用ifconfig或者ip addr show,查看docker0接口的IP地址,这个接口是docker为你创建的。如果你没有看见docker0接口,请运行(如果它需要使用sudo)docker network inspect bridge,查看是否有一个网关入口,它标注了IP地址。