前置重置:在windows 上安装好Docker Desktop
superset 在用户和权限管理的设计,基于flask-appbuild框架,因此如果需要修改配置,可参考Flask-AppBuilder项目的配置方式(config.py文件)。
Flask-AppBuilder
一、流程步骤
1、拉取Superset镜像
docker pull apache/superset
之后可以用命令 docker images
查看容器
2、构建容器
docker run -d -p 8080:8088 --name superset apache/superset
-d:后台运行,先不直接进入容器,是因为要修改superset配置
-p:将superset的8088端口映射到主机的8088端口
--name:给容器起个别名 superset,方便后续操作【这里我随便起的】
之后可以用 docker ps
命令查看容器
3、修改superset配置(修改数据源)
由于superset的容器内没有vi命令,无法在容器内直接修改配置文件,
因此需要将配置文件复制出来外面修改,之后再复制回去。
3.1、从容器中复制配置文件到主机
在宿主机命令窗口(PowerShell)执行下面命令
docker cp superset:/app/superset/config.py E:\DockerHouse\test
冒号前的superset是容器名,这里也可以使用容器id
/app/superset/config.py是superset的配置文件
E:\DockerHouse\test是主机的文件夹
通过上面命令将容器的配置文件config.py复制到宿主机,执行完命令后
宿主机E:\DockerHouse\test文件夹就有config.py文件了
3.2、直接修改config.py配置
superset后端用的是Flask AppBuilder,这里大家可以根据自身需要修改配置。
Base Configuration — Flask AppBuilder
FAB默认用的数据源是sqlite,我手动将其改为mysql,如下:
# The SQLAlchemy connection string.
# SQLALCHEMY_DATABASE_URI = "sqlite:///" + os.path.join(DATA_DIR, "superset.db")
# SQLALCHEMY_DATABASE_URI = 'mysql://myapp@localhost/myapp'
# SQLALCHEMY_DATABASE_URI = 'postgresql://root:password@localhost/myapp'
SQLALCHEMY_DATABASE_URI = 'mysql://root:root@host.docker.internal:3307/superset?charset=utf8'
host.docker.internal:这是宿主机的访问地址,我另外有创建了个mysql的容器(创建过程过于简单这里就不写了),mysql容器端口映射到宿主机的3307端口,所以这里superset容器可以访问mysql数据库,此外,我mysql的数据库叫做superset,切记要创建数据库。
3.3、将config.py 配置文件复制回容器
在宿主机命令窗口(PowerShell)执行下面命令
docker cp E:\DockerHouse\test\config.py superset:/app/superset
后续进入容器后,可以使用cat /app/superset/config.py
命令检查下配置是否修改完成。
4、重启容器、进入容器
docker restart superset
docker exec -it superset /bin/bash
重启容器后,容器检查到数据库为空时,会自动在数据库创建一些用户和权限相关的表(基于flask-appbuild框架,有兴趣可以看下)
后面步骤的命令都容器中执行。
5、在容器内
创建管理员账号(Flask AppBuilder)
superset fab create-admin
按提示创建管理员账号即可
6、更新superset的相关数据模型(即在数据库生成superset的数据表)
superset db upgrade
7、导入superset的案例(要梯子的,可以忽略此步骤)
superset load_examples
8、初始化superset(视图权限,即各个角色的访问权限)
superset init
9、宿主机访问superset
http://127.0.0.1:8080/
在步骤2构建容器时,我们映射到宿主机的端口就是8080