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

Ego*_*huk 5 amazon-web-services docker amazon-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"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

其中"my-bucket"是我在s3上的桶名,它使用与我的BS环境相同的位置.在密钥中设置的配置是结果

$ docker login
Run Code Online (Sandbox Code Playgroud)

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

Activity execution failed, because: WARNING: Invalid auth configuration file
Run Code Online (Sandbox Code Playgroud)

我错过了什么?提前致谢

aym*_*met 13

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

然而,AWS仍然期望使用前一种格式~/.dockercfg(参见其文档中的文件名):

{
  "https://index.docker.io/v1/": {
    "auth": "__auth__",
    "email": "__email__"
  }
}
Run Code Online (Sandbox Code Playgroud)

这与以下使用的新格式不兼容~/.docker/config.json:

{
    "auths": {
        "https://index.docker.io/v1/": {
            "auth": "__auth__",
            "email": "__email__"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

  • 我发了一篇文章,应该填补AWS文档和视频中的空白:[将私有Docker部署到Elastic Beanstalk](http://thequietlattice.com/docker/aws/elasticbeanstalk/2015/12/18/deploy-private-搬运工到elb.html) (3认同)