为什么在生产环境中运行 Go 应用程序时建议使用 `go build` 而不是 `go run`?

我有一个 Dockerfile,用于编译 Go 应用程序go build。我研究过,确实go build被推荐用于生产。

但是我找不到一个正确的答案来解释为什么。

我了解go run会创建一个临时文件,该文件会在应用程序终止时进行清理。但是,如果我使用的是 Docker,为什么使用go run而不是Docker 不好go build呢?


江户川乱折腾
浏览 204回答 1
1回答

MYYA

几个原因:Go 应用程序不需要 Go 工具链,就像 C 应用程序不需要gcc. 如果你使用go build,你可以只部署一个二进制文件;如果使用go run,则必须安装工具链。go run每次运行时都会不必要地编译应用程序,从而增加启动时间。go run将应用程序分叉到一个新进程,通过模糊 PID 和退出状态使进程管理不必要地复杂化。go run当您只打算运行应用程序时,可能会意外吸收代码更改。仅在您需要新的二进制文件时使用go build,可以让您每次都重新运行相同、一致的二进制文件,而不会发生意外更改。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go