我正在运行一个具有多个环境的elasticbeanstalk应用程序。这个特殊的应用程序是托管托管服务器的托管服务器容器。
要将新版本的应用程序上传并部署到其中一个环境,我可以通过Web客户端点击"上传和部署"从文件选项中选择我最新的Dockerrun.aws.json文件,该文件引用了私有托管的容器的最新版本。上传和部署工作正常,没有问题。
为了让我自己和其他人更容易部署,我希望能够使用CLI上传和部署Dockerrun.aws.json文件。如果我使用cli eb deploy
命令而没有任何特殊配置,那么压缩整个应用程序并将其发送到主机的正常过程就会发生并失败(它无法推断出它只需要读取Dockerrun.aws.json文件)。
我找到了一个关于使用.elasticbeanstalk / config.yml文件控制上传内容的文档。
使用以下语法:
deploy:
artifact: Dockerrun.aws.json
文件已上传并实际成功部署到第一批实例,然后始终无法部署到第二组实例。
失败错误的味道是:'容器意外退出......'
任何人都可以解释或提供使用CLI部署单泊坞容器应用程序的规范方法的链接吗?
答案 0 :(得分:1)
事实证明我使用config.yml列出的方法是正确的。我看到部分成功部署的原因是因为主机上先前运行的docker容器没有被EB停止。
我认为发生的事情是EB正在发送类似
的内容 sudo docker kill --signal=SIGTERM $CONTAINER_ID
而不是更常见的sudo docker stop $CONTAINER_ID
我运行的特定容器没有响应SIGTERM,因此只会坐在那里。当我用SIGKILL在本地测试它时(显然)会正常停止,但SIGTERM本身并不能阻止它。
问题不是部署方法,而是EB产生的输出混乱和我的误解。
答案 1 :(得分:0)
由于您要求提供链接,我提供的链接最初用于使用elasticbeanstalk cli成功测试和部署docker。
请注意这是否对您有所帮助:https://fangpenlin.com/posts/2014/11/25/running-docker-with-aws-elastic-beanstalk/