node.js - 如何在 Elastic Beanstalk 上使用 Django 提供 React 应用程序?
问题描述
我曾经在 Heroku 上安装我的应用程序,它的工作方式是我有 2 个构建包。一个用于 NodeJS,一个用于 Python。Heroku 运行npm run build
,然后 Django 提供文件build
夹中的文件。
每次在我的 GitHub 存储库上有新推送时,我都会使用 AWS 上的 Code Pipeline 来部署我的应用程序的新版本。
由于我不知道如何npm run build
在 EB 中的 python 环境中运行,所以我有一个解决方法。我运行npm run build
并将其推送到我的存储库(build
从 .gitignore 中删除了文件夹),然后 Django 在 EB 上提供文件。
然而,这不是最好的解决方案,我想知道是否有人知道如何运行npm run build
Heroku 可以使用他们的 NodeJS buildpack 为 EB 上的 python 应用程序执行此操作的方式。
解决方案
所以我想出了一种对我有用的解决方案。
因为我想像 Heroku 使用 NodeJS buildpack 那样在服务器上创建我的应用程序的构建版本,所以我必须创建一个安装节点的命令,如下所示:
container_commands:
01_install_node:
command: "curl -sL https://rpm.nodesource.com/setup_12.x | sudo bash - && sudo yum install nodejs"
ignoreErrors: false
然后为了在 Python 环境 EB 上创建 react 应用程序的构建版本,我添加了以下命令:
container_commands:
02_react:
command: "npm install && npm run build"
ignoreErrors: false
所以当然,在构建版本创建之后,你应该收集静态文件,所以这是我的工作配置文件最后的样子:
option_settings:
aws:elasticbeanstalk:container:python:
WSGIPath: <project_name>/wsgi.py
aws:elasticbeanstalk:application:environment:
DJANGO_SETTINGS_MODULE: <project_name>.settings
aws:elasticbeanstalk:container:python:staticfiles:
/static/: staticfiles/
container_commands:
01_install_node:
command: "curl -sL https://rpm.nodesource.com/setup_12.x | sudo bash - && sudo yum install nodejs"
ignoreErrors: false
02_react:
command: "npm install && npm run build"
ignoreErrors: false
03_collectstatic:
command: "django-admin.py collectstatic --noinput"
希望这对遇到相同问题的人有所帮助
推荐阅读
- javascript - 收到二维码
. 如何使用此代码连接到 whatsapp 网络?whatsapp-web.js - keyboard - 如果我使用“--vh”技巧设置 viewheight,则在移动浏览器中为虚拟键盘设置 height 为 innerheight 不起作用
- react-native - 如何使用 @testing-library/react-native 和 jest 测试 react-native-qrcode-scanner
- go - 升级后goroutines数量突然增加
- java - 如何在spring boot批处理中写入与输入文件相同的输出文件
- python - 使用 pyplot 手动绘制决策树
- python-3.x - 我正在尝试使用 Python 创建一个简单的文本扩展器
- reactjs - 当我点击 X 按钮时,React 和 Styled 组件中没有播放动画
- c++ - QT + Cmake + GTest = 测试最终是致命的
- html - 如何在 iframe 上的卫星中添加谷歌地图