繁体   English   中英

Beanstalk 中的 commands 和 container_commands 配置键有什么区别?

[英]What is the difference between commands and container_commands configuration keys in Beanstalk?

当我们在 .ebextensions 中设置 Elastic Beanstalk 扩展时

我想知道 Beanstalk 配置文件键中的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

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

命令

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

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

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

容器命令

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

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

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

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

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

这是来自 aws doc Extending Elastic Beanstalk Linux platforms的图像,它说明了commandscontainer_commands之间的区别:

平台-linux-扩展顺序

commands在初始步骤下载应用程序后立即运行。 container_commandsBuildfile之后但在配置步骤期间的predeploy挂钩之前运行。 这是假设您在 Amazon Linux 2 上使用平台挂钩。

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

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

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

我在这里找到了答案,这是官方的文件

commands :在EC2实例上执行命令

container_commands :执行container_commands命令

暂无
暂无

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

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