我曾经在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
。
我不完全了解Python,但我想您可以适应您的情况。
用于Node.js平台的Elastic Beanstalk在默认情况下使用app.js
,然后使用server.js
,然后使用npm start
(按此顺序)来启动您的应用程序。
您可以使用配置文件更改此行为。下面是完成Node.js的步骤:
.ebextensions/<your-config-file-name>.config
:option_settings:
aws:elasticbeanstalk:container:nodejs:
NodeCommand: "npm run eb:prod"
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"
}
.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.