从头开始构建 docker 镜像时,需要静态二进制文件来防止执行过程中出现错误。但是,命令 RUN go build -o /go/bin/myapp 可能会生成因“没有此类文件或目录”错误而失败的二进制文件。
要克服此问题,需要以下标志:
RUN CGO_ENABLED=0 go build -o /go/bin/myapp -a -ldflags '-extldflags "-static"' .
说明:
同时使用 CGO_ENABLED=0 和 -ldflags '-extldflags " 非常重要-static"' 因为:
通过使用这两个标志,您可以确保生成的二进制文件是静态的并且不依赖于任何外部库。
以上是如何从头开始在 Go 中为 Docker 镜像构建静态二进制文件?的详细内容。更多信息请关注PHP中文网其他相关文章!