简体   繁体   中英

Deploy on AWS ElasticBeanstalk - run custom npm script before starting server?

I have been trying to deploy my nuxt universal app onto AWS elastic beanstalk. I've tried using custom npm script in my package.json:

"scripts": {
 "dev": "nuxt",
 "build": "nuxt build",
 "start": "nuxt start",
 "generate": "nuxt generate",
 "precommit": "npm run lint",
 "deploy": "nuxt build && nuxt start"
},

Then under AWS EB config, i added Node command: npm run deploy

However, it is not working.

Basically, i need to tell EB to run "npm run build" before "npm run start"

Anybody can help?

What you've described lies in the npm realm, and can be solved by using a prestart script, like so:

"prestart": "nuxt build"

More details here: https://docs.npmjs.com/misc/scripts

So far this has helped me, it seems to work for default nuxt project (nuxt create) in universal mode. I am using Elastic Beanstalk, CodePipeline and Bitbucket. CodePipeline takes code from Bitbucket once it is pushed and builds in on Elastic Beanstalk.

What helped me is adding to package.json:

"deploy": "npm run build && npm run start"

or

 "deploy": "npm run install && npm run build && npm run start"

and creating Procfile in root directory of project, content/command of Pocfile triggers the deploy script in package.json file

web: npm run deploy

Before, there were "hooks" but now they're almost deprecated https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/custom-platform-hooks.html

Now you can use Buildfile and Procfile as described here https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/platforms-linux-extend.html

Try Adding to your .ebextensions a "source_compile.config" file as follows:

# source_compile.config
container_commands:
  compile:
    command: "./node_modules/.bin/nuxt build"
    env:
      PATH: /opt/elasticbeanstalk/node-install/node-v12.16.3-linux-x64/bin/

Got the idea from the same need to pre compile a typescript nodejs server before deploying to Elastic Beanstalk :) Here a ref:

https://medium.com/@lhviet88/deploy-a-typescript-expressjs-into-elasticbeanstalk-nodejs-server-8381e00e7e52

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM