Superset项目开发环境搭建全指南
superset 项目地址: https://gitcode.com/gh_mirrors/su/superset
作为一款强大的数据可视化与商业智能工具,Superset的开发环境搭建是开发者入门的第一步。本文将全面介绍Superset项目的开发环境配置方法,帮助开发者快速搭建高效的开发环境。
开发环境搭建方案对比
Superset支持多种开发环境搭建方式,主要包括:
- docker compose方案(推荐):容器化方案,简单快捷
- 传统Flask服务器方案:直接在主机运行
- 前端独立开发方案:专注于前端开发
对于大多数开发者,我们强烈推荐使用docker compose方案,它能最大程度减少环境配置问题。
推荐方案:docker compose环境
环境准备
确保已安装:
- Docker
- Docker Compose
快速启动
# 克隆项目后进入项目目录
cd superset
# 启动所有服务
docker compose up --build
此命令会启动以下服务:
- Superset Flask服务器(Python后端)
- Celery工作节点(异步任务处理)
- Node服务(前端资源构建)
- Node WebSocket服务(实时通信)
- PostgreSQL数据库(元数据存储)
- Redis服务(消息队列和缓存)
关键特性
- 代码热加载:本地代码变更会实时反映到容器中
- 示例数据自动加载:首次启动会自动加载示例数据集
- 访问地址:http://localhost:9000
- 默认账号:admin/admin
环境变量配置
通过环境变量可自定义构建行为:
# 不加载示例数据加速启动
SUPERSET_LOAD_EXAMPLES=no docker compose up
# 设置日志级别为debug
SUPERSET_LOG_LEVEL=debug docker compose up
常用环境变量:
SUPERSET_BUILD_TARGET
:构建目标(dev/lean)INCLUDE_FIREFOX
:是否包含Firefox无头浏览器BUILD_TRANSLATIONS
:是否编译翻译文件
数据库管理
# 进入PostgreSQL命令行
docker compose exec db psql -U superset
# 重置数据库(慎用)
docker compose down
docker volume rm superset_db_home
docker compose up
开发工具配置
Python环境
建议使用虚拟环境:
python3 -m venv venv
source venv/bin/activate
pip install -r requirements/development.txt
Git钩子配置
Superset使用pre-commit进行代码提交前检查:
pre-commit install
# 手动运行检查
pre-commit run --all-files
前端开发指南
环境准备
- Node.js 20.x
- npm 10.x
推荐使用nvm管理Node版本:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.0/install.sh | bash
nvm install --lts
nvm use --lts
前端构建
cd superset-frontend
npm ci
# 开发模式(热更新)
npm run dev-server
# 生产构建
npm run build
开发工作流
-
启动后端服务:
superset run -p 8088 --with-threads --reload --debugger --debug
-
启动前端开发服务器:
npm run dev-server
-
访问 http://localhost:9000
常见问题解决
文件监视限制问题
如果遇到文件监视限制错误,可增加系统限制:
# 查看当前限制
cat /proc/sys/fs/inotify/max_user_watches
# 永久修改(需root权限)
echo "fs.inotify.max_user_watches=524288" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
数据库迁移问题
当切换分支导致数据库迁移冲突时,最简单的解决方案是重置数据库。
总结
Superset提供了灵活的开发环境配置方案,docker compose方式能最大程度简化环境搭建过程。对于前端开发者,独立的前端开发服务器提供了高效的热更新体验。通过合理配置开发工具和工作流,可以显著提升Superset项目的开发效率。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考