我正在尽力将我的 ECS 实例连接到 gitlab 中的私有注册表。我已将 .dockercfg 文件上传到与主 EB 环境位于同一区域的存储桶,并按照文档中的说明引用它:
{
"AWSEBDockerrunVersion": 2,
"authentication": {
"bucket": "xxxx",
"key": ".dockercfg"
},
"volumes": [
{
"name": "redis",
"host": {
"sourcePath": "/var/app/volumes/redis"
}
}
],
"containerDefinitions": [
{
"name": "core",
"image": "registry.gitlab.com/newsletter3/newsletter:latest",
"hostname": "core",
"essential": true,
"portMappings": [
{
"hostPort": 80,
"containerPort": 8012
}
],
"links": ["redis"],
"memory": 600
},
{
"name": "redis",
"image": "redis:6.2-alpine",
"hostname": "redis",
"essential": true,
"memory": 300,
"portMappings": [
{
"hostPort": 6379,
"containerPort": 6379
}
],
"mountPoints": [
{
"sourceVolume": "redis",
"containerPath": "/cache",
"readOnly": false
}
]
}
]
}
我通过创建新的部署令牌并使用 base64 对其进行编码来创建我的 .docker cfg 文件。
echo “AWS:GYqZmZxxxxxxxxxx” | tr -d “\n” | base64
生成的文件如下所示:
{
"registry.gitlab.com": {
"auth": "xxxxNWQK"
}
}
我还尝试了第二种格式,带有一个封闭的“auths”对象(docker 存储的方式config.json
)。
无论我尝试什么,我都会看到这样的错误:
level=error time=2022-05-10T20:56:28Z msg="DockerGoClient:无法拉取映像 registry.gitlab.com/xxxx/xxxx:[CannotPullContainerError] 守护进程的错误响应:Head "https://registry.gitlab.com/v2/xxx/xxxx/manifests/latest":未经授权:HTTP Basic:访问被拒绝" module=docker_client.go
我还在文档中搜索了有关 elastic beanstalk 从 s3 存储桶下载我的身份验证文件的任何参考,但未能找到任何参考。
我不确定文档是否已经过时并且“身份验证”选项不再存在。