如何为Elastic Beanstalk自定义NodeJS部署?

时间:2018-01-01 23:55:13

标签: node.js amazon-web-services amazon-ec2 elastic-beanstalk

我有一个用NodeJS编写的Web服务器和前端的Angular。

结构就像这样

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

当我使用eb deploy部署到Elastic Beanstalk时没有任何反应,我已经意识到这一定是因为Elastic Beanstalk的默认操作是调用npm installnpm start但是在我的case,在root上调用时不会执行任何操作。

所以我的问题是,我如何告诉Elastic Beanstalk:部署后cd到客户端,然后将npm installnpm run buildcd调用到服务器并致电npm installnpm start

我在EB文档中找不到任何解释如何执行此操作的内容。

1 个答案:

答案 0 :(得分:3)

在根文件夹中创建一个名为.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