我有一个 Dockerfile,用来编译 Go 应用程序go build
。我研究了一下,确实go build
推荐用于生产。
但是我无法找到正确的答案。
我明白go run
创建一个临时文件,并在应用程序终止时进行清理。
但是如果我使用Docker,为什么不好用go run
代替go build
?
几个原因:
- Go 应用程序不需要 Go 工具链,就像 C 应用程序不需要一样
gcc
。如果你使用go build
,你可以只部署一个二进制文件;如果你使用go run
,你必须安装工具链。
-
go run
每次运行时都会不必要地编译应用程序,从而增加启动时间。
-
go run
将应用程序分叉到一个新进程,通过模糊 PID 和退出状态使进程管理变得不必要的复杂化。
-
go run
当您只想运行应用程序时,有可能意外地吸收代码更改。使用go build
仅当您需要新的二进制文件时,您才可以每次重新运行相同的、一致的二进制文件,而不会出现意外的更改。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)