python - 将带有 Assets 文件夹的 Dash 部署到 AWS Elastic Beanstalk

标签 python amazon-web-services amazon-elastic-beanstalk plotly-dash

我想知道是否有人可以就如何将 Dash 应用程序上传到 Elastic Beanstalk 向我提供建议。

我从各种人的博客中了解到,以确保我需要:

application = app.server

if __name__ == '__main__':
application.run_server(debug=True,port=8080)

然后我需要使用 pip freeze > requirements.txt 卡住需求并压缩所有文件并上传到 AWS Elastic Beanstalk。在所有的解释中,他们有非常简单的应用程序,只有一个文件,没有包含 css 文件的“ Assets ”文件夹或没有连接的数据库

我想知道当您有一个包含各种图像和样式的 css 文件夹等的 Assets 文件夹时,该过程是什么。我还连接了一个已经使用 URI 和 sqlalchemy 设置的 RDS 数据库。该应用程序在我的本地计算机上运行完美。我尝试压缩每个单独的文件,但没有成功,我感到非常绝望。我知道 Dash 寻找“ Assets ”文件夹。结构如下:

enter image description here

非常感谢您的提前帮助。如果有人能突出显示我需要执行的确切步骤,我将不胜感激。我对此很陌生。

问候

最佳答案

我遇到了同样的问题,下面是我的解决方法。默认情况下,Dash 会自动提供 ./assets 文件夹中包含的所有文件。相反,AWS Elastic Beanstalk 上的网络服务器希望您的 CSS 和其他文件放置在 ./static 文件夹中。

您可以为 AWS Elastic Beanstalk 创建一个配置文件来为您的静态文件设置配置选项。我采用了另一种方法:

  1. 将资源的文件夹名称从 assets 更改为 static

  2. 在声明 Dash 应用程序时更新您的 Python 代码:

     app = dash.Dash(name=__name__,
                     title="My App",
                     assets_folder ="static",
                     assets_url_path="static")
    
  3. 像往常一样部署您的应用程序 - AWS Elastic Beanstalk 将从 static 文件夹获取资源并为它们提供服务。

我的最终应用具有以下结构:

static/
  favicon.ico
  logo.png
  style.css
application.py  # by default, AWS Elastic Beanstalk expects this app name
requirements.txt

引用资料

关于python - 将带有 Assets 文件夹的 Dash 部署到 AWS Elastic Beanstalk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64696998/

相关文章:

python - 将数据从 oracle 提取到 python pandas dataframe 非常慢

codeigniter - 如何在运行 docker 实例的亚马逊弹性 beanstalk 中更改 nginx 配置

java - Java计划任务是否在AWS Auto Scaling组的所有EC2实例上运行?

python - 如何在 sqlalchemy 中将列重置为其默认值?

python - 将平面列表中的 N 个元素迭代地分配给矩阵的每个成员

Python/django 日志记录权限错误

python - Amazon SNS Python Boto - 如何创建要发送的消息

amazon-web-services - 使用S3上传但不允许公共(public)访问

ruby-on-rails - 在 AWS 上水平扩展的重型 RoR 应用程序需要高效的 SSL

python - AWS Elastic Beanstalk mod_wsgi "compiled for"版本与 "runtime"版本不同