![](/img/trans.png)
[英]What's the actual difference between these set of commands in gcloud command-line?
[英]What is the difference between commands and container_commands configuration keys in Beanstalk?
当我们在 .ebextensions 中设置 Elastic Beanstalk 扩展时
我想知道 Beanstalk 配置文件键中的commands
和container_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的图像,它说明了commands
和container_commands
之间的区别:
commands
在初始步骤下载应用程序后立即运行。 container_commands
在Buildfile
之后但在配置步骤期间的predeploy
挂钩之前运行。 这是假设您在 Amazon Linux 2 上使用平台挂钩。
作为@Tiro和@ t10508hn的补充,我只想澄清commands
和container_commands
都在主机上执行。
要在Dockerfile
容器中执行命令,请使用Dockerfile
。
当我不得不使用leader_only
执行几个命令并假设container_commands
实际在容器内执行时,这是一个混乱点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.