Docker for Windows 搭建Superset环境(修改数据源)

前置重置:在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:[email protected]: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

10、补充

10.1、修改数据库连接为mysql后,重启容器日志报错。解决方式:mysql8的远程登录策略和7的不一样,可搜索关键词解决:MYSQL8无法远程登录

你可能感兴趣的:(Docker for Windows 搭建Superset环境(修改数据源))