在 Github 上查看

运行 Golang 应用

学习如何在 Amphitheatre 上部署 Golang 应用程序

在 Amphitheatre 上运行应用程序实际上是找出如何将其打包成可部署的镜像。一旦打包完 成,就可以将其部署到 Amphitheatre 平台。

示例应用程序

您可以从 GitHub 存储库 获 取示例的代码。只需运行以下命令以获取本地副本:git clone https://github.com/amphitheatre-app/amp-example-go

amp-example-go 应用程序是一个小型示例,正如您所期望的那样。它是一个 Go 应用程 序,会循环打印 'Hello world'。以下是 main.go 中的所有代码:

package main

import (
	"fmt"
	"time"
)

func main() {
	for {
		fmt.Println("Hello world!")
		time.Sleep(time.Second * 1)
	}
}

构建应用程序

与大多数 Go 应用程序一样,简单的 go build 将创建一个可运行的二进制文件。因此, 原始应用程序可以正常运行。现在,将其打包以供 Amphitheatre 使用。

安装 Amphitheatre

我们已准备好开始使用 Amphitheatre,并且这意味着我们需要 amp,这是用于管理 Amphitheatre 上应用程序的 CLI 应用程序。如果您已经安装了它,请继续。如果没有,请 跳转到 我们的安装指南

初始化 Character

要在 Amphitheatre 上启动应用程序,请在包含源代码的目录中运行 amp init。这将通 过检查您的源代码为您创建和配置一个 Character,然后提示您进行部署。

$ amp init

Scanning source code
 Detected Go app
 Using the following build configuration
         Builder: paketobuildpacks/builder:base
         Buildpacks: gcr.io/paketo-buildpacks/go
Wrote config file .amp.toml
Your Character is ready. run with `amp run`
...

首先,此命令会扫描您的源代码以确定如何构建部署映像,以及识别应用程序所需的任何其 他配置,例如密钥和暴露的端口。

扫描源代码并打印结果后,amp 会为您创建一个 Character,并将您的配置写入一个 .amp.toml 文件。然后,您将被提示构建和部署您的 Character。一旦完成,您的应用程 序将在 Amphitheatre 上运行。

在 .amp.toml 中

.amp.toml 文件现在包含用于部署您的 Character 的默认配置。如果我们查看 .amp.toml 文件,可以在其中看到:

name = "amp-example-go"
version = "0.0.2"
authors = ["Eguo Wang <wangeguo@gmail.com>"]
edition = "v1"
description = "A simple Golang example app"
readme = "README.md"
homepage = "https://github.com/amphitheatre-app/amp-example-go"
repository = "https://github.com/amphitheatre-app/amp-example-go"
license = "Apache-2.0"
license-file = "LICENSE"
keywords = ["example", "golang", "getting-started"]
categories = ["example"]

如果该文件存在,amp 命令将始终引用当前目录中的此文件,特别是开始时的 Character 名称值。该名称将用于标识 Character 到 Amphitheatre 平台。文件的其余部分包含部署 Character 时要应用的设置。

有关更多选项,请参阅 Paketo Go Buildpack 文档

部署到 Amphitheatre

要部署您的 Character,请运行:

amp run

这将查找我们的 .amp.toml 文件,并从中获取 Character 名称 amp-example-go。然 后,amp 将开始部署 Character 到 Amphitheatre 平台。amp 将在完成时返回到命令