核心三步:快速启动基础服务、替换sqlite为postgresql等元数据库、在web界面添加mysql/clickhouse/dli等业务数据源;全程基于docker,无需本地python环境或编译。

用 Docker 部署 Superset 并对接大数据源,核心是三步:快速启动基础服务、替换默认 SQLite 为稳定元数据库(如 PostgreSQL)、再在 Web 界面中添加真实业务数据源(如 MySQL/ClickHouse/DLI)。整个过程不依赖本地 Python 环境,也不需要编译,适合开发测试和中小规模生产使用。
一、启动 Superset 容器并完成初始化
拉取带版本号的镜像,避免 latest 行为不可控:
- docker pull apache/superset:4.1.2
- 后台运行容器,映射端口并挂载数据目录(防止重启丢配置):
docker run -d -p 8088:8088 \
-v $(pwd)/superset-data:/var/lib/superset \
--name superset apache/superset:4.1.2 - 等待 30 秒后,进入容器执行初始化(创建 admin 用户 + 初始化表结构):
docker exec -it superset superset fab create-admin
docker exec -it superset superset db upgrade
docker exec -it superset superset init
此时访问 http://localhost:8088,用 admin/admin 登录即可看到界面。
二、对接外部元数据库(推荐 PostgreSQL)
SQLite 仅限单机体验,生产必须换 PostgreSQL 或 MySQL 存储 Superset 自身的用户、图表、权限等元数据。
- 先确保 PostgreSQL 服务已就绪(可单独部署或用 Docker 启一个):
docker run -d --name pg-superset -e POSTGRES_PASSWORD=superset \
-p 5432:5432 -v $(pwd)/pg-data:/var/lib/postgresql/data \
postgres:14 - 重新启动 Superset 容器,通过环境变量指定元数据库地址:
docker run -d -p 8088:8088 \
-e SUPERSET_DATABASE_URI="postgresql+psycopg2://postgres:superset@host.docker.internal:5432/superset" \
-v $(pwd)/superset-data:/var/lib/superset \
--name superset apache/superset:4.1.2
(注意:host.docker.internal是 Docker Desktop 默认宿主机别名;Linux 用户需用--add-host=host.docker.internal:host-gateway) - 进容器执行
superset db upgrade和superset init,确保表结构同步、管理员可用。
三、在 Web 界面中添加大数据业务源
Superset 本身不存储业务数据,只做查询代理。你需要在 UI 中手动添加目标数据源连接,支持多种协议:
-
MySQL / PostgreSQL:进入 Data → Databases → + Database,选择对应类型,填入 JDBC URL,例如:
mysql://user:pass@192.168.1.100:3306/olap -
ClickHouse:需提前在容器内安装驱动。推荐改用
docker-compose方式,在requirements-local.txt加clickhouse-connect,重建镜像后启动。 -
华为云 DLI:选择数据库类型为 DLI,填写 AK/SK、Endpoint、Project ID 等信息;驱动需提前放入容器
/app/superset/venv/lib/python3.x/site-packages/或构建自定义镜像。 - 所有连接添加后,务必点击 Test Connection,成功后再保存。
四、持久化与安全建议
容器默认重启即丢失状态,以下操作建议一步到位:
- 挂载配置目录:
-v $(pwd)/conf:/etc/superset,可覆盖superset_config.py设置SECRET_KEY、启用 LDAP、调整缓存等; - 禁用默认 admin 账号:首次登录后,在 Security → List Users 中修改密码或新建角色账号;
- 如需 HTTPS 或反向代理(如 Nginx),不要在容器内配 SSL,应在前置网关统一处理;
- 大数据查询慢?开启 SQL Lab 缓存、建物化视图、限制查询行数、设置定时刷新策略。











