如何在 Superset Docker 容器中安装 MySQL 驱动
Apache Superset 是一款功能强大的开源数据挖掘与可视化平台,支持多种数据源连接、自定义仪表盘和细粒度权限控制,广泛应用于数据运维与分析场景。由于 Superset 官方 Docker 镜像未默认集成 MySQL 驱动,在实际运维中,需手动安装驱动才能实现与 MySQL 数据库的正常连接。本文将详细介绍两种 Docker 部署方式(Docker run 和 Docker Compose)下,MySQL 驱动的完整安装流程,同时兼顾 Apache Doris 驱动安装(适配多数据源需求),并提供数据库配置方法和常见注意事项。
一、前置说明
可能是因为MySQL是使用的GPL协议,所以Superset官方镜像中未包含MySQL驱动,需要手动安装。
二、Docker run 方式安装
Docker run 方式步骤清晰,适合快速部署单个 Superset 容器,无需复杂配置,具体操作如下:
2.1 拉取并启动 Superset 容器
执行以下命令,拉取官方镜像并启动容器,映射端口、配置时区和安全密钥,确保容器后台稳定运行:
# 拉取并运行Superset的Docker镜像
docker run -d \
--name superset \
--restart always \
-p 8088:8088 \
-e TZ=Asia/Shanghai \
-e SUPERSET_SECRET_KEY=*Abcd123456 \
--user root \
apache/superset:latest
2.2 进入容器并安装依赖与驱动
这一步很关键,因为Superset是运行在 Python 虚拟环境中的,所以,需要在Python 虚拟环境安装依赖与驱动,否则,驱动的安装将会不成功。
容器启动后,进入容器内部,替换 apt 源为阿里云镜像(提升下载速度),安装编译依赖,再安装 MySQL 和 Doris 驱动:
# 进入Superset容器
docker exec -it superset bash
# 替换apt源为阿里云镜像源
sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list.d/debian.sources
sed -i 's/security.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list.d/debian.sources
apt-get update
# 安装编译pydoris和pymysql所需的依赖
apt-get install -y gcc python3-dev default-libmysqlclient-dev pkg-config
# 给官方阉割的虚拟环境 安装 pip
/app/.venv/bin/python -m ensurepip
# 升级 pip
/app/.venv/bin/python -m pip install --upgrade pip -i https://mirrors.aliyun.com/pypi/simple/
# 安装 pymysql 和 pydoris 到 Superset 真正使用的环境里
/app/.venv/bin/python -m pip install pymysql pydoris -i https://mirrors.aliyun.com/pypi/simple/
# 验证安装
/app/.venv/bin/pip list | grep pydoris
验证成功后,会显示 pydoris 1.1.0(版本可能略有差异,不影响使用),说明驱动已正确安装到 Superset 运行环境中。
2.3 初始化 Superset 并重启容器
驱动安装完成后,需执行数据库迁移、创建管理员账户、初始化角色等操作,确保 Superset 正常使用,最后重启容器使配置生效:
# 将本地数据库迁移到最新版本
docker exec -it superset superset db upgrade
# 设置本地superset系统管理员账户
docker exec -it superset superset fab create-admin \
--username admin \
--password admin \
--firstname Superset \
--lastname Admin \
--email admin@superset.com
# 初始化设置角色
docker exec -it superset superset init
# 重启Superset容器
docker restart superset
2.4 访问验证
容器重启后,通过以下地址访问 Superset 控制台:
访问地址:http://localhost:8088/login/
登录账号:admin/admin(默认管理员账户,生产环境建议及时修改密码)
三、Docker Compose 方式安装(适合生产环境部署)
Docker Compose 可实现容器的批量管理和配置持久化,适合生产环境部署,无需手动执行多步命令,一键完成部署和驱动安装,具体配置如下:
networks:
app-tier:
driver: bridge
services:
superset:
image: apache/superset:latest
container_name: superset
hostname: superset
restart: always
user: root
ports:
- "8088:8088" # 端口映射,宿主机8088端口对应容器8088端口
networks:
- app-tier
environment:
TZ: Asia/Shanghai # 配置时区为上海,避免时间显示异常
SUPERSET_SECRET_KEY: "*Abcd123456" # 安全密钥,生产环境建议修改为复杂密钥
SUPERSET_ENV: production # 生产环境模式
volumes:
- ./superset_data:/app/data # 数据持久化,避免容器删除后数据丢失
command: >
bash -c "
apt-get update &&
apt-get install -y gcc python3-dev default-libmysqlclient-dev pkg-config &&
/app/.venv/bin/python -m ensurepip &&
/app/.venv/bin/python -m pip install --upgrade pip -i https://mirrors.aliyun.com/pypi/simple/ &&
/app/.venv/bin/python -m pip install pymysql pydoris -i https://mirrors.aliyun.com/pypi/simple/ &&
superset db upgrade &&
superset fab create-admin
--username admin
--password admin
--firstname Admin
--lastname Admin
--email admin@admin.com || true &&
superset init &&
/usr/bin/run-server.sh
"
3.1 启动与验证
- 将上述配置保存为
docker-compose.yml文件,放在任意目录下; - 进入配置文件所在目录,执行命令
docker-compose up -d,启动容器并后台运行; - 容器启动后,可通过
docker logs -f superset查看启动日志,确认无报错后,访问 http://localhost:8088,使用admin/admin登录即可。
说明:|| true 用于避免重复创建管理员账户时报错,确保脚本可重复执行;数据卷 ./superset_data 用于持久化 Superset 数据,防止容器重启或删除后数据丢失。
四、数据库配置(MySQL + Doris)
驱动安装完成并登录 Superset 后,需配置数据库连接,才能实现数据可视化分析。以下分别介绍 MySQL 和 Apache Doris 的配置方法,操作步骤一致,仅连接字符串不同:
4.1 配置步骤
- 登录 Superset 控制台,点击右上角
Settings→Database Connectors; - 点击「添加 Database」,在弹出的「Connect a database」弹窗中,选择对应数据库类型(MySQL 或 Apache Doris);
- 在连接信息中填写 SQLAlchemy URI 连接字符串,点击「Test Connection」验证连接无误后,点击「Connect」完成配置。
4.2 连接字符串格式
# 使用Doris驱动(连接Doris数据库,适配内表)
pydoris://root:@host.docker.internal:9030/internal.gw_uba
# 使用MySQL驱动(连接MySQL数据库)
mysql+pymysql://root:@host.docker.internal:9030/gw_uba
参数说明
host.docker.internal:Docker 容器访问宿主机的默认地址,若数据库部署在其他服务器,替换为对应 IP 地址;9030:默认端口(Doris 查询端口、MySQL 端口,若端口已修改,需对应调整);root:数据库用户名,根据实际数据库配置修改;internal:Doris 的 Catalog 名称,内表使用 internal,查询外表或数据湖时需替换为对应 Catalog 名称;gw_uba:数据库名称,替换为实际需要连接的数据库名。
五、注意事项与使用技巧
- 权限问题:所有操作需以 root 用户执行,否则会出现 apt 安装失败、虚拟环境权限不足等问题;
- 镜像源问题:若阿里云镜像源无法访问,可替换为其他国内镜像源(如清华源),确保依赖和包能正常下载;
- 驱动安装验证:若安装后无法识别驱动,可进入容器虚拟环境(
source /app/.venv/bin/activate),执行python -c "import pymysql; print('安装成功')” 验证驱动是否被正确识别; - 生产环境配置:生产环境中,需修改
SUPERSET_SECRET_KEY为复杂密钥,修改管理员默认密码,避免安全风险;同时建议使用 VPC 私有连接,避免公网访问数据库带来的安全隐患; - 版本兼容:推荐使用 Apache Superset 3.1 及以上版本、Apache Doris 2.0.4 及以上版本,确保 Doris 连接功能正常;
- 常见报错:若出现「无法加载数据库驱动程序」报错,需重新安装驱动,确保驱动安装到 Superset 虚拟环境中,而非系统环境。