从私有Docker存储库将映像部署到AWS Elastic Beanstalk

时间:2015-07-14 00:53:49

标签: amazon-web-services docker elastic-beanstalk

我试图从其私有仓库中提取Docker镜像,并在Zip包装的Dockerrun.aws.json的帮助下将其部署在AWS Elastic Beanstalk上。它的内容是

{
    "AWSEBDockerrunVersion": "1",
    "Authentication": {
        "Bucket": "my-bucket",
        "Key": "docker/.dockercfg"
    },
    "Image": {
        "Name": "namespace/repo:tag",
        "Update": "true"
    },
    "Ports": [
        {
            "ContainerPort": "8080"
        }
    ]
}

在哪里" my-bucket"是我在s3上的存储桶名称,它使用与我的BS环境相同的位置。在密钥中设置的配置是

的结果
$ docker login

在docker2boot app终端中调用。然后将其复制到文件夹" docker" in" my-bucket"。图像确实存在。 之后我将带有dockerrun文件的.zip上传到EB,在部署时我得到

Activity execution failed, because: WARNING: Invalid auth configuration file

我错过了什么? 提前致谢

1 个答案:

答案 0 :(得分:13)

Docker已将配置文件路径从~/.dockercfg更新为~/.docker/config.json。他们还利用这个机会对配置文件格式进行了重大更改。

但是,AWS仍然需要前一种格式,即~/.dockercfgsee the file name in their documentation)中使用的格式:

{
  "https://index.docker.io/v1/": {
    "auth": "__auth__",
    "email": "__email__"
  }
}

~/.docker/config.json中使用的新格式不兼容:

{
    "auths": {
        "https://index.docker.io/v1/": {
            "auth": "__auth__",
            "email": "__email__"
        }
    }
}

他们非常相似。因此,如果您的Docker版本生成新格式,只需删除auths行及其相应的大括号,您就可以了。