2015-11-05 83 views
3

我想用eb deploy命令在Amazon Elastic Beanstalk中部署我的PHP應用程序。但我的應用程序使用gulp來連接並縮小scss和js。如何使用.ebextensions在Amazon Elastic Beanstalk中運行`npm install`

所以我的文件.ebextensios/03npm.config

commands: 
    01-install-node: 
    command: "yum install nodejs npm --enablerepo=epel -y" 

container_commands: 
    01-install-dependencies: 
    command: "npm install" 
    02-build: 
    command: "npm run build" 

在嘗試了這些命令,但是最後我收到此錯誤

[Instance: i-c7800103] Command failed on instance. Return code: 1 Output: (TRUNCATED)...ttps://registry.npmjs.org/acorn npm http 304 https://registry.npmjs.org/amdefine npm http 304 https://registry.npmjs.org/wrappy npm ERR! npm ERR! Additional logging details can be found in: npm ERR! /var/app/ondeck/npm-debug.log npm ERR! not ok code 0. container_command 01-install-dependencies in .ebextensions/03npm.config failed. For more detail, check /var/log/eb-activity.log using console or EB CLI. 

我不知道,但似乎npm install從收到一個錯誤一個可以忽略的軟件包,但它正在調度EB錯誤並停止整個過程。

我用這臺機器上運行:64bit Amazon Linux 2015.09 v2.0.4 running PHP 5.6

有誰知道我們如何解決這一問題?

+0

我遇到同樣的問題,W上。 '.ebextensions'中幾乎相同的.config文件。你有沒有找到解決方案,如果你願意分享?謝謝。 – Thomas

+0

我在解決方案中發佈我的解決方案以更好地解釋它 – Harrison

+0

昨天我遇到了同樣的問題,但不喜歡任何答案,在日誌中找到原因。具體而言,您需要查看'eb-activity.log'和'eb-commandprocessor.log'以獲取有關此錯誤的更多信息。我發現我的是我的npm安裝本身。所以它本身並不是一個'eb'問題,我解決了那個簡單的npm錯誤並在之後繼續。希望這個信息可以幫助那裏的人=) –

回答

-1
packages: 
    yum: 
    git: [] 

files: 
    "/opt/elasticbeanstalk/hooks/appdeploy/pre/03_npm_install.sh": 
    mode: "000755" 
    owner: root 
    group: root 
    content: | 
     #!/usr/bin/env bash 
     EB_APP_STAGING_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k app_staging_dir) 
     cd $EB_APP_STAGING_DIR 

     npm install bower 
     npm install 
     ./node_modules/bower/bin/bower install --allow-root --config.interactive=false 
     ./node_modules/grunt-cli/bin/grunt dust 
0

到現在爲止,我有這個醜陋的解決方案,但它的工作原理。我在package.json中創建了這個腳本,它們依次完成了艱鉅的任務。它創建一個新的分支,並提交編譯後的文件之前部署到EB

的package.json

{ 
    "scripts": { 
    "production": "node ./node_modules/gulp/bin/gulp.js --production", 
    "deploy": "git checkout -b deploy && npm run production && git add . && git commit -m \"build\" && eb deploy && git checkout master && git branch -D deploy" 
    } 
} 

.elasticbeanstalk/config.yml

branch-defaults: 
    deploy: 
    environment: NAME_OF_ENVIRONMENT 
+0

謝謝你。我實際上最終使用了Circle CI和Docker(因爲我的經驗和AWS Node.js環境並不是最好的)。通過使用Circle CI,我可以直接從Github進行部署。即Circle CI將最新的'push'推到例如'master',然後運行'npm install',然後將該項目構建到'distribution'文件夾中,然後傳遞給EB。使用'.ebignore'我可以忽略所有內容,但'distribution'文件夾和生產服務器。因此這些是唯一傳遞給AWS EB的文件。從那裏AWS EB創建一個Docker容器並運行它大約3-4分鐘。 – Thomas

相關問題