使用 Go 应用程序构建 Docker 镜像时,遇到“找不到包”错误可能是令人沮丧。让我们深入研究这个问题并提供解决方案。
当 Dockerfile 将项目文件复制到映像根目录而没有安装依赖项或正确构建二进制文件时,就会出现此错误。这种不匹配会导致系统搜索目标位置 (/go/bin/myapp) 中不存在的二进制文件。
要解决此问题,我们建议使用如下所示的 Dockerfile 结构:
FROM golang:1.9.2 ADD . /go/src/myapp WORKDIR /go/src/myapp RUN go get myapp RUN go install ENTRYPOINT ["/go/bin/myapp"]
此 Dockerfile 将:
要进一步调试问题,您可以使用 docker exec 运行 ls 或任何其他命令。例如:
docker exec <image name/hash> ls
此外,您可以使用以下命令在生成的图像中进入 shell:
docker run --rm -it <image hash/name> /bin/sh
这使您可以探索图像并更深入地了解其结构。
以上是为什么我的 Docker 镜像找不到我的 Go 包:“找不到包”错误的解决方案的详细内容。更多信息请关注PHP中文网其他相关文章!