我正在运行一个具有多个环境的 elasticbeanstalk 应用程序。这个特定的应用程序托管着托管 Web 服务的 docker 容器。
要将应用程序的新版本上传并部署到其中一个环境,我可以通过 Web 客户端并单击“上传和部署”,然后从文件选项中选择最新的 Dockerrun.aws.json 文件,该文件引用私有托管的容器的最新版本。上传和部署工作正常,没有问题。
为了让我自己和其他人更轻松地进行部署,我希望能够使用 CLI 上传和部署 Dockerrun.aws.json 文件。如果我使用 clieb deploy
在没有任何特殊配置的情况下,压缩整个应用程序并将其发送到主机的正常过程会发生并失败(它无法推断出它只需要读取 Dockerrun.aws.json 文件)。
我找到了有关使用 .elasticbeanstalk/config.yml 文件控制上传内容的文档花絮。
使用这个语法:
deploy:
artifact: Dockerrun.aws.json
文件上传后,实际部署到第一批实例上成功,然后部署到第二批实例上总是失败。
失败错误的风格是:“容器意外退出......”
任何人都可以解释或提供使用 CLI 部署单个 docker 容器应用程序的规范方法的链接吗?
事实证明,我在 config.yml 中列出的方法是正确的。我看到部署部分成功的原因是之前在主机上运行的 docker 容器没有被 EB 停止。
我认为发生的事情是 EB 发送了类似的内容
sudo docker kill --signal=SIGTERM $CONTAINER_ID
而不是更常见的sudo docker stop $CONTAINER_ID
我正在运行的特定容器没有响应 SIGTERM,因此它只会坐在那里。当我使用 SIGKILL 在本地测试它时,它(显然)会正确停止,但仅 SIGTERM 无法阻止它。
问题不在于部署方法,而在于 EB 生成的输出的混乱以及我的误解。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)