python - 将带有资产文件夹的 Dash 部署到 AWS Elastic Beanstalk
问题描述
我想知道是否有人可以建议我如何将 Dash 应用程序上传到弹性豆茎。
我从各种人的博客中了解到,以确保我需要:
application = app.server
if __name__ == '__main__':
application.run_server(debug=True,port=8080)
然后我需要使用 pip freeze > requirements.txt 冻结需求并压缩所有文件并上传到 AWS Elastic Beanstalk。在所有的解释中,他们都有非常简单的应用程序,只有一个文件,并且没有包含 css 文件的“资产”文件夹或没有连接的数据库
我想知道当您有一个包含各种图像和样式的 css 文件夹等的资产文件夹时,该过程是什么。我还连接了一个已经使用带有 sqlalchemy 的 URI 设置的 RDS 数据库。该应用程序在我的本地计算机上运行良好。我尝试压缩每个单独的文件,但没有奏效,我变得非常绝望。我了解 Dash 会查找“assets”文件夹。结构如下:
非常感谢您提前提供的帮助。如果有人能突出我需要做的确切步骤,我将非常感激。我对此很陌生。
问候
解决方案
我有一个相同的问题,这就是我解决它的方法。默认情况下,Dash 会自动提供文件夹中包含的所有./assets
文件。相反,AWS Elastic Beanstalk 上的网络服务器希望将您的 CSS 和其他文件放在该./static
文件夹中。
您可以为 AWS Elastic Beanstalk 创建一个配置文件来为您的静态文件设置配置选项。我采取了另一种方法:
将资源的文件夹名称从assets更改为static。
声明 Dash 应用程序时更新 Python 代码:
app = dash.Dash(name=__name__, title="My App", assets_folder ="static", assets_url_path="static")
像往常一样部署您的应用程序 - AWS Elastic Beanstalk 将从静态文件夹获取资源并提供服务。
我的最终应用程序具有以下结构:
static/
favicon.ico
logo.png
style.css
application.py # by default, AWS Elastic Beanstalk expects this app name
requirements.txt
参考
推荐阅读
- python - 如何将一天中的一小时和一小时的分钟转换为日期时间?
- google-cloud-platform - 将资产流式传输到 bigquery 的 gcloud beta 命令出错
- html - 打开对话框时出现滚动条
- reactjs - 测试中对 {} 的更新未包含在 act(...) 中
- scala - 使用 Intellij 的 Heroku 的 Scala/Play 示例应用程序中的编译错误
- selenium - 用于设置测试方法、Assembly Initialize 和拆卸的 Selenium Mobile 序列
- ssh - How to solve the error "No Protocol specified" for ClusterSSH
- sql - SQL获取每个类别的前10条记录:避免子查询
- vue.js - 当导航栏宽度未知时,如何在移动导航栏和桌面导航栏之间进行选择?
- reactjs - 使用 redux 响应状态管理与提升状态