Docker部署的Superset中如何编写自定义Javascript代码?
在Docker部署的Superset中添加自定义JavaScript的正确方式
方法一:通过官方配置项挂载自定义JS文件(推荐)
这是Superset官方支持的持久化自定义方式,不会因为容器重启丢失配置:
- 在宿主机创建自定义JS文件,比如命名为
superset_custom.js,写入测试代码:alert('测试弹窗'); - 修改Superset的配置文件
superset_config.py,添加以下配置:CUSTOM_JAVASCRIPT = '/static/superset_custom.js' - 在Docker启动命令或
docker-compose.yml中,将宿主机的JS文件挂载到容器内的静态资源目录:
如果用docker run:
如果用docker run -v ./superset_custom.js:/app/superset/static/superset_custom.js ... 其他启动参数docker-compose,在services.superset的volumes中添加:- ./superset_custom.js:/app/superset/static/superset_custom.js - 重启Superset容器,刷新页面即可触发弹窗。
方法二:修改模板文件(不推荐,需持久化模板)
如果你一定要通过修改模板实现,注意以下几点:
- 容器内的模板路径是
/app/superset/templates/superset/basic.html,直接在容器内修改会在重启后丢失,建议先将模板复制到宿主机:docker cp <你的Superset容器ID>:/app/superset/templates/superset/basic.html ./ - 在本地的
basic.html中,将脚本添加到</body>标签之前(而非之后,因为</body>之后的内容不属于DOM解析范围):<script>alert('测试弹窗');</script> </body> - 将修改后的模板挂载回容器:
在docker run或docker-compose.yml的volumes中添加:- ./basic.html:/app/superset/templates/superset/basic.html - 重启容器后刷新页面即可生效。
内容的提问来源于stack exchange,提问作者AB21
相关产品推荐
相关产品推荐

