我有这么漂亮的Dockerfile:
来自高山
ADD ./service /
运行chmod + x /服务
EXPOSE 8000
ENTRYPOINT [“./ service”]使用这个Dockerfile我成功创建了图像,但是我有错误…
最后我明白了编译 linux/amd64 二进制文件 Goland 使用的应用程序 CGO Windows操作系统中的软件包不是一个好主意。我试图在Docker容器中启动的二进制文件总是引发错误 standard_init_linux.go:178: exec user process caused "exec format error" 。错误意味着有问题 OS/Arch 或者你使用损坏的文件。
linux/amd64
Goland
CGO
standard_init_linux.go:178: exec user process caused "exec format error"
OS/Arch
最后我决定在Docker容器中编译二进制文件。我的 Dockerfile 看起来像这样:
Dockerfile
FROM golang:1.11 WORKDIR /go/src/application ADD . . RUN go get [your_dependencies] RUN go build -o service ENV PORT=8000 CMD ["./service"]
我希望这篇文章对你有用!
什么是 SRC_DIR 价值而且确实如此 ./service 拥有可执行权限。 试着跑 chmod +x ./service 在主机上或在 Dockerfile 。
SRC_DIR
./service
chmod +x ./service