amazon-web-services - 使用 Dockerrun.aws.json 通过 CLI deploy 命令部署到 elasticbeanstalk

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

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

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

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

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

使用这个语法:

部署: 工件:Dockerrun.aws.json

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

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

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

最佳答案

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

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

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

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

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

关于amazon-web-services - 使用 Dockerrun.aws.json 通过 CLI deploy 命令部署到 elasticbeanstalk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33833184/

相关文章:

php - 为时区编辑 php ini

docker 上的 Android SDK

docker - 使用同一作者从 gitlab CI 下载另一个私有(private)存储库

docker - 无法访问安装在 ubuntu docker 容器中的 xampp htdocs 中的文件

amazon-web-services - 创建内部负载均衡器

amazon-web-services - 两个不同 ECS 集群中的两个容器之间的链接

ASP.NET - 将站点投入生产的基本 list

ruby-on-rails - Heroku - 只读文件系统 -/var/www?

object - 在 salesforce 中将沙箱部署到生产时出错

json - 解码 DynamoDB JSON