我有一個 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
,可以讓您每次都重新運行相同、一致的二進制文件,而不會發生意外更改。
- 1 回答
- 0 關注
- 197 瀏覽
添加回答
舉報
0/150
提交
取消