[英]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.