为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
江户川乱折腾 2022-05-23 17:44:24
我有一个 Dockerfile,用于编译 Go 应用程序go build。我研究过,确实go build被推荐用于生产。但是我找不到一个正确的答案来解释为什么。我了解go run会创建一个临时文件,该文件会在应用程序终止时进行清理。但是,如果我使用的是 Docker,为什么使用go run而不是Docker 不好go build呢?
查看完整描述

1 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

几个原因:

  • Go 应用程序不需要 Go 工具链,就像 C 应用程序不需要gcc. 如果你使用go build,你可以只部署一个二进制文件;如果使用go run,则必须安装工具链。

  • go run每次运行时都会不必要地编译应用程序,从而增加启动时间。

  • go run将应用程序分叉到一个新进程,通过模糊 PID 和退出状态使进程管理不必要地复杂化。

  • go run当您只打算运行应用程序时,可能会意外吸收代码更改。仅在您需要新的二进制文件时使用go build,可以让您每次都重新运行相同、一致的二进制文件,而不会发生意外更改。


查看完整回答
反对 回复 2022-05-23
  • 1 回答
  • 0 关注
  • 203 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号