如何将 NodeJS 部署自定义到 Elastic Beanstalk?

Posted

技术标签:

【中文标题】如何将 NodeJS 部署自定义到 Elastic Beanstalk?【英文标题】:How do you customize a NodeJS deployment to Elastic Beanstalk? 【发布时间】:2018-06-11 18:16:41 【问题描述】:

我有一个用 NodeJS 为 web 服务器和前端的 Angular 编写的 web 应用程序。

结构是这样的

musicapp
   |-- server
   |     |--- src/
   |     |--- node_modules/
   |     |--- package.json
   |--- client
         |--- src/
         |--- node_modules/
         |--- package.json

当我使用 eb deploy 部署到 Elastic Beanstalk 时,什么都没有发生,我意识到这一定是因为 Elastic Beanstalk 的默认操作是调用 npm installnpm start 但在我的情况下,这并没有在 root 上调用时执行任何操作。

所以我的问题是,我如何告诉 Elastic Beanstalk:在部署时,cd 到客户端并调用 npm installnpm run build 然后 cd 到服务器并调用 npm install、@987654330 @ ?

我在 EB 文档中找不到任何解释如何做到这一点的内容。

【问题讨论】:

【参考方案1】:

在您的根文件夹中创建一个名为 .ebextensions 的目录,并在该文件夹中创建一个名为 01_npm.config 的文件(例如)。

在该 yaml 文件中,您可以通过以下方式指定命令:

container_commands:
  01_client:
    command: "cd ./server && npm install && npm run build"
    leader_only: true
  02_server:
    command: "cd ./client && npm install && npm run build"
    leader_only: true

当您运行 eb deploy 时,Elastic Beanstalk 将自动执行这些命令。

有关详细信息,请参阅: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html

【讨论】:

这很有帮助,谢谢,虽然我认为这些是 YAML 文件而不是 JSON。

以上是关于如何将 NodeJS 部署自定义到 Elastic Beanstalk?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 node.js 应用程序部署到 AWS Elastic Beanstalk

使用自定义扩展将 Ruby 应用程序部署到 Elastic Beanstalk,无法加载编译文件

将 NodeJS 部署到 Elastic Beanstalk 时出现 NPM 错误

如何在 Elastic Beanstalk 上部署自定义 docker 映像?

Elastic Beanstalk:将分支部署到环境

使用 ZIP 将 nodejs 应用程序部署到 Elastic BeanStalk => 找不到本地包