如何在Elastic Beanstalk上使用Django服务React应用?

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

我曾经在Heroku上安装我的应用程序,并且在那里工作,原因是我有2个buildpack。一种用于NodeJS,另一种用于Python。 Heroku运行了npm run build,然后Django从build文件夹提供了文件。

每当我的GitHub存储库上有新的推送时,我就在AWS上使用Code Pipeline部署我的应用程序的新版本。

由于无法弄清楚如何在EB的python环境中运行npm run build,所以我有一种解决方法。我运行了npm run build并将其推送到我的存储库(从.gitignore中删除了build文件夹),然后Django在EB上提供了文件。

但是,这不是最佳解决方案,我想知道是否有人知道如何使用Heroku的NodeJS buildpack为EB上的python应用程序运行npm run build

node.js django reactjs amazon-elastic-beanstalk
1个回答
0
投票

我不完全了解Python,但我想您可以适应您的情况。

用于Node.js平台的Elastic Beanstalk在默认情况下使用app.js,然后使用server.js,然后使用npm start(按此顺序)来启动您的应用程序。

您可以使用配置文件更改此行为。下面是完成Node.js的步骤:

  1. 创建具有以下内容的以下文件.ebextensions/<your-config-file-name>.config
    option_settings:
      aws:elasticbeanstalk:container:nodejs:
        NodeCommand: "npm run eb:prod"
    
  2. 编辑您的package.json以创建eb:prod命令。例如:
    "scripts": {
      "start": "razzle start",
      "build": "razzle build",
      "test": "razzle test --env=jsdom",
      "start:prod": "NODE_ENV=production node build/server.js",
      "eb:prod": "npm run build && npm run start:prod"
    }
    
  3. 您在构建期间可能会遇到权限被拒绝的错误。要解决此问题,您可以创建具有以下内容的.npmrc文件:
    # Force npm to run node-gyp also as root
    unsafe-perm=true
    

如果您需要更多详细信息,我为此写了一篇博客文章:I deployed a server-side React app with AWS Elastic Beanstalk. Here’s what I learned.

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