使用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/.env
和docker/.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(它运行在你的本地机器中). 其他的数据库可能会有轻微不同的配置,但是要点是相同的,归结为下面两步
- (Mac用户可以跳过这个步骤)配置本地的postgresql数据库允许公共连接。postgresql默认只允许从
localhost
连接,再说一次,对于本地机器和docker容器来说localhosts
是不同的。对于postgresql,它只需要在postgresql.conf
和pg_hba.conf
修改一行,对于这个修改你可以在网站上找到针对你的操作系统和PG版本的有用链接。对于docker来说,将IP白名单从172.0.0.0/8
修改为*
就可以了,无论如何,你是被警告的去做这个,因为你把你的数据库对所以人开放了,在生产的数据库里可能会产生灾难性的后果。 - 当试图连接数据库是,使用
host.docker.internal
(Mac用户) or172.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地址。