Я бы хотел, чтобы этот очень простой пакет Go работал в контейнере Docker с использованием скретч (или минимального) образа.
package main
import (
"fmt"
"os/exec"
)
func main() {
cmd := "host"
args := []string{"-t", "ns", "google.com"}
output, err := exec.Command(cmd, args...).Output()
if err != nil {
fmt.Println(err)
}
fmt.Println(string(output))
}
Мой оригинальный файл Docker выглядит следующим образом:
FROM scratch
ADD gohost /
CMD ["/gohost"]
Это приводит к exit code 0: exec: "host": executable file not found in $PATH
Я полагаю, это означает, что мне нужно ADD
/ usr / bin / host и установить ENV
на добавленном хосте ... но все случайные комбинации, которые я пробовалэтого не удалось ..
Я также попытался просто изменить cmd := "host"
, чтобы он указывал на двоичный файл хоста, который я добавил (cmd := "/host"
), но, похоже, это тоже невозможно.
Кроме того, я не уверен, что это актуально, но важно, чтобы бинарный файл Go создавался с env GOOS=linux GOARCH=arm64 go build
.