简体   繁体   English

npm 在 AWS Elastic Beanstalk 上运行生产失败

[英]npm run production failing on AWS Elastic Beanstalk

I've got the following deployment configuration that continues to fail when running sudo npm run production --silent at step 02_build_frontend.我有以下部署配置,在运行sudo npm run production --silent at step 02_build_frontend 时继续失败。 The step fails every time when using the EB CLI and "eb deploy" however if I SSH into the t3.small instance, and run the command, it compiles just fine.每次使用 EB CLI 和“eb deploy”时,该步骤都会失败,但是如果我将 SSH 放入 t3.small 实例并运行命令,它会编译得很好。 Here is my config and the associated errors.这是我的配置和相关的错误。

01_deploy_application.config 01_deploy_application.config

option_settings:
  - namespace: aws:elasticbeanstalk:application:environment
    option_name: COMPOSER_HOME
    value: /root

  - namespace: aws:elasticbeanstalk:container:php:phpini
    option_name: document_root
    value: /public

  - namespace: aws:elasticbeanstalk:container:php:phpini
    option_name: memory_limit
    value: 256M

container_commands:
  00_copy_env_file:
    command: "mv /tmp/.env /var/app/staging/.env"
  01_install_js_dependencies:
    command: "sudo npm install"
    cwd: "/var/app/staging"
  02_build_frontend:
    command: "sudo npm run production --silent"
    cwd: "/var/app/staging"
  03_migrate_central_database:
    command: "php artisan migrate --force"
    cwd: "/var/app/staging"
    leader_only: true
  04_migrate_tenant_databases:
    command: "php artisan tenants:migrate --force"
    cwd: "/var/app/staging"
    leader_only: true

cfn-init.log cfn-init.log

2020-11-14 09:35:13,102 [INFO] -----------------------Starting build-----------------------
2020-11-14 09:35:13,108 [INFO] Running configSets: Infra-EmbeddedPostBuild
2020-11-14 09:35:13,111 [INFO] Running configSet Infra-EmbeddedPostBuild
2020-11-14 09:35:13,114 [INFO] Running config postbuild_0_first_access_data_network
2020-11-14 09:35:13,130 [INFO] Command 00_copy_env_file succeeded
2020-11-14 09:35:51,434 [INFO] Command 01_install_js_dependencies succeeded
2020-11-14 09:36:49,148 [ERROR] Command 02_build_frontend (sudo npm run production --silent) failed
2020-11-14 09:36:49,149 [ERROR] Error encountered during build of postbuild_0_first_access_data_network: Command 02_build_frontend failed
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/cfnbootstrap/construction.py", line 542, in run_config
    CloudFormationCarpenter(config, self._auth_config).build(worklog)
  File "/usr/lib/python2.7/site-packages/cfnbootstrap/construction.py", line 260, in build
    changes['commands'] = CommandTool().apply(self._config.commands)
  File "/usr/lib/python2.7/site-packages/cfnbootstrap/command_tool.py", line 117, in apply
    raise ToolError(u"Command %s failed" % name)
ToolError: Command 02_build_frontend failed
2020-11-14 09:36:49,156 [ERROR] -----------------------BUILD FAILED!------------------------

cfn-init-cmd.log cfn-init-cmd.log

2020-11-14 09:35:51,446 P30042 [INFO] ============================================================
2020-11-14 09:35:51,446 P30042 [INFO] Command 02_build_frontend
2020-11-14 09:36:49,141 P30042 [INFO] -----------------------Command Output-----------------------
2020-11-14 09:36:49,147 P30042 [INFO]   events.js:292
2020-11-14 09:36:49,147 P30042 [INFO]         throw er; // Unhandled 'error' event
2020-11-14 09:36:49,147 P30042 [INFO]         ^
2020-11-14 09:36:49,147 P30042 [INFO]   
2020-11-14 09:36:49,147 P30042 [INFO]   Error: write EPIPE
2020-11-14 09:36:49,147 P30042 [INFO]       at ChildProcess.target._send (internal/child_process.js:832:20)
2020-11-14 09:36:49,147 P30042 [INFO]       at ChildProcess.target.send (internal/child_process.js:703:19)
2020-11-14 09:36:49,147 P30042 [INFO]       at ChildProcessWorker.send (/var/app/staging/node_modules/laravel-mix/node_modules/jest-worker/build/workers/ChildProcessWorker.js:291:17)
2020-11-14 09:36:49,147 P30042 [INFO]       at WorkerPool.send (/var/app/staging/node_modules/laravel-mix/node_modules/jest-worker/build/WorkerPool.js:32:34)
2020-11-14 09:36:49,147 P30042 [INFO]       at Farm._process (/var/app/staging/node_modules/laravel-mix/node_modules/jest-worker/build/Farm.js:129:10)
2020-11-14 09:36:49,147 P30042 [INFO]       at Farm._enqueue (/var/app/staging/node_modules/laravel-mix/node_modules/jest-worker/build/Farm.js:152:10)
2020-11-14 09:36:49,147 P30042 [INFO]       at Farm._push (/var/app/staging/node_modules/laravel-mix/node_modules/jest-worker/build/Farm.js:159:12)
2020-11-14 09:36:49,147 P30042 [INFO]       at /var/app/staging/node_modules/laravel-mix/node_modules/jest-worker/build/Farm.js:90:14
2020-11-14 09:36:49,148 P30042 [INFO]       at new Promise (<anonymous>)
2020-11-14 09:36:49,148 P30042 [INFO]       at Farm.doWork (/var/app/staging/node_modules/laravel-mix/node_modules/jest-worker/build/Farm.js:56:12)
2020-11-14 09:36:49,148 P30042 [INFO]       at JestWorker._callFunctionWithArgs (/var/app/staging/node_modules/laravel-mix/node_modules/jest-worker/build/index.js:143:23)
2020-11-14 09:36:49,148 P30042 [INFO]       at TaskRunner.runTask (/var/app/staging/node_modules/laravel-mix/node_modules/terser-webpack-plugin/dist/TaskRunner.js:41:26)
2020-11-14 09:36:49,148 P30042 [INFO]       at enqueue (/var/app/staging/node_modules/laravel-mix/node_modules/terser-webpack-plugin/dist/TaskRunner.js:89:35)
2020-11-14 09:36:49,148 P30042 [INFO]       at /var/app/staging/node_modules/laravel-mix/node_modules/terser-webpack-plugin/dist/TaskRunner.js:113:86
2020-11-14 09:36:49,148 P30042 [INFO]   Emitted 'error' event on ChildProcess instance at:
2020-11-14 09:36:49,148 P30042 [INFO]       at internal/child_process.js:836:39
2020-11-14 09:36:49,148 P30042 [INFO]       at processTicksAndRejections (internal/process/task_queues.js:75:11) {
2020-11-14 09:36:49,148 P30042 [INFO]     errno: -32,
2020-11-14 09:36:49,148 P30042 [INFO]     code: 'EPIPE',
2020-11-14 09:36:49,148 P30042 [INFO]     syscall: 'write'
2020-11-14 09:36:49,148 P30042 [INFO]   }
2020-11-14 09:36:49,148 P30042 [INFO] ------------------------------------------------------------
2020-11-14 09:36:49,148 P30042 [ERROR] Exited with error code 1

/root/.npm/_logs/2020-11-14T06_49_39_693Z-debug.log /root/.npm/_logs/2020-11-14T06_49_39_693Z-debug.log

0 info it worked if it ends with ok
1 verbose cli [ '/usr/bin/node', '/bin/npm', 'run', 'production' ]
2 info using npm@6.14.8
3 info using node@v14.15.0
4 verbose run-script [ 'preproduction', 'production', 'postproduction' ]
5 info lifecycle @~preproduction: @
6 info lifecycle @~production: @
7 verbose lifecycle @~production: unsafe-perm in lifecycle true
8 verbose lifecycle @~production: PATH: /usr/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/var/app/staging/node_modules/.bin:/sbin:/bin:/usr/sbin:/usr/bin
9 verbose lifecycle @~production: CWD: /var/app/staging
10 silly lifecycle @~production: Args: [
10 silly lifecycle   '-c',
10 silly lifecycle   'node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel$
10 silly lifecycle ]
11 silly lifecycle @~production: Returned: code: 1  signal: null
12 info lifecycle @~production: Failed to exec production script
13 verbose stack Error: @ production: `node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=nod$
13 verbose stack Exit status 1
13 verbose stack     at EventEmitter.<anonymous> (/usr/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:332:16)
13 verbose stack     at EventEmitter.emit (events.js:315:20)
13 verbose stack     at ChildProcess.<anonymous> (/usr/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
13 verbose stack     at ChildProcess.emit (events.js:315:20)
13 verbose stack     at maybeClose (internal/child_process.js:1048:16)
13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:288:5)
14 verbose pkgid @
15 verbose cwd /var/app/staging
16 verbose Linux 4.14.200-155.322.amzn2.x86_64
17 verbose argv "/usr/bin/node" "/bin/npm" "run" "production"
18 verbose node v14.15.0
19 verbose npm  v6.14.8
20 error code ELIFECYCLE
21 error errno 1
22 error @ production: `node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/larav$
22 error Exit status 1
23 error Failed at the @ production script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]

Turns out NPM was running out of physical memory from the size of the dependencies.从依赖项的大小来看,NPM 用完了物理 memory。 A t3.small instance has 2GB of memory. This was fixed by creating swap memory with the following deployment config: t3.small 实例有 2GB 的 memory。这是通过使用以下部署配置创建交换 memory 来解决的:

commands:
  00_setup_swap_memory:
    test: test ! -e /var/swapfile
    command: |
      /bin/dd if=/dev/zero of=/var/swapfile bs=1M count=4096
      /bin/chmod 600 /var/swapfile
      /sbin/mkswap /var/swapfile
      /sbin/swapon /var/swapfile

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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