首页 > 解决方案 > 将带有资产文件夹的 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”文件夹。结构如下:

在此处输入图像描述

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

问候

标签: pythonamazon-web-servicesamazon-elastic-beanstalkplotly-dash

解决方案


我有一个相同的问题,这就是我解决它的方法。默认情况下,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/
  favicon.ico
  logo.png
  style.css
application.py  # by default, AWS Elastic Beanstalk expects this app name
requirements.txt

参考


推荐阅读