排查 Docker Build for Go 应用程序中的“找不到包”错误
使用 Go 应用程序构建 Docker 映像有时会导致“找不到包”错误。为了了解原因并找到解决方案,让我们检查提供的 Dockerfile 和问题的根本原因。
您提供的 Dockerfile 将所有文件复制到映像的根目录,包括您的 myapp 文件夹。虽然这看起来似乎是正确的,但实际上在尝试构建 Go 应用程序时会产生问题。
复制文件后,运行 go build myapp。但是,Go 编译器期望应用程序代码出现在 /go/src/myapp 目录中。由于您没有指示 Dockerfile 安装任何依赖项或将代码移动到预期位置,因此它无法找到 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 将执行以下操作:
按照以下步骤,您的Dockerfile 将正确安装和构建 Go 应用程序,消除“找不到包”错误。
其他故障排除提示
如果仍然遇到问题,请考虑使用 docker exec检查图像的内容并进一步诊断问题。您还可以进入生成图像的 shell 来更好地了解环境。
以上是为什么我的 Go Docker 构建失败并出现'找不到包”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!