You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何更新GitLab CI配置以使用最新Docker与AWS CLI v2版本

问题根因
  • docker:20.10.9 官方镜像基于 Alpine 3.14 版本,默认使用 musl 作为系统 C 库,而 AWS CLI v2 官方提供的预编译二进制包基于 glibc 编译,直接部署会报依赖缺失错误
  • AWS CLI v2 已经正式停止支持通过 pip 安装,原有pip3 install awscli命令只能安装 AWS CLI v1 版本,且新版本依赖与 Alpine 3.14 自带的 Python 版本存在兼容性问题,会直接报错
  • 原有aws ecr get-login命令在 AWS CLI v2 中已被废弃,需要替换为新的登录命令
可行解决方案

方案1:在 docker:20.10.9 镜像内适配安装 AWS CLI v2(推荐,改动最小)

直接在原有配置基础上修改 before_script 步骤,提前安装 glibc 兼容层后再部署 AWS CLI v2,完整配置如下:

image: docker:20.10.9
services:
  - docker:20.10.9-dind

variables:
  DOCKER_HOST: tcp://docker:2376
  DOCKER_TLS_CERTDIR: "/certs"
  AWS_REGION: us-east-1
  # 替换为你自己的ECR仓库地址
  ECR_REGISTRY: <你的AWS账户ID>.dkr.ecr.us-east-1.amazonaws.com

stages:
  - Build
  - Push

before_script:
  # 安装基础依赖和glibc兼容层
  - apk add --no-cache curl unzip glibc-compat
  # 下载并安装AWS CLI v2
  - curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
  - unzip -q awscliv2.zip
  - ./aws/install -i /usr/local/aws-cli -b /usr/local/bin
  # 验证安装
  - aws --version
  - docker version
  # 加载本地镜像
  - docker load --input data/image.tar
  # ECR登录(适配AWS CLI v2的新命令)
  - aws ecr get-login-password --region $AWS_REGION | docker login --username AWS --password-stdin $ECR_REGISTRY

注意事项:

  • 需提前在GitLab项目变量中配置好AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY,权限需包含ECR推送权限
  • 如果你使用的是ARM架构的GitLab Runner,需要将AWS CLI下载链接替换为ARM版本的对应链接

方案2:使用预装AWS CLI v2的镜像+Docker客户端

如果你不想每次构建都重复下载安装AWS CLI,可以将Job基础镜像替换为AWS官方的AWS CLI v2镜像,再额外安装Docker客户端即可:

image: amazon/aws-cli:latest
services:
  - docker:20.10.9-dind

variables:
  DOCKER_HOST: tcp://docker:2376
  DOCKER_TLS_CERTDIR: "/certs"
  AWS_REGION: us-east-1
  ECR_REGISTRY: <你的AWS账户ID>.dkr.ecr.us-east-1.amazonaws.com

stages:
  - Build
  - Push

before_script:
  # 安装Docker客户端
  - yum install -y docker
  # 验证安装
  - aws --version
  - docker version
  # 加载本地镜像
  - docker load --input data/image.tar
  # ECR登录
  - aws ecr get-login-password --region $AWS_REGION | docker login --username AWS --password-stdin $ECR_REGISTRY

该方案的优势是安装Docker客户端的速度更快,且AWS CLI v2是官方预装好的,不会出现兼容性问题。

内容的提问来源于stack exchange,提问作者bruvio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 07:45:03