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

如何用GitHub Action向多个ECR仓库分别推送前端/后端/Nginx镜像?

实现多镜像分推至不同AWS ECR仓库

完全可以实现这个需求。你提到的AWS ECR Action支持多次调用,只要每次调用时指定不同的镜像构建上下文、ECR仓库名称等参数,就能分别处理frontend、backend和nginx三类镜像。

以下是完整的GitHub Actions工作流示例,你可以直接参考修改:

name: Build and Push Multi-Images to ECR

on:
  push:
    branches: [ main ]  # 触发分支可按需修改

jobs:
  build-and-push:
    runs-on: ubuntu-latest
    permissions:
      id-token: write
      contents: read

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      # 配置AWS凭证,仅需执行一次
      - name: Configure AWS credentials
        uses: aws-actions/configure-aws-credentials@v4
        with:
          aws-region: us-east-1  # 替换为你的ECR所在区域
          role-to-assume: arn:aws:iam::YOUR_ACCOUNT_ID:role/YOUR_GITHUB_ACTIONS_ROLE  # 替换为你的IAM角色ARN

      # 构建并推送frontend镜像到对应ECR仓库
      - name: Login to ECR for frontend
        uses: aws-actions/amazon-ecr-login@v2
        id: login-ecr-frontend
      - name: Build & push frontend image
        run: |
          docker build -t frontend:latest ./frontend  # 替换为你的frontend Dockerfile所在目录
          docker tag frontend:latest ${{ steps.login-ecr-frontend.outputs.registry }}/your-frontend-ecr-repo:latest  # 替换为你的frontend ECR仓库名
          docker push ${{ steps.login-ecr-frontend.outputs.registry }}/your-frontend-ecr-repo:latest

      # 构建并推送backend镜像到对应ECR仓库
      - name: Login to ECR for backend
        uses: aws-actions/amazon-ecr-login@v2
        id: login-ecr-backend
      - name: Build & push backend image
        run: |
          docker build -t backend:latest ./backend  # 替换为你的backend Dockerfile所在目录
          docker tag backend:latest ${{ steps.login-ecr-backend.outputs.registry }}/your-backend-ecr-repo:latest  # 替换为你的backend ECR仓库名
          docker push ${{ steps.login-ecr-backend.outputs.registry }}/your-backend-ecr-repo:latest

      # 构建并推送nginx镜像到对应ECR仓库
      - name: Login to ECR for nginx
        uses: aws-actions/amazon-ecr-login@v2
        id: login-ecr-nginx
      - name: Build & push nginx image
        run: |
          docker build -t nginx:latest ./nginx  # 替换为你的nginx Dockerfile所在目录
          docker tag nginx:latest ${{ steps.login-ecr-nginx.outputs.registry }}/your-nginx-ecr-repo:latest  # 替换为你的nginx ECR仓库名
          docker push ${{ steps.login-ecr-nginx.outputs.registry }}/your-nginx-ecr-repo:latest

关键说明:

  • 只需一次AWS凭证配置,后续所有镜像推送都可复用该凭证权限
  • 每个镜像的处理流程独立:登录对应ECR→构建镜像→打标签→推送
  • 需提前在AWS ECR中创建好三个对应的仓库(frontend、backend、nginx)
  • 替换示例中的区域、IAM角色ARN、ECR仓库名、Dockerfile目录等参数为你的实际信息

如果你想减少重复代码,也可以用矩阵(matrix)优化:

name: Build and Push Multi-Images to ECR

on:
  push:
    branches: [ main ]

jobs:
  build-and-push:
    runs-on: ubuntu-latest
    permissions:
      id-token: write
      contents: read
    strategy:
      matrix:
        image:
          - name: frontend
            context: ./frontend
            repo: your-frontend-ecr-repo
          - name: backend
            context: ./backend
            repo: your-backend-ecr-repo
          - name: nginx
            context: ./nginx
            repo: your-nginx-ecr-repo

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Configure AWS credentials
        uses: aws-actions/configure-aws-credentials@v4
        with:
          aws-region: us-east-1
          role-to-assume: arn:aws:iam::YOUR_ACCOUNT_ID:role/YOUR_GITHUB_ACTIONS_ROLE

      - name: Login to Amazon ECR
        id: login-ecr
        uses: aws-actions/amazon-ecr-login@v2

      - name: Build, tag, and push image
        env:
          ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
          IMAGE_CONTEXT: ${{ matrix.image.context }}
          ECR_REPOSITORY: ${{ matrix.image.repo }}
          IMAGE_TAG: latest
        run: |
          docker build -t temp-image:$IMAGE_TAG $IMAGE_CONTEXT
          docker tag temp-image:$IMAGE_TAG $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
          docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG

使用矩阵的好处是后续新增镜像只需在matrix列表中添加条目即可,维护更高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 22:05:41