我在Go项目的src目录下有一个docker文件。我通过运行GOOS=linux go build -o main cmd/*.go
Dockerfile预构建了可执行文件:
FROM alpine:latest
COPY main .
COPY configs/. .
EXPOSE 8081
CMD ["/main"]
Docker构建它没有任何错误,但是当尝试用docker run -p 8081:8081 -it myService
启动容器时,我得到了:exec /main: no such file or directory
我通过docker export
检查了容器文件,主可执行文件在根文件夹中,但docker说没有这样的文件或目录。我尝试将/main
更改为.main
,但没有帮助。
1条答案
按热度按时间qxgroojn1#
您的工作目录不是必需的
/
目录。因此,您应该使用
CMD ["./main"]
而不是CMD ["/main"]
或COPY main /main
而不是COPY main .
。重要的一点是:你应该在你的Dockerfile中编译你的二进制文件,而不是复制这个。如果你只是复制二进制文件,它将取决于你编译它的初始环境,并且可能与你的Dockerfile中使用的os不兼容。
试试这样的: