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

2024-01-04

我有一个 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(使用前将#替换为@)

为什么在生产环境中运行 Go 应用程序时建议使用“go build”而不是“go run”? 的相关文章

随机推荐

  • 用于 BERT 微调的优化器和调度器

    我正在尝试使用 BERT 微调模型 使用transformers库 我对优化器和调度程序有点不确定 首先 我明白我应该使用transformers AdamW而不是 Pytorch 的版本 另外 我们应该按照论文中的建议使用预热调度程序 因
  • 包含函数指针的类可以用作非类型模板参数吗?

    考虑下面的类S包含一个函数指针和一个constexpr object s使用 lambda 初始化该类 struct S void f constexpr S s 现在如果我写一个模板X具有 type 的非类型模板参数S 并实例化它s像这样
  • 流缓冲区 - Google BigQuery

    我正在开发一个 python 程序来使用 Google Dataflow 模板 我正在做的是将数据从 PubSub 写入 BigQuery pipeline options view as StandardOptions streaming
  • C++ 代码中的 const 和weak 属性

    我无法理解下面的编译错误 第一个文件是标题 test weak h ifndef TEST WEAK H define TEST WEAK H ifndef ASSEMBLER const char const TUTU attribute
  • 如何按日期对对象数组进行排序?

    我正在尝试对对象数组进行排序 每个对象包含 var recent id 123 age 12 start 10 17 13 13 07 id 13 age 62 start 07 30 13 16 30 日期格式为 mm dd yy hh
  • 使用 JavaScript 禁用引导选择选项

    我尝试使用 javascript 禁用我的特定引导选择选项 我知道如何禁用 正常选择选项 但是当使用引导选择时它不起作用 它被禁用 变灰 但我仍然可以选择它 这里jsfidle https jsfiddle net ybf5hpam 1
  • 使用 ImpersonateLoggedOnUser 移动文件

    我正在尝试移动文件 但出现此错误 System UnauthorizedAccessException 对路径的访问被拒绝 在 System IO Error WinIOError Int32 errorCode String MaybeF
  • 如何使用spring security(spring boot)实现Ldap身份验证

    我有以下代码 我正在尝试实现 ldap 身份验证 但我认为它没有发生 我的安全配置 EnableWebSecurity Configuration Order SecurityProperties ACCESS OVERRIDE ORDER
  • 如何使用 C# 的 ANTLR 获取 Lexer 和 Parser?

    似乎 ANTLR 支持 C 语言 但我不知道如何生成相关类 我搜索并看到存在 Visual Studio 扩展 但我不支持 2015 那么如何使用 ANTLR 手动为 C 生成词法分析器和解析器 VS 扩展主要用于语法突出显示和编辑器细节
  • jQuery UI 选项卡 - IE 中的圆角选项卡角

    我正在尝试从 AjaxControlToolkit 切换到 jQuery UI 选项卡以获得相当简单的选项卡元素 我 99 都掌握了 CSS 和主题 但我在尝试在 IE 中的选项卡上实现圆角时遇到了困难 jQuery UI 提供了更好的浏览
  • reinterpret_cast 类型双关实际上是未定义的行为吗?

    这种类型的双关语似乎被广泛持有reinterpret cast以某种方式被禁止 正确地说 未定义的行为 即 本国际标准没有提出要求的行为 https timsong cpp github io cppwp n4659 defns undef
  • TFS 传输层安全 1.1/1.2

    我们目前在 Windows Server 2012 R2 上使用 TFS 2015 3 使用 NARTAC 指定使用 TLS1 1 1 2 并禁用 TLS1 0 后 我们的构建层服务器无法连接到应用层服务器 有没有人有同样的问题并解决了 谢
  • 语义相关性算法 - python [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想找到两个同义词集之间的相关性 我遇到了许多算法 如 resnik lin wu palmer path 算法 leacock ch
  • 从 iPhone 上传文件时出现 POSIX 错误 12(“无法分配内存”)

    我正在开发一个 iPhone 应用程序 该应用程序涉及将相机中的完整照片 通常每张照片在 1 5 到 2 0 MB 之间 及其缩略图 小得多 上传到 Amazon S3 缩略图总是成功上传 但是有时完整图像则不然 当它们失败时 它们会失败并
  • Botframework - 调整机器人聊天的宽度[重复]

    这个问题在这里已经有答案了 Is it possible to resize the width of the chat for botframework Currently I m testing on a emulator Basica
  • 使用 Node JS 将数据从 Excel 导入到 MySql

    我想使用 NodeJS 读取 excel 并保存在 MySQL 数据库中 我不知道该使用什么库 我希望能够根据某些行和列读取 Excel 请帮我 您可以使用许多库 sheetjs xlsx excel js etc
  • iOS 的滑块视图

    Can someone help me with this scenario 有一个按钮 点击该按钮时 会滑动打开一个 UIView 点击的按钮仍在其左侧 再次点击此按钮时 使 UIView 向后滑动 你所描述的很简单 我们将从右侧滑入的视
  • RGB 图像的像素强度以及如何将其与整数相乘以查看灰度阴影

    我有一个 RGB 图像 有 4 种不同的颜色黑色 0 0 0 作为背景 绿色 106 136 93 蓝色 64 224 208 和棕色 168 124 85 当我将图像读取为灰度并使用 np unique 时 它会返回一个巨大的像素强度列表
  • 使用异步承诺处理 Guzzle 超时

    我正在发送多个异步承诺 并将 guzzle 超时设置为 30 我想知道如何捕获是否有任何承诺超时 以便我可以报告此错误 请参阅下面的代码 本质上 我想在超时之前使用我能做的任何响应 并捕获那些超时的响应 foreach apiRequest
  • 为什么在生产环境中运行 Go 应用程序时建议使用“go build”而不是“go run”?

    我有一个 Dockerfile 用来编译 Go 应用程序go build 我研究了一下 确实go build推荐用于生产 但是我无法找到正确的答案 我明白go run创建一个临时文件 并在应用程序终止时进行清理 但是如果我使用Docker