我正在尝试创建在Go中开发的应用的docker映像。我有一个名为myapp的二进制文件,如果我执行它,然后它可以正常工作,请使用以下命令执行它:
./myapp
Run Code Online (Sandbox Code Playgroud)
然后,将那个垃圾桶放到一个单独的目录中,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"]
Run Code Online (Sandbox Code Playgroud)
然后输入以下内容来创建docker映像:
docker build -t myDockerHubUser/myapp .
Run Code Online (Sandbox Code Playgroud)
然后,当我运行图像时,我收到以下消息:
standard_init_linux.go:185: exec user process caused "no such file or directory"
Run Code Online (Sandbox Code Playgroud)
这是什么意思?我发现一些帖子与相同的消息有关,但事实是我的bnary正确执行,没有任何问题
您最有可能:
您可以用来CGO_ENABLED=0静态地构建二进制文件。
MB1*_*B11 -3
容器内 /myfile 没有执行权限。您必须在 dockerfile 内执行 chmod +x /myfile 。只需在 ENTRYPOINT 行之前添加以下语句即可。
运行 chmod +x /myfile