- 和nginx结合使用,如果不是配置到根路径,会比较麻烦,我试了很多种方法,也就 这个 靠谱点,不过,我最后还是选择的部署在根路径,先探索一番再说
- 默认不能选择mysql数据库,需要安装mysql客户端驱动,在docker里直接安没安上,需要切root,执行如下操作
# 需要以root进入执行安装和配置
docker exec -it --user root superset /bin/bash
# 安装依赖包
apt-get install pkg-config
apt-get install build-essential
# 安装客户端
pip install mysqlclient
- 设置为中文,修改superset_config.py文件
BABEL_DEFAULT_LOCALE = 'zh'
LANGUAGES = {
'zh': {'flag': 'cn', 'name': '简体中文'},
'en': {'flag': 'us', 'name': 'English'}
}
- 查表时发现并没有使用postgres数据库,而是用的自带的sqlite,猜测是官方的镜像中没有postgres的驱动的缘故吧,那就自己做一个新的镜像,顺便把mysql驱动也加进来
Dockerfile:
FROM apache/superset:latest
USER root
RUN apt-get update && \
apt-get install -y pkg-config build-essential && \
pip install mysqlclient psycopg2-binary
USER superset
创建镜像:
docker build -t my-superset-image .

- 重新调整后还是不行,最后在superset_config.py中加入数据库连接串后,好使了,如下:
SQLALCHEMY_DATABASE_URI = "postgresql+psycopg2://superset:superset@db:5432/superset"

- 最后的yml文件如下,注释掉了SUPERSET_DATABASE_URI(用SQLALCHEMY_DATABASE_URI也不好使)
superset-init:
image: my-superset-image
container_name: superset-init
environment:
SUPERSET_SECRET_KEY: "f8sd9f7sd9f8s9d8f7sd98f7sdf"
SUPERSET_CONFIG_PATH: "/app/configs/superset_config.py"
# SUPERSET_DATABASE_URI: "postgresql+psycopg2://superset:superset@db:5432/superset"
depends_on:
- db
volumes:
- ./superset_config.py:/app/configs/superset_config.py
command: >
/bin/bash -c "
superset db upgrade &&
superset fab create-admin --username admin --firstname Superset --lastname Admin --email admin@superset.com --password admin &&
superset init
"
networks:
- app-network
superset:
image: my-superset-image
container_name: superset
environment:
SUPERSET_SECRET_KEY: "f8sd9f7sd9f8s9d8f7sd98f7sdf"
SUPERSET_CONFIG_PATH: "/app/configs/superset_config.py"
#SUPERSET_DATABASE_URI: "postgresql+psycopg2://superset:superset@db:5432/superset"
expose:
- "8088"
depends_on:
- db
- superset-init
volumes:
- ./superset_config.py:/app/configs/superset_config.py
command: >
/bin/bash -c "
superset run -h 0.0.0.0 -p 8088
"
networks:
- app-network