我正在尝试使用 Flask 在我的服务器上使用 Kubernates 运行 Dash 应用程序
import dash
import dash_html_components as html
from flask import Flask
server = Flask(__name__)
app = dash.Dash(name='my-server', server=server)
app.layout = html.Div([
....
])
@server.route("/")
def dash_app():
return app.index()
if __name__ == '__main__':
server.run(host='0.0.0.0')
显然有更多的东西(比如更多的 html 和回调函数)。 当创建一个 docker 镜像并在本地运行它时,它在
127.0.0.1:5000
上运行得很好,但是当我将它推送到我的服务器并使用 kubernates 运行它时,它给了我以下错误。
Refused to execute script from '<URL>' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.
还有
Uncaught ReferenceError: DashRenderer is not defined
并停留在“正在加载...”屏幕。
任何帮助/见解将不胜感激! 谢谢:)))
嗨嗨, 我也经历过这个问题。经过调试,是因为浏览器无法获取这些javascript文件。因此,需要让它知道在哪里可以找到它们。
假设您想部署到您的 k8s
<domain-name>/mycooldashboards/dashboard-1
。您可以将环境变量添加到 dash 部署中,如下所示
name: DASH_URL_BASE_PATHNAME
value: /mycooldashboards/dashboard-1/ # needs to end by slash
此外,你的入口需要支持用户获取/发布。 ingress 的路径是这样的:
/mycooldashboards/dashboard-1(/|$)(.*)
那么它应该适合你。
这里是信息来源:https://dash.plotly.com/reference (只需查找 DASH_URL_BASE_PATHNAME)
我有同样的问题,在我的情况下,解决方案是像这样设置
requests_pathname_prefix
:
app = Dash(requests_pathname_prefix="/your_prefix/")
设置环境变量或同时设置
requests_pathname_prefix
和routes_pathname_prefix
会导致站点不可用。