簡體   English   中英

AWS Elastic Beanstalk ebextension不執行Shell腳本以使用npm install

[英]AWS Elastic Beanstalk ebextension not executing shell script to use npm install

我需要安裝在彈性beantalk上運行的node js應用程序內部創建的單獨框架。

我嘗試將腳本放入主package.json文件中,但安裝時出現權限錯誤。

因此,我創建了一個配置文件,並嘗試從container_commands運行npm install。 它不想運行npm,因為它說命令丟失了。 我嘗試將正確的環境路徑變量添加到npm,當通過ssh手動完成該工作時可以正常工作,但是它給出了相同的錯誤,即找不到npm命令。

所以最后。

我通過ebextension創建了一個bash腳本,用於安裝應用程序,然后從container_commands運行該腳本。

腳本已正確創建,但從未運行。 如果我使用ssh進入實例並以sudo手動執行它,那么它將起作用。 該應用程序部署時沒有錯誤,但似乎從未執行過腳本,我知道這是因為從未創建過node_modules文件夾。

我不確定要在哪里在日志中查找錯誤,並且在嘗試時沒有發現任何有用的信息。

這是我的伸手可及的距離:

files:
    "/tmp/install_application.sh":
        mode: "000755"
        owner: root
        group: root
        content: |
            #!/bin/bash
            export PATH=$PATH:`ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin
            eval "cd /var/app/current/library/server && npm install --production"
            eval "cd /var/app/current && npm install --production"

container_commands:
    00-install-application:
    command: "sh /tmp/install_application.sh"

我設法找到答案。 我的腳本有一些問題。

  1. 以前的嘗試仍將舊腳本保留在hooks文件夾中。
  2. 我在項目甚至還沒有解壓縮之前就解雇了腳本,或者在項目部署之后就解雇了腳本。
  3. 我將模塊安裝到最終目標/ var / app / current,一旦安裝了已部署的應用程序,該目標將被覆蓋。

這是最終的腳本。

files:
   "/opt/elasticbeanstalk/hooks/appdeploy/enact/00-install-application.sh":
   mode: "000755"
   owner: root
   group: root
   content: |
       #!/bin/bash
       PATH=$PATH:`ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin
       cd "/tmp/deployment/application/library/server"
       npm install --production

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM