我正在构建一个 gitlab ci/cd 管道,它将图像从我的 gitlab 容器注册表部署到我的 AWS EB。我当前的方法是使用 docker-compose 来拉取映像并构建容器,并使用 Dockerrun-aws.json 向 gitlab 容器注册表验证 AWS EB。 根据 AWS EB 文档,这应该是 Dockerrun-aws.json 的格式
{
"AWSEBDockerrunVersion": "3",
"Authentication": {
"bucket": "DOC-EXAMPLE-BUCKET",
"key": "mydockercfg"
}
}
我关心的是我应该在 mydockercfg 文件中包含什么内容。目前,我正在使用以下 Dockerrun-aws.json 文件,
{
"AWSEBDockerrunVersion": "3",
"Authentication": {
"bucket": "$AWS_S3_BUCKET",
"key": "auth.json"
}
}
和 auth.json 文件
{
"auths":{
"$CI_REGISTRY":{
"auth":"$DEPLOY_TOKEN"
}
}
}
这是我的 gitlab-ci.yml 文件,
deploy:
image:
name: amazon/aws-cli:latest
entrypoint: [""]
stage: deploy
script:
- echo "Deployment starts"
- yum install -y gettext
- export DEPLOY_TOKEN=$(echo $GITLAB_REGISTRY_TOKEN | tr -d "\n" | base64)
- envsubst < auth.json > aws-auth.json
- cat aws-auth.json
- envsubst < Dockerrun.aws.json > aws-Dockerrun.aws.json
- cat aws-Dockerrun.aws.json
- aws s3 cp aws-auth.json s3://$AWS_S3_BUCKET/auth.json
- aws s3 cp docker-compose.yml s3://$AWS_S3_BUCKET/dokcer-compose.yml
- aws s3 cp aws-Dockerrun.aws.json s3://$AWS_S3_BUCKET/Dockerrun.aws.json
- aws elasticbeanstalk create-application-version --application-name web-app --version-label $CI_PIPELINE_IID --source-bundle S3Bucket=$AWS_S3_BUCKET,S3Key=dokcer-compose.yml
- aws elasticbeanstalk update-environment --application-name web-app --version-label $CI_PIPELINE_IID --environment-name Web-app-env
但是当我运行此作业时,AWS EB 说禁止访问。我应该如何更改结构,以便 EB 可以从 gitlab 容器注册表中提取和部署映像