我正在尝试创建在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正确执行没有任何问题
你最有可能:
您可以使用CGO_ENABLED=0
静态构建二进制文件。
容器/ myfile内部没有执行权限。你必须在dockerfile中做一个chmod + x / myfile。只需在ENTRYPOINT行之前添加以下语句即可。
运行chmod + x / myfile
你必须在你的机器中构建docker里面的二进制文件。
FROM golang
ADD ./ /go/src/app
WORKDIR /go/src/app
RUN go get ./
RUN go build
CMD app