簡體   English   中英

使用 terraform 構建 docker 映像,將其推送到 ECR 存儲庫,獲取配置程序“local-exec”錯誤

[英]Build docker image with terraform push it to ECR repo getting provisioner "local-exec" error

我已經編寫了 terraform 文件來創建 ecr 存儲庫並構建 docker 圖像並將其推送到 ecr 存儲庫,並且在構建參數中我給出了 github 令牌並且該令牌已創建為 github 操作秘密。 目的是在 terraform 中提到的構建參數必須從 githubaction 秘密中選擇令牌。

    data "aws_caller_identity" "current" {}
    locals {
      account_id    = data.aws_caller_identity.current.account_id
      ecr_repo_name = "ecr-repo"
      ecr_image_tag = "latest"
    }
    resource "aws_ecr_repository" "repo" {
      name = local.ecr_repo_name
    }
    resource "null_resource" "ecr_image" {
      triggers = {
        docker_file = md5(file("${path.module}/../docker/Dockerfile"))
      }
      provisioner "local-exec" {
        command = <<EOF
            aws ecr get-login-password --region eu-west-1 | docker login --username AWS --password-stdin ${local.account_id}.dkr.ecr.eu-west-1.amazonaws.com
            cd ${path.module}/../docker
            docker build -t ${aws_ecr_repository.repo.repository_url}:${local.ecr_image_tag} --build-arg cms_git_token="${{ secrets.CMS_GIT_TOKEN }}" .
            docker images
            docker push ${aws_ecr_repository.repo.repository_url}:${local.ecr_image_tag}
            
        EOF
      }
    }
    
    
When I run this terraform code I am getting error like "Error: local-exec provisioner error" can anyone help me on this.
    
 Error: local-exec provisioner error
│ 
│   with null_resource.ecr_image,
│   on ecr.tf line 14, in resource "null_resource" "ecr_image":
│   14:   provisioner "local-exec" {
│ 
│ Error running command '        aws ecr get-login***
│ eu-west-1 | docker login --username AWS --password-stdin
│ ***.dkr.ecr.eu-west-1.amazonaws.com
│         cd ./../src
│         docker build -t ***.dkr.ecr.eu-west-1.amazonaws.com/retention-analysis-repo:latest .
│         docker images
│         docker push ***.dkr.ecr.eu-west-1.amazonaws.com/retention-analysis-repo:latest
│ ': exit status 1. Output: WARNING! Your password will be stored unencrypted
│ in /home/runner/.docker/config.json.
│ Configure a credential helper to remove this warning. See
│ https://docs.docker.com/engine/reference/commandline/login/#credentials-store   
    
    
 


  

@Rajeev,試試這個,為我工作。

resource "null_resource" "ecr_image" {
  depends_on = [aws_ecr_repository.repo]
  triggers = {
    docker_file = md5(file("${path.module}/../../DOCKER/docker-sample-nginx/Dockerfile"))
  }
  provisioner "local-exec" {
    interpreter = ["/bin/bash" ,"-c"]
    command = "docker images && docker build -t ${aws_ecr_repository.repo.repository_url}:v1 ${path.module}/../../DOCKER/docker-sample-nginx/ && docker images && docker login --username AWS --password `aws ecr get-login-password --region us-east-1` 1####99292.dkr.ecr.us-east-1.amazonaws.com && docker push ${aws_ecr_repository.repo.repository_url}:v1"
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM