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

Cou*_*ell 9 deployment amazon-web-services docker amazon-elastic-beanstalk

我正在运行一个具有多个环境的elasticbeanstalk应用程序.此特定应用程序托管托管网络服务的docker容器.

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

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

我找到了一个关于使用.elasticbeanstalk/config.yml文件控制上传内容的文档.

使用以下语法:

deploy: artifact: Dockerrun.aws.json

文件已上载并实际成功部署到第一批实例,然后始终无法部署到第二组实例.

失败错误的风格是:'容器意外退出......'

任何人都可以解释或提供使用CLI部署单个docker容器应用程序的规范方法的链接吗?

Cou*_*ell 2

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

我认为发生的事情是 EB 发送了类似的内容

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

我正在运行的特定容器没有响应 SIGTERM,因此它只会坐在那里。当我使用 SIGKILL 在本地测试它时,它(显然)会正确停止,但仅 SIGTERM 无法阻止它。

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