当前位置:  开发笔记 > 编程语言 > 正文

AWS Beanstalk docker镜像自动更新不起作用

如何解决《AWSBeanstalkdocker镜像自动更新不起作用》经验,为你挑选了2个好方法。

我有一个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

亚马逊文档很清楚:

(可选)包括Update键.默认值为"true",并指示Elastic Beanstalk检查存储库,提取对映像的任何更新,并覆盖任何缓存的映像.

但是我必须通过上传新版本的Dockerrun.aws.json描述符来手动更新Beanstalk应用程序.我错过了什么?这应该是那样的吗?



1> a544jh..:

您可以使用aws命令行工具来触发更新:

aws elasticbeanstalk update-environment --application-name [your_app_name] --environment-name [your_environment_name] --version-label [your_version_label]

您指定包含该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



2> code_monk..:

文档应该更清晰。他们说的是update = true:

EBS会做docker pull它做了之前docker run当应用程序第一次启动。它不会持续轮询docker hub。

相比之下,docker run不先发行a发行a docker pull将始终使用该计算机的本地存储版本,该版本可能并不总是最新的。

为了实现所需的功能,您需要在Docker Hub上设置一个Webhook,该Webhook调用您控制的应用程序,然后重新构建ELB应用程序。


更新:实际上,不要重建您的应用程序,这需要很长时间。上传相同的Dockerrun.aws.json并增加版本号会更好。
推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有