pev*_*uve 11 deployment amazon-web-services docker amazon-elastic-beanstalk
我有一个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"
}
Run Code Online (Sandbox Code Playgroud)
Dockerfile非常简单:
FROM node:4.2.1-onbuild
# Environment variables
ENV NODE_ENV test
ENV PORT 8000
# expose application port outside
EXPOSE $PORT
Run Code Online (Sandbox Code Playgroud)
亚马逊文档很清楚:
(可选)包括Update键.默认值为"true",并指示Elastic Beanstalk检查存储库,提取对映像的任何更新,并覆盖任何缓存的映像.
但是我必须通过上传新版本的Dockerrun.aws.json描述符来手动更新Beanstalk应用程序.我错过了什么?这应该是那样的吗?
您可以使用aws命令行工具来触发更新:
aws elasticbeanstalk update-environment --application-name [your_app_name] --environment-name [your_environment_name] --version-label [your_version_label]
Run Code Online (Sandbox Code Playgroud)
您指定包含该Dockerrun.aws.json
文件的版本,这样就不会将新版本添加到应用程序中.在这种情况下,Dockerrun文件作为应用程序的"源",但它只告诉aws提取docker镜像,因此在Elastic Beanstalk中为应用程序创建新版本将是多余的(除非您使用特定标记的docker镜像在Dockerrun文件中)
链接:
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_image.html http://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateEnvironment.htm
文档应该更清晰。他们说的是update = true:
EBS会做docker pull
它做了之前docker run
当应用程序第一次启动。它不会持续轮询docker hub。
相比之下,docker run
不先发行a发行a docker pull
将始终使用该计算机的本地存储版本,该版本可能并不总是最新的。
为了实现所需的功能,您需要在Docker Hub上设置一个Webhook,该Webhook调用您控制的应用程序,然后重新构建ELB应用程序。
归档时间: |
|
查看次数: |
2903 次 |
最近记录: |