【问题标题】:Getting executable file not found in $PATH: un known error message在 $PATH 中找不到可执行文件:未知错误消息
【发布时间】:2021-01-05 07:18:45
【问题描述】:

在尝试运行 golang 项目的 docker 映像时,我在 $PATH 中找不到可执行文件:未知错误。以下是我的 docker 文件。

FROM golang:latest
LABEL maintainer = "Nisal Perera <xxx@sss.com>"
RUN mkdir -p /go/src/github.com/user/app/
COPY . /go/src/github.com/user/app/
WORKDIR /go/src/github.com/user/app/
RUN go get -u github.com/golang/dep/cmd/dep
#RUN dep init
RUN dep ensure
RUN go build
CMD ["go run main.go"]

我得到的错误如下

docker: Error response from daemon: OCI runtime create failed: container_linux.go:370: starting container process caused: exec: "go run main.go": executable file not found in $PATH: un
known.

请帮我解决这个问题。谢谢

【问题讨论】:

  • 1.永远,永远,永远使用go run main.go。 2.CMD 的参数必须是数组,而不是单个字符串。

标签: docker go dockerfile


【解决方案1】:

您尝试在其 exec form 中使用 CMD 子句,因此您必须拆分命令及其参数。接受的格式是

CMD ["executable","param1","param2"]

所以你的应该是

CMD ["go", "run", "main.go"]

【讨论】:

    【解决方案2】:

    您不需要使用go run ...,因为您之前运行过go build,构建的文件将以目录命名,看起来像它的app,试试CMD ["./app"]

    顺便说一句,在您的情况下,CMD 的正确用法是CMD ["go", "run", "main.go"],您遇到的错误与CMD 命令有关,它假设go run main.go 是一个文件,但事实并非如此。

    【讨论】:

      【解决方案3】:

      您收到此错误是因为文件“main.go”在执行“go run main.go”命令的工作目录中不可用。

      请检查 main.go 文件是否可用,如果是,请定义 main.go 文件的完整路径并尝试。

      【讨论】:

        猜你喜欢
        • 2022-09-23
        • 2021-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-10
        • 2020-03-31
        • 1970-01-01
        • 2018-08-18
        相关资源
        最近更新 更多