天天看点

docker环境下的superset升级

1.拉取最新镜像,这里选择的是apache/superset:master

docker pull apache/superset:master
           

2.使用镜像启动对应的新服务(注意:name和本地映射目录不要和之前的superset重复)

docker run -d -p 8088:8088 -v /opt/docker/superset:/home/superset  --name superset amancevice/superset
docker cp /etc/localtime 13fb148b8910:/etc/
docker cp /etc/timezone 13fb148b8910:/etc/
           

3.配置服务:

# 进入容器内部
docker exec -it -u root 13fb148b8910  /bin/bash
apt-get update
apt-get install vim
cd /app/superset
vim config.py
# 修改如下
# 1.配置mysql元数据存储
SQLALCHEMY_DATABASE_URI = 'mysql://admin_superset:@[email protected]/superset?charset=utf8'
# 2.汉化
BABEL_DEFAULT_LOCALE = "zh"
BABEL_DEFAULT_FOLDER = "/app/superset/translations"
LANGUAGES = {
    "en": {"flag": "us", "name": "English"},
    #"es": {"flag": "es", "name": "Spanish"},
    #"it": {"flag": "it", "name": "Italian"},
    #"fr": {"flag": "fr", "name": "French"},
    "zh": {"flag": "cn", "name": "Chinese"},
    #"ja": {"flag": "jp", "name": "Japanese"},
    #"de": {"flag": "de", "name": "German"},
    #"pt": {"flag": "pt", "name": "Portuguese"},
    #"pt_BR": {"flag": "br", "name": "Brazilian Portuguese"},
    #"ru": {"flag": "ru", "name": "Russian"},
    #"ko": {"flag": "kr", "name": "Korean"},
}
# 3.开启superset运行日志
ENABLE_TIME_ROTATE = True
#修改完成后保存退出

#安装clickhouse驱动
pip install sqlalchemy-clickhouse-timezone
cd /usr/local/lib/python3.7/site-packages/sqlalchemy_clickhouse_timezone
vim connector.py
# 修改如下
configed = os.getenv('CLICKHOUSE_USE_TIMEZONE', '1')
           

4.退出并重启容器

docker restart 13fb148b8910
           

5.初始化superset

# 创建admin用户
docker exec -it superset superset fab create-admin \
               --username admin \
               --firstname Superset \
               --lastname Admin \
               --email [email protected] \
               --password admin
# 更新数据库
docker exec -it superset superset db upgrade
# 初始化服务
docker exec -it superset superset init
           

6.同步数据

# 使用数据同步工具同步superset元数据,这里使用的是dbeaver
1.使用dbeaver导出原supreset数据库
2.同步数据至新superset数据库(这里注意保留前面初始化的数据库表,可以准备2个数据库,一个用来同步元数据,一个保留最新版本的数据库表)
3.同步表结构不一致的数据表,目前已发现的有(query、tab_stat、report_execution_log、report_schedule),这里也是使用dbeaver的表数据同步功能进行的同步。
4.重启容器:docker restart 13fb148b8910

注:还需要配置LDAP登录、邮件和报警功能、redies缓存。
           

PS:文章写的比较粗略,有一些细节点可能没有注意,如有疑问欢迎留言讨论。也可以加本人知识星球:https://t.zsxq.com/nUN7QRj,一起讨论交流。

继续阅读