一尘不染

AWS Beanstalk Docker映像自动更新不起作用

docker

我有一个打包在公共存储库中的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应用程序。我错过了什么?它应该这样工作吗?


阅读 289

收藏
2020-06-17

共1个答案

一尘不染

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

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

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

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

2020-06-17