Superset非开发Docker环境添加依赖包报错问题求助
解决Superset非开发环境找不到hvac模块的问题
核心原因
开发版docker-compose是把本地代码直接挂载到容器里,你本地安装的依赖、新增的文件会直接被容器复用;但非开发版是基于镜像运行,镜像里默认没有你的自定义依赖和文件,必须通过自定义构建镜像把这些内容打包进去才能生效。
具体操作步骤
1. 配置自定义依赖与文件
- 在项目根目录创建
requirements-local.txt,写入需要的依赖:hvac # 其他你用到的自定义依赖也可以加在这里 - 编写自定义Dockerfile(放在项目根目录):
# 替换成你使用的Superset非开发镜像版本,比如2.1.0 FROM apache/superset:2.1.0 USER root # 复制自定义依赖文件并安装 COPY requirements-local.txt /app/requirements-local.txt RUN pip install --no-cache-dir -r /app/requirements-local.txt # 把你新增的db_access.py复制到容器对应目录 COPY superset/superset/db_access.py /app/superset/superset/db_access.py USER superset
2. 修改非开发版docker-compose配置
打开docker-compose-non-dev.yml,找到superset服务的配置,把原来的image替换成build指令,让它使用你写的Dockerfile构建镜像:
services: superset: # 注释掉原有的image行,替换成以下内容 # image: apache/superset:2.1.0 build: . # 其余原有配置(ports、environment等)保持不变
3. 重新构建并启动服务
执行以下命令更新镜像并启动:
# 构建自定义镜像 docker-compose -f docker-compose-non-dev.yml build superset # 启动非开发环境服务 docker-compose -f docker-compose-non-dev.yml up -d
额外注意事项
- 后续如果修改了
db_access.py或新增了依赖,需要重新执行build命令更新镜像,否则容器内还是旧内容。 - 确保Dockerfile里的Superset版本和你原本使用的非开发镜像版本一致,避免兼容性问题。
内容的提问来源于stack exchange,提问作者Ananthan
相关产品推荐
相关产品推荐

