Docker for Windows 搭建Superset環(huán)境(修改數(shù)據(jù)源)

前置重置:在windows 上安裝好Docker Desktop

superset 在用戶和權限管理的設計,基于flask-appbuild框架,因此如果需要修改配置,可參考Flask-AppBuilder項目的配置方式(config.py文件)。
Flask-AppBuilder

一、流程步驟

1、拉取Superset鏡像

docker pull apache/superset

之后可以用命令 docker images查看容器

2、構(gòu)建容器

docker run -d -p 8080:8088 --name superset apache/superset

-d:后臺運行,先不直接進入容器,是因為要修改superset配置
-p:將superset的8088端口映射到主機的8088端口
--name:給容器起個別名 superset,方便后續(xù)操作【這里我隨便起的】
之后可以用 docker ps 命令查看容器

3、修改superset配置(修改數(shù)據(jù)源)

由于superset的容器內(nèi)沒有vi命令,無法在容器內(nèi)直接修改配置文件,
因此需要將配置文件復制出來外面修改,之后再復制回去。

3.1、從容器中復制配置文件到主機

在宿主機命令窗口(PowerShell)執(zhí)行下面命令

docker cp superset:/app/superset/config.py E:\DockerHouse\test

冒號前的superset是容器名,這里也可以使用容器id
/app/superset/config.py是superset的配置文件
E:\DockerHouse\test是主機的文件夾
通過上面命令將容器的配置文件config.py復制到宿主機,執(zhí)行完命令后
宿主機E:\DockerHouse\test文件夾就有config.py文件了

3.2、直接修改config.py配置

superset后端用的是Flask AppBuilder,這里大家可以根據(jù)自身需要修改配置。
Base Configuration — Flask AppBuilder
FAB默認用的數(shù)據(jù)源是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:這是宿主機的訪問地址,我另外有創(chuàng)建了個mysql的容器(創(chuàng)建過程過于簡單這里就不寫了),mysql容器端口映射到宿主機的3307端口,所以這里superset容器可以訪問mysql數(shù)據(jù)庫,此外,我mysql的數(shù)據(jù)庫叫做superset,切記要創(chuàng)建數(shù)據(jù)庫。

3.3、將config.py 配置文件復制回容器

在宿主機命令窗口(PowerShell)執(zhí)行下面命令

docker cp E:\DockerHouse\test\config.py superset:/app/superset 

后續(xù)進入容器后,可以使用cat /app/superset/config.py命令檢查下配置是否修改完成。

4、重啟容器、進入容器

docker  restart superset
docker exec -it superset /bin/bash

重啟容器后,容器檢查到數(shù)據(jù)庫為空時,會自動在數(shù)據(jù)庫創(chuàng)建一些用戶和權限相關的表(基于flask-appbuild框架,有興趣可以看下)
后面步驟的命令都容器中執(zhí)行。

5、在容器內(nèi)創(chuàng)建管理員賬號(Flask AppBuilder)

superset fab create-admin

按提示創(chuàng)建管理員賬號即可

6、更新superset的相關數(shù)據(jù)模型(即在數(shù)據(jù)庫生成superset的數(shù)據(jù)表)

superset db upgrade

7、導入superset的案例(要梯子的,可以忽略此步驟)

superset load_examples

8、初始化superset(視圖權限,即各個角色的訪問權限)

superset init

9、宿主機訪問superset

http://127.0.0.1:8080/
在步驟2構(gòu)建容器時,我們映射到宿主機的端口就是8080

10、補充

10.1、修改數(shù)據(jù)庫連接為mysql后,重啟容器日志報錯。解決方式:mysql8的遠程登錄策略和7的不一樣,可搜索關鍵詞解決:MYSQL8無法遠程登錄
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容