离线环境下定制Superset Docker镜像添加驱动的正确方法咨询
离线环境下通过Helm部署Superset时,如何正确定制Docker镜像添加数据库驱动?
我通过Helm Chart在K8s环境部署Superset,官方文档要求在bootstrapScript中添加pip install命令安装驱动,但我处于离线环境,无法在线安装。
尝试过定制镜像:
FROM apache/superset:master RUN pip install clickhouse-connect==0.5.23
但定制后驱动未生效,求正确的镜像定制方法。
正确的镜像定制步骤
1. 处理镜像权限问题
Superset官方镜像默认使用superset普通用户运行,直接执行RUN pip install会因权限限制,将驱动安装到非全局路径,导致Superset无法识别。需切换到root用户完成安装,再切回原用户:
FROM apache/superset:master # 切换root用户安装驱动 USER root RUN pip install clickhouse-connect==0.5.23 # 切回superset用户,保持镜像原有运行权限 USER superset
2. 离线环境的依赖包安装方式
完全离线场景下,先在联网机器下载clickhouse-connect及其所有依赖包:
# 联网机器执行,将依赖包下载到本地deps目录 pip download clickhouse-connect==0.5.23 -d ./deps
将deps目录与Dockerfile放在同一目录,修改Dockerfile从本地安装:
FROM apache/superset:master USER root # 复制本地依赖包到镜像内 COPY ./deps /deps # 从本地安装,禁用在线索引查找 RUN pip install --no-index --find-links=/deps clickhouse-connect==0.5.23 USER superset
3. 验证驱动安装结果
构建镜像后,运行临时容器确认驱动已安装:
docker run --rm -it 你的自定义镜像名 bash # 容器内执行验证命令 pip list | grep clickhouse-connect
确认驱动存在后,推送到私有镜像仓库供Helm调用。
Helm部署的配套配置
定制好镜像后,在Helm的values.yaml中替换默认镜像配置:
image: repository: 你的私有仓库地址/自定义superset镜像名 tag: 你的镜像标签 pullPolicy: IfNotPresent
同时删除bootstrapScript中的在线安装命令,避免冲突。
内容的提问来源于stack exchange,提问作者Atheer Abdullatif
相关产品推荐
相关产品推荐

