如何在 Githubactions 中从 ECR 中提取 docker 镜像

Vam*_*msi 6 docker amazon-ecr github-actions building-github-actions

我正在尝试从 ECR 中提取 docker 映像并将其部署到 ec2 实例上。然而它抛出了一个错误,比如

docker pull  $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG

======END======
err: invalid reference format
2022/11/03 15:31:54 Process exited with status 1
Run Code Online (Sandbox Code Playgroud)

我的 yml 文件是:

name: Docker Image CI

on:
  push:
    branches: [ "main" ]

jobs:

  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - name: Configure AWS credentials
      uses: aws-actions/configure-aws-credentials@v1
      with:
        aws-access-key-id: ${{ secrets.TF_USER_AWS_KEY }}
        aws-secret-access-key: ${{ secrets.TF_USER_AWS_SECRET }}
        aws-region: us-east-1

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

    - name: Build, tag, and push image to Amazon ECR
      env:
        ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
        ECR_REPOSITORY: githubactions
        IMAGE_TAG: githubactions_image
      run: |
        docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG .
        docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
    - name: Docker pull & run from github
      uses: appleboy/ssh-action@master
      with:
        host: ec2-3-86-102-151.compute-1.amazonaws.com
        username: ec2-user
        key: ${{ secrets.ACTIONS_PRIVATE_KEY }}
        envs: GITHUB_SHA
        script: |
            docker pull  $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
Run Code Online (Sandbox Code Playgroud)

我花了很多时间,但我无法真正理解出了什么问题。任何想法真的很感激。

Von*_*onC 0

我首先添加一个 ls 和 echo:

      run: |
        pwd
        ls -arth
        echo "docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG ."
        docker ...
Run Code Online (Sandbox Code Playgroud)

这样,我会检查我是否位于正确的文件夹中(其中有 a Dockerfile),以及所有变量是否确实被赋值。

如果您看到<aregistry>/<arepo>:(意味着没有标签),则最后的“ :”可能足以触发错误消息。
那个或者: