Kubernetes 上的 Plotly Dash 应用程序——不加载 Javascript

问题描述 投票:0回答:2

我正在尝试使用 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

并停留在“正在加载...”屏幕。

任何帮助/见解将不胜感激! 谢谢:)))

python flask kubernetes plotly-dash
2个回答
0
投票

嗨嗨, 我也经历过这个问题。经过调试,是因为浏览器无法获取这些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)


0
投票

我有同样的问题,在我的情况下,解决方案是像这样设置

requests_pathname_prefix

app = Dash(requests_pathname_prefix="/your_prefix/")

设置环境变量或同时设置

requests_pathname_prefix
routes_pathname_prefix
会导致站点不可用。

© www.soinside.com 2019 - 2024. All rights reserved.