使用Docker compose在docker中部署Apache Superset
说明:部署步骤按照superset官网说明总结而来-2023年
1、第一步安装docker 、docker compose。
这里我选择手动下载rpm包,然后yum install *.rpm方式来安装。
下载地址:https://download.docker.com/linux/centos/7/x86_64/stable/Packages/
说明:因为我是Centos7.9的系统,所以下载地址如上。若你是其他系统,请选择自己对应的系统-可参考这个网页https://docs.docker.com/engine/install/。
下载rpm包如下:
containerd.io-1.6.18-3.1.el7.x86_64.rpm
docker-ce-cli-23.0.1-1.el7.x86_64.rpm
docker-scan-plugin-0.23.0-1.el7.x86_64.rpm
docker-buildx-plugin-0.10.2-1.el7.x86_64.rpm
docker-ce-rootless-extras-23.0.1-1.el7.x86_64.rpm
docker-ce-23.0.1-1.el7.x86_64.rpm
docker-compose-plugin-2.16.0-1.el7.x86_64.rpm
将这些包手动上传至centos系统,例如:
我将这些包上传至/opt/dockerpackage目录
随后执行 yum install /opt/dockerpackage/*.rpm 即可。 此时,安装docker与docker compose完成。
注意:你这台电脑最好有网,应该会有些依赖项需要安装。
这里列出这些依赖项,如果你没网,那几麻烦了,要自己去找对应版本下载。
audit-libs-python x86_64 2.8.5-4.el7 base 76 k
checkpolicy x86_64 2.5-8.el7 base 295 k
container-selinux noarch 2:2.119.2-1.911c772.el7_8 extras 40 k
fuse-overlayfs x86_64 0.7.2-6.el7_8 extras 54 k
fuse3-libs x86_64 3.6.1-4.el7 extras 82 k
libcgroup x86_64 0.41-21.el7 base 66 k
libsemanage-python x86_64 2.5-14.el7 base 113 k
policycoreutils-python x86_64 2.5-34.el7 base 457 k
python-IPy noarch 0.75-6.el7 base 32 k
setools-libs x86_64 3.3.8-4.el7 base 620 k
slirp4netns x86_64 0.4.3-4.el7_8 extras 81 k
这里验证docker是否安装好
启动docker: sudo systemctl start docker
pull一个hello world 执行看看:sudo docker run hello-world
看到 Hello from Docker! 那就OK了。
注意:这里hello-world镜像会从仓库pull,如果没网,需要自己去dockerhub下载这个镜像。
--所以你做这一切操作最好是有网的电脑。
2、克隆superset代码到本地并使用docker compose启动
这里我们不用git clone命令,直接下载zip包再解压即可
浏览器打开https://github.com/apache/superset网页,Dowanload ZIP 即可。
将下载的ZIP包(superset-master.zip)上传至/opt/superset目录(自己创建)。
使用unzip superset-master.zip 解压后得到superset-master文件夹
随后cd superset-master- 如果要修改默认的用户名密码,请先看第3步,而后再继续。
执行docker compose -f docker-compose-non-dev.yml pull
这个过程会需要几分钟
上一步完成后,执行docker compose -f docker-compose-non-dev.yml up
等到控制台输出变慢后 就完成了。
此时打开浏览器 输入:http://IP:8088/登录即可。
默认用户名密码是admin
3、如何修改默认的用户名及密码
这里的用户名密码实际是在docker-init.sh脚本里配置的。
我们通过查看docker-compose-non-dev.yml可以得知,superset_init是执行了docker-init.sh这个脚本,那么我们找到superset-master/docker目录下的docker-init.sh脚本。
随后找到设置用户名及密码的部分,手动修改即可。位置如下图
注意,在第2步中解压zip包后,先修改这里的用户名密码。
4、连接到ES数据库
由于默认不带连接到ES的驱动,需要手动安装一下。
参考:https://superset.apache.org/docs/databases/docker-add-drivers
首先 cd /opt/superset/superset-master/docker目录
执行:touch ./docker/requirements-local.txt
执行:echo "elasticsearch-dbapi" >> ./docker/requirements-local.txt
而后执行:docker compose build --force-rm
最后执行:docker compose up
注意,如何网页登录不正常,那先停了在启动一下
命令如下:docker compose down
再启动:docker compose -f docker-compose-non-dev.yml up
此时再Database connections中添加database即可选到ES了。
SQLALCHEMY URI格式参考https://superset.apache.org/docs/databases/installing-database-drivers表格Connection String即可,ES格式如图
5、连接到其他数据库
参考第4步,只需修改
echo “elasticsearch-dbapi” >> ./docker/requirements-local.txt
这一步中的elasticsearch-dbapi 将这个替换成对应数据库的即可。
例如,连接到clickhouse,则将elasticsearch-dbapi 替换成clickhouse-connect
参考:https://superset.apache.org/docs/databases/installing-database-drivers