Packer 在使用 Docker 插件时无法读取 shell 脚本

Packer unable to read shell script while using Docker plugin

我正在尝试使用 Packer 创建一个 docker 图像。但是,当我尝试使用 shell 配置程序时,它无法找到 shell 脚本。

learn-packer.docker.terraform: /bin/sh: /tmp/script_8997.sh: 未找到

packer {
  required_plugins {
    docker = {
      version = ">= 0.0.7"
      source = "github.com/hashicorp/docker"
    }
  }
}
source "docker" "terraform" {
  image  = var.docker_image
  commit = true
}
build {
  name    = "learn-packer"
  sources = [
    "source.docker.terraform",
  ]
  provisioner "shell" {
    script = "scripts/test.sh"
    pause_before = "5s"
  }

  provisioner "shell" {
    inline = [
       "apk update",
       "apk add bash curl",

    ]
  }

  post-processor "docker-tag" {
  repository = "learn-packer"
  tags       = ["packer-test"]
  only       = ["docker.terraform"]
  }

}

variable "docker_image" {
  type    = string
  default = "hashicorp/terraform:latest"
}
cat scripts/test.sh 

#!/usr/bin/bash
echo "How are you?"

打包程序找不到脚本的原因可能是什么?

我 运行 遇到了同样的问题,并设法找到了原因:

这个错误很有误导性;未找到的实际文件是 shebang 中指向的二进制文件,而不是脚本本身。

Alpine 默认没有安装 bash,所以将它用作 shell 会失败。使用 /bin/sh 而不是为我修复它,即:

#!/bin/sh
echo "How are you?"