2016-03-04 87 views
18

aws elasticbean talk。elasticbean中的命令和容器命令有什麼區別

當.ebextensions我們設置擴展

我不知道是什麼區別commandscontainer_commands

之間我的命令是這樣的

container_commands: 
    04_insert_app: 
    command: "cat .ebextensions/insertapp_job.txt > /etc/cron.d/insertapp_job && chmod 644 /etc/cron.d/insertapp_job" 
    leader_only: true 

container_commands就是工作。

命令:有錯誤.ebextensions/insertapp_job.txt沒有發現

回答

1

我發現我的答案在這裏 aws offcial docs

commands:在EC2實例

container_commands執行命令:爲你的容器執行命令

24

的這兩個部分之間的主要區別在於它們在Elastic Beanstalk部署過程中跑。

命令

這些命令在部署過程的早期運行,Web服務器已經成立之前,和你的應用程序代碼已被解之前:

的命令按字母順序處理並且它們在應用程序和Web服務器建立之前運行並且應用程序版本文件被提取。 1

默認情況下,這些命令在根用戶的主文件夾中運行。可以通過選項(工作目錄,是否繼續出錯,環境變量傳遞給命令等)更改EB和其他各種行爲,這些選項可以與命令一起傳遞。

集裝箱命令

這些命令在部署過程的後期運行,Web服務器已經設置完畢後,你的應用程序代碼已經被解壓到臨時文件夾後,但在此之前你的應用程序已經「部署「(通過移動暫存文件夾到其最終位置):

容器中的應用程序和Web服務器已經設置和應用程序版本檔案已被提取,但在此之前的應用程序版本部署後命令運行。在提取應用程序源代碼之前執行非容器命令和其他定製操作。 2

默認情況下,這些命令在臨時文件夾中運行,所以,一旦你的應用程序部署您對當前文件夾的任何更改將持續(路徑會雖然發生變化,所以要小心相對鏈接!) 。

集裝箱命令支持所有相同的選項(非集裝箱)命令,但他們也支持「leader_only」選項:

可以leader_only使用僅在單個實例上運行命令,或配置測試以僅在測試命令評估爲真時運行該命令。僅限領導者的容器命令僅在環境創建和部署期間執行,而其他命令和服務器定製操作則在每次調配或更新實例時執行。 2

+1

我希望兩天前見過這個......感謝發帖。 :-) – speckledcarp

+0

「小心相關鏈接」。你的意思是絕對的聯繫?保留在源碼包中的相關鏈接應該沒問題,對吧? –

4

作爲除了@Tiro和@ t10508hn答案,我只是想澄清這兩個commandscontainer_commands是在主機上執行。

要在碼頭集裝箱內執行命令,請使用Dockerfile

當我不得不執行幾個命令leader_only並假定container_commands實際在容器內執行時,這是一個混亂點。

相關問題