【问题标题】:Deploy to elasticbeanstalk via CLI deploy command with Dockerrun.aws.json使用 Dockerrun.aws.json 通过 CLI deploy 命令部署到 elasticbeanstalk
【发布时间】:2016-02-23 07:47:26
【问题描述】:

我正在运行具有多个环境的 elasticbeanstalk 应用程序。这个特定的应用程序托管了 docker 容器,这些容器托管了一个 web 服务。

要将应用程序的新版本上传和部署到其中一个环境,我可以通过 Web 客户端并单击“上传和部署”,然后从文件选项中选择我最新的 Dockerrun.aws.json 文件,它引用了私有托管的容器的最新版本。上传和部署工作正常,没有问题。

为了让我自己和其他人更容易部署,我希望能够使用 CLI 上传和部署 Dockerrun.aws.json 文件。如果我在没有任何特殊配置的情况下使用 cli eb deploy 命令,则压缩整个应用程序并将其发送到主机的正常过程会发生并失败(无法推断出它只需要读取 Dockerrun.aws.json 文件) .

我发现了一个关于使用 .elasticbeanstalk/config.yml 文件控制上传内容的文档花絮。

使用这个语法:

deploy: artifact: Dockerrun.aws.json

文件上传成功,实际部署到第一批实例,然后一直部署到第二批实例失败。

失败错误的味道是:'container exited unexpectedly...'

谁能解释或提供使用 CLI 部署单个 docker 容器应用程序的规范方法的链接?

【问题讨论】:

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


    【解决方案1】:

    所以事实证明,我在 config.yml 中列出的方法是正确的。我看到部分成功部署的原因是因为之前在主机上运行的 docker 容器没有被 EB 停止。

    我认为发生的事情是 EB 正在发送类似

    sudo docker kill --signal=SIGTERM $CONTAINER_ID 而不是更常见的sudo docker stop $CONTAINER_ID

    我正在运行的特定容器没有响应 SIGTERM,所以它只会坐在那里。当我使用 SIGKILL 在本地对其进行测试时,它(显然)会正确停止,但仅 SIGTERM 不会停止它。

    问题不在于部署方法,而在于 EB 生成的输出中的混乱以及我的误解。

    【讨论】:

      【解决方案2】:

      由于您要求提供链接,因此我提供了一个链接,我最初用于使用 elasticbeanstalk cli 成功测试和部署 docker。

      请看看这是否对您也有帮助:https://fangpenlin.com/posts/2014/11/25/running-docker-with-aws-elastic-beanstalk/

      【讨论】:

        猜你喜欢
        • 2015-07-20
        • 2017-06-15
        • 2018-07-31
        • 1970-01-01
        • 2018-10-08
        • 2022-06-15
        • 2018-03-31
        • 1970-01-01
        • 2018-05-16
        相关资源
        最近更新 更多