【问题标题】:What is the difference between commands and container_commands configuration keys in Beanstalk?Beanstalk 中的 commands 和 container_commands 配置键有什么区别?
【发布时间】:2016-06-17 17:49:13
【问题描述】:

当我们在 .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 未找到

【问题讨论】:

    标签: amazon-web-services amazon-elastic-beanstalk


    【解决方案1】:

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

    commands:在 EC2 实例上执行命令

    container_commands: 为你的容器执行命令

    【讨论】:

      【解决方案2】:

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

      命令

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

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

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

      容器命令

      这些命令在部署过程的后期运行,在设置 Web 服务器之后,在您的应用程序代码被解压缩到暂存文件夹之后,但在您的应用程序被“部署”之前(通过移动暂存文件夹到它的最终位置):

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

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

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

      您可以使用 leader_only 仅在单个实例上运行命令,或将测试配置为仅在测试命令评估为 true 时运行命令。 Leader-only 容器命令仅在环境创建和部署期间执行,而其他命令和服务器自定义操作在每次配置或更新实例时执行。2

      【讨论】:

      • 我希望我在两天前看到这个……感谢您的发帖。 :-)
      • “小心相对链接”。你的意思是绝对链接?保留在源包中的相对链接应该没问题,对吧?
      • 你知道container_commands是在/opt/elasticbeanstalk/hooks/appdeploy/pre/中的脚本之前还是之后执行的吗?
      • 刚刚查看了eb-activity.log 文件并回答了我自己的问题。对于其他想知道的人,container_commands 仅在预部署挂钩之后执行。
      【解决方案3】:

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

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

      当我不得不使用leader_only 执行几个命令并假设container_commands 实际上是在容器中执行时,这是一个令人困惑的地方。

      【讨论】:

        【解决方案4】:

        这是来自 aws 文档 Extending Elastic Beanstalk Linux platforms 的图片,说明了 commandscontainer_commands 之间的区别:

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

        【讨论】:

          猜你喜欢
          • 2018-04-22
          • 1970-01-01
          • 1970-01-01
          • 2017-09-04
          • 2021-07-16
          • 2020-03-18
          • 2011-05-04
          • 2013-08-24
          • 2015-11-20
          相关资源
          最近更新 更多