【问题标题】:In elastic beanstalk, how do I run a command before the container is launched?在弹性 beantalk 中,如何在容器启动之前运行命令?
【发布时间】:2015-08-26 21:55:34
【问题描述】:

我正在使用 Elastic Beanstalk 的单容器 docker 版本来部署 ruby​​ on rails 应用程序(我的 docker 是预先构建的)。 docker 镜像指定了“rails server”的 CMD。

我想在“rails 服务器”运行之前发出“rake db:migrate”。有没有办法使用弹性豆茎配置或其他方式来做到这一点?

【问题讨论】:

    标签: amazon-elastic-beanstalk


    【解决方案1】:

    您可以将 CMD/ENTRYPOINT 替换为在正在运行的 docker 容器中运行的脚本(每次启动 docker 容器时运行),或者将其添加到 .ebextensions/00-my-tasks.config:

    container_commands:
      00-my-task:
        command: rake db:migrate
    

    然后它在 elastic-beanstalk 容器/虚拟机中运行,但在 docker 容器之外。

    【讨论】:

    • 运行脚本为我解决了这个问题。扩展解决方案将不起作用,因为 rake 需要在容器内运行。
    • 如果您需要在容器内运行 rake,您可以将命令指定为 docker run 命令 - 例如docker run rake db:migrate - 但您可能希望每次部署只运行一次,因此通常 ECS 更适合更复杂的部署场景,因为它允许您在运行之前/之后/期间运行单次“任务”长期运行的“服务”
    • 一些文档说使用container_commands:,而其他文档说使用commands:,不确定哪个是正确的。
    猜你喜欢
    • 2022-01-13
    • 2020-10-05
    • 1970-01-01
    • 2016-09-24
    • 2017-09-03
    • 2017-02-11
    • 2017-12-05
    • 2021-11-05
    • 2023-03-09
    相关资源
    最近更新 更多