gpt4 book ai didi

go - Golang应用的部署策略,如何在生产环境中运行Golang应用

转载 作者:行者123 更新时间:2023-12-01 21:16:36 27 4
gpt4 key购买 nike

我有一个golang网络应用,需要对其进行部署。我正在尝试找出有关如何在生产环境中运行golang应用程序的最佳实践。我现在的操作方式非常简单,

  • 只是将生成的二进制文件上传到生产环境,而实际上没有
    prod上的源代码。

  • 但是我发现了一个问题,我的源代码实际上是从源代码读取 config/<local/prod>.yml配置文件。如果我只是上传没有源代码的二进制文件,则该应用程序将无法运行,因为它缺少配置。所以我想知道什么是最佳实践。
    我想到了几个解决方案:
  • 上传源代码,并从源
  • 二进制或构建
  • 仅上传二进制文件和配置文件。
  • yml config移到Env Variables,但是我认为使用此解决方案,代码的结构将更少,因为如果您有大量的配置,那么env变量将很难管理。

  • 提前致谢。

    最佳答案

    我认为应用程序最常见的部署策略是尝试遵守12因子应用程序methodology
    因此,在这种情况下,如果您的YAML文件是配置文件,则最好将配置放在环境变量(ENV vars)上。因此,当您在容器上部署应用程序时,从ENV vars配置运行中的实例比将配置文件复制到容器更容易。
    但是,在编写系统软件时,最好遵守所用操作系统定义的文件系统层次结构。如果使用的是类似Unix的系统,则可以通过在终端上键入man hier来读取层次结构。通常,我将编译后的二进制文件安装在/usr/local/bin目录中,并将配置放入/usr/local/etc中。
    为了在生产环境中进行部署,我创建了一个简单的Makefile,它将执行构建和安装过程。如果部署环境是裸机服务器或VM,则通常使用Ansible通过ansible-playbook进行部署。剧本将从代码存储库中获取源代码,然后通过运行make命令来构建,编译和安装软件。
    如果将应用程序部署在容器上,建议您创建一个镜像并使用multi-stage builds,这样在生成二进制文件时所需的源代码和其他工具将不在生产环境中,并且镜像大小会更小。但是,正如我之前提到的,从ENV变量而不是配置文件中读取应用程序配置是一种常见的做法。如果应用程序有很多要配置的内容,则可以在构建镜像时将文件复制到镜像。

    关于go - Golang应用的部署策略,如何在生产环境中运行Golang应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63627469/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com