我有一个node.js应用程序打包在一个公共存储库中托管的docker镜像中.
我已成功将该映像部署在AWS Beanstalk docker应用程序中.
问题是我期望在更新公共存储库中的映像时自动更新Beanstalk应用程序,如下面的配置所示.
Dockerrun.aws.json:
{
"AWSEBDockerrunVersion": "1","Image": {
"Name": "peveuve/dynamio-payment-service","Update": "true"
},"Ports": [
{
"ContainerPort": "8000"
}
],"Logging": "/var/log/dynamio"
}
Dockerfile非常简单:
FROM node:4.2.1-onbuild
# Environment variables
ENV NODE_ENV test
ENV PORT 8000
# expose application port outside
EXPOSE $PORT
亚马逊文档很清楚:
Optionally include the Update key. The default value is “true” and
instructs Elastic Beanstalk to check the repository,pull any updates
to the image,and overwrite any cached images.
但是我必须通过上传新版本的Dockerrun.aws.json描述符来手动更新Beanstalk应用程序.我错过了什么?它应该像那样工作吗?
文档应该更清楚.他们说的是update = true:
首次启动应用程序时,EBS会在停靠码程序运行之前执行docker pull.它不会继续轮询docker hub.
相比之下,在没有首先执行docker pull的情况下发出docker run将始终使用该机器的本地存储版本,这可能并不总是最新的.
为了实现你想要的,你需要设置一个webhook on Docker Hub,它调用你控制的应用程序,重建你的ELB应用程序.