美文网首页Superset
利用docker部署superset

利用docker部署superset

作者: 唯此 | 来源:发表于2018-11-26 16:44 被阅读0次

    基本用法

    1.打开linus中的命令行.
    -t: 在容器内指定一个终端
    -i:允许对容器进行标准输入进行交互

    runoob@runoob:~$ docker run -i -t ubuntu:15.10 /bin/bash
    

    1.查询正在运行的容器

    $ docker ps
    

    1.在linux中安装python
    首先在D盘中新建一个ubuntu_python文件夹.之后映射到容器中的文件.

    $ docker run -it --name ubuntu_python -v /docker_python:/home/python --# net=host 93fd78260bd1 /bin/bash
    $ cd home/python //进入到指定目录
    $ apt update           //更新ubuntu系统
    $ apt install python3  //安装python3
    

    坑: 映射宿主文件夹与docker文件夹会报错

    映射的时候会报错。

    C:\Users\CC> docker run -d -p 5009:5009 -v D:\host_mnt\data\sqlite:/home/superset amancevice/superset:0.28.1
    C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: invalid volume specification: '/host_mnt/d/host_mnt/data/sqlite:/home/superset': invalid mount config for type "bind": invalid mount path: '/home/superset' mount path must be absolute.
    See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.
    

    此时需要打开docker setting里面的shared Drives选项框。点击Reset credentials。


    image.png

    然后再重启powershell,执行同样的命令就可以了。

    PS C:\Users\CC> docker run -d -p 5009:5009 -v D:\host_mnt\data\sqlite:\home\superset amancevice/superset:0.28.1
    55d8c025ab43d5d38902d3e8045a1bdc57a5b9c307a9af043c085035193d72eb
    

    坑: 启动superset会报错

    PS C:\Users\CC> docker exec -it 55d8c025ab43 superset init
    2018-11-26 08:03:17,617:ERROR:flask_appbuilder.base:'NoneType' object has no attribute 'name'
    Traceback (most recent call last):
      File "/usr/local/lib/python3.6/site-packages/flask_appbuilder/base.py", line 469, in _add_permission
        self.sm.add_permissions_view(baseview.base_permissions, baseview.__class__.__name__)
      File "/usr/local/lib/python3.6/site-packages/flask_appbuilder/security/manager.py", line 923, in add_permissions_view
        if perm_view.permission.name not in base_permissions:
    AttributeError: 'NoneType' object has no attribute 'name'
    2018-11-26 08:03:17,618:ERROR:flask_appbuilder.base:Add Permission on View Error: 'NoneType' object has no attribute 'name'
    2018-11-26 08:03:17,954:INFO:root:Creating database reference
    2018-11-26 08:03:17,974:INFO:root:Syncing role definition
    2018-11-26 08:03:18,043:INFO:root:Syncing Admin perms
    

    此时需要再执行一次superset init才能成功。参考链接

    坑:启动superset服务端口被占用

    因为宿主电脑上的8088端口似乎被占用了启动不起来。一开始就要把容器内的5009端口映射到宿主的5009端口上去。

    PS C:\Users\CC> docker exec -it 55d8c025ab43 superset runserver -p 5009
    

    坑: 上传csv的时候会出现permission error

    网上有解决方案
    https://github.com/apache/incubator-superset/issues/6156
    首先以root身份登录。

    docker exec -it --user root <container id> /bin/bash
    

    然后去变更superset文件的权限。


    image.png

    坑: 重新关闭docker容器之后之前的数据都丢失了.

    方法1.利用文件夹映射
    superset自己本身的table,dashboard等数据的存放地址默认为 /var/lib/superset/superset.db.因此应该把/var/lib/superset/这个容器文件夹映射到某个宿主文件夹中来.下次启动的时候再挂载宿主电脑的路径.
    [注]superset中可以在config_superset.py中配置存放地址
    SQLALCHEMY_DATABASE_URI = 'sqlite:////path/to/superset.db'

    方法2.容器关闭后重新进去,数据还在原处.(未验证)比如
    通过 docker ps -a 看到关闭的容器
    docker start your_container_name

    如何把superset的图标嵌入到自己的网站中.

    1.需要修改superset_config.py文件,将PUBLIC_ROLE_LIKE_GAMMA改为True(赋予公共角色与GAMMA角色相同的权限集)。同时设置
    HTTP_HEADERS = {'X-Frame-Options': ' ALLOWALL'}(允许跨站访问)
    [注]superset会在/home/superset文件夹中来查找superset_config.py.因此需要映射到宿主文件夹中来.然后再宿主文件夹中添加这个文件
    2.在superset中配置public的权限


    image.png
    image.png

    其中:
    Ø can explore on Superset为导出图表
    Ø can explore json on Superset为导出图表json
    Ø all database access on all_database_access访问所有数据库权限,也可以设置单个
    3.获取ifram链接


    image.png
    把这个iframe标签放到html文件中即可使用.

    相关文章

      网友评论

        本文标题:利用docker部署superset

        本文链接:https://www.haomeiwen.com/subject/anhrqqtx.html