使用GitHub Action推送镜像至AWS ECR时遇路径准备错误
解决GitHub Action推送AWS ECR时的"Unable to prepare context"报错
问题分析
报错Unable to prepare context: path "***.dkr.ecr.eu-central-1.amazonaws.com.."说明Docker构建时被传入了错误的上下文路径——ECR仓库地址,而非本地代码目录。同时报错中的ECR区域eu-central-1与你配置的ap-northeast-2不匹配,也是触发问题的潜在诱因。
解决方案
1. 明确指定构建上下文与Dockerfile路径
该aws-ecr-action在未显式指定构建上下文时,可能误将其他参数值当作上下文路径。需在with块中添加以下参数:
context: .:指定当前checkout的代码目录为构建上下文dockerfile: ./Dockerfile:如果Dockerfile不在根目录,替换为实际路径
修改后的工作流:
jobs: build-and-push: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: docker://ghcr.io/kciter/aws-ecr-action:latest with: access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }} secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} account_id: ${{ secrets.AWS_ACCOUNT_ID }} repo: docker/repo region: ap-northeast-2 tags: latest,${{ github.sha }} create_repo: true image_scanning_configuration: true set_repo_policy: true repo_policy_file: repo-policy.json # 新增构建上下文与Dockerfile配置 context: . dockerfile: ./Dockerfile
2. 修正区域不匹配问题
- 确认你的AWS账号在
ap-northeast-2区域拥有ECR仓库权限(或依赖create_repo: true自动创建) - 检查AWS凭证(
AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY)是否有权限操作ap-northeast-2区域的ECR资源,避免因权限不足导致action fallback到其他默认区域
3. 验证本地文件结构
在aws-ecr-action步骤前添加目录检查,确认必要文件存在:
- run: ls -la name: 检查当前目录文件
确保Dockerfile和repo-policy.json都在指定路径下。
内容的提问来源于stack exchange,提问作者Clement Olaniyan
相关产品推荐
相关产品推荐

