deployment - 将 Golang 应用程序部署到 AWS OPSWORKS

标签 deployment go cloud chef-infra aws-opsworks

在过去的几个月里,我已经熟悉了 AWS OpsWorks 部署过程,因为它与 Node.js 有关 - Go 的部署似乎是另一种动物。

根据我收集到的信息,这是编译成功的 Go 部署所需要的:

  • 在EC2盒子上安装go
  • 从 GitHub 拉取私有(private)仓库
  • 引入所有依赖
  • 为 box 的 arch 编译主包
  • 用我使用的几个标志启动二进制文件

我读到的所有地方似乎都在吹捧 Go 部署的简便性,因为依赖项包含在二进制文件中,但这似乎暗示您正在您的开发环境中编译应用程序并将其推送到云端。这似乎不是一个适合整个开发团队的过程。

https://github.com/crowdmob/chef-golang-web-server-cookbook

我一直在尝试让 CrowdMob 的 Chef 脚本正常工作,但无济于事。我继续收到如下所示的错误:

[2014-08-01T16:08:22+00:00] WARN: Cookbook 'templates' is empty or entirely chefignored at /opt/aws/opsworks/current/merged-cookbooks/templates

在部署期间处理依赖关系的正确方法是什么?

是否有使用 Chef 将 Go 部署到 AWS 的既定实践?

最佳答案

使用 CircleCi、Travis 或您自己设置的 Jenkins 等持续集成服务。

关于持续集成服务

  1. 添加一个 github post commit 钩子(Hook)。
  2. 测试/构建二进制文件
  3. 创建 zip 文件作为工件

此时,您可以使用 AWS 命令​​行和从该版本创建的 zip 文件在 Elastic Beanstalk 上创建一个新版本。

venv/bin/aws elasticbeanstalk create-application-version ...

然后只需从 EB 仪表板中选择要部署的版本即可。

恕我直言,对于简单的服务,使用 Chef 有点矫枉过正。 Docker 提供了一个简单的工作流程。

关于deployment - 将 Golang 应用程序部署到 AWS OPSWORKS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25088417/

相关文章:

templates - Azure 数据工厂 V2 : auto-start trigger upon deployment?

google-app-engine - GoogleApps - 如何部署我的应用程序

go - 如何在 Golang 中将 Math.Pow 与整数一起使用

python - Openstack Neutron 命令工作流程

azure - 按内存自动缩放Azure云服务

deployment - 如何在 Azure 中仅部署辅助角色/Web 角色

go - 打印时如何取消引用字段?

go - 为什么我的程序在添加 time.sleep 时挂起?

android - 如何从 Parse.com 中删除整行并用新数据更新它

amazon-web-services - Elastic Beanstalk、不可变部署和 CloudFormation 的问题