在elasticbean talk中命令和容器命令之间有什么区别

时间:2016-03-04 05:16:25

标签: amazon-web-services elastic-beanstalk

在aws 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

3 个答案:

答案 0 :(得分:43)

这两个部分之间的主要区别在于它们在Elastic Beanstalk部署过程中运行。

命令

这些命令在部署过程的早期,在设置Web服务器之前,以及在解压缩应用程序代码之前运行:

  

命令按名称按字母顺序处理,并在设置应用程序和Web服务器并提取应用程序版本文件之前运行。1

默认情况下,命令在root用户的主文件夹中运行。 EB和其他各种行为可以通过选项(工作目录,是否继续出错,环境变量传递给命令等)来改变,可以与命令一起传递。

容器命令

这些命令在部署过程中稍后运行,在设置Web服务器之后,以及在将应用程序代码解压缩到暂存文件夹之后,但在应用程序被部署之前运行之后#34; (通过将登台文件夹移动到其最终位置):

  

容器命令在设置应用程序和Web服务器并且已提取应用程序版本存档之后但在部署应用程序版本之前运行。在提取应用程序源代码之前执行非容器命令和其他自定义操作。2

默认情况下,这些命令在暂存文件夹中运行,因此在部署应用程序后,您对当前文件夹所做的任何更改都将保留(但路径会发生变化,因此请注意相关链接!)。

容器命令支持与(非容器)命令相同的所有选项,但它们也支持" leader_only"选项:

  

您可以使用leader_only仅在单个实例上运行该命令,或者将测试配置为仅在测试命令的计算结果为true时运行该命令。仅限领导者的容器命令仅在环境创建和部署期间执行,而每次配置或更新实例时都会执行其他命令和服务器自定义操作。2

答案 1 :(得分:5)

作为@Tiro和@ t10508hn的补充,我只想澄清一下commandscontainer_commands都在主机上执行。

要在docker容器中执行命令,请使用Dockerfile

当我不得不用leader_only执行一些命令并假设container_commands实际上是在容器内执行时,这是一个混乱点。

答案 2 :(得分:2)

我在这里找到了答案 aws offcial docs

commands:在EC2实例上执行命令

container_commands:执行容器命令