Docker exec用户进程中的Golang app导致“没有这样的文件或目录”

问题描述 投票:2回答:3

我正在尝试创建在Go中开发的应用程序的docker镜像。我有一个名为myapp的二进制文件,如果我执行它然后它正常工作,我执行它:

./myapp

然后,把那个bin放在一个名为mydirectory的目录里,然后放入这个dockerfile:

# iron/go is the alpine image with only ca-certificates added
FROM iron/go

WORKDIR /

# Now just add the binary
ADD myapp /

ENTRYPOINT ["./myapp"]

然后键入以下命令创建docker镜像:

docker build -t myDockerHubUser/myapp .

然后,当我运行图像时,我收到以下消息:

standard_init_linux.go:185: exec user process caused "no such file or directory"

这是什么意思?我找到了一些与相同消息相关的帖子,但问题是我的bnary正确执行没有任何问题

ubuntu docker go
3个回答
5
投票

你最有可能:

  • 将二进制文件用于错误的平台
  • 二进制文件没有静态链接(没有所有必需的库)

您可以使用CGO_ENABLED=0静态构建二进制文件。


0
投票

容器/ myfile内部没有执行权限。你必须在dockerfile中做一个chmod + x / myfile。只需在ENTRYPOINT行之前添加以下语句即可。

运行chmod + x / myfile


0
投票

你必须在你的机器中构建docker里面的二进制文件。

FROM golang

ADD ./ /go/src/app

WORKDIR /go/src/app

RUN go get ./

RUN go build

CMD app
© www.soinside.com 2019 - 2024. All rights reserved.