我有一个打包在公共存储库中的docker映像中的node.js应用程序。
我已将该映像成功部署在AWS Beanstalk泊坞应用中。问题是,我期望在更新公共存储库中的映像时自动更新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
亚马逊文档对此非常清楚:
(可选)包括更新密钥。默认值为“ true”,它指示Elastic Beanstalk检查存储库,提取映像的所有更新以及覆盖所有缓存的映像。
但是我必须通过上载新版本的Dockerrun.aws.json描述符来手动更新Beanstalk应用程序。我错过了什么?它应该这样工作吗?
文档应该更清晰。他们说的是update = true:
EBS会做docker pull它做了之前docker run当应用程序第一次启动。它不会持续轮询docker hub。
docker pull
docker run
相比之下,docker run不先发行a发行a docker pull将始终使用该计算机的本地存储版本,该版本可能并不总是最新的。
为了实现所需的功能,您需要在Docker Hub上设置一个Webhook,该Webhook调用您控制的应用程序,然后重新构建ELB应用程序。