Criar uma aplicação Go

Especificar a versão do Go

Por predefinição, o buildpack Go usa a versão estável mais recente do compilador Go. Se a sua aplicação precisar de uma versão específica, pode usar a variável de ambiente GOOGLE_GO_VERSION para fornecer uma restrição semver que será usada para selecionar uma versão Go disponível.

pack build sample-go --builder=gcr.io/buildpacks/builder \
  --env GOOGLE_GO_VERSION="17.x.x"

Sinalizações de compilação

O buildpack Go compila a origem da sua aplicação num ficheiro executável através do go build command. As seguintes variáveis de ambiente podem ser usadas para configurar o comportamento de compilação:

  • GOOGLE_BUILDABLE Especifica o caminho para uma unidade compilável. Exemplo: ./maindir para Go cria o pacote com raiz em maindir.

  • GOOGLE_CLEAR_SOURCE Omita o código fonte da imagem da aplicação. Se a aplicação depender de ficheiros estáticos, como modelos Go, a definição desta variável pode fazer com que a aplicação tenha um comportamento anormal. Exemplo: true, True, 1 limpam a origem.

  • GOOGLE_GOGCFLAGS Transmitido a go build e go run como valor -gcflags sem interpretação. Exemplo: all=-N -l ativa a análise de condição de corrida e altera a forma como os caminhos dos ficheiros de origem são registados no ficheiro binário.

  • GOOGLE_GOLDFLAGS Transmitido para go build e go run como valor -ldflags sem interpretação. Exemplo: -s -w é usado para remover e reduzir o tamanho binário.

Gerir dependências

Recomendamos que use módulos Go para gerir dependências na sua app Go. O buildpack Go usa o comando go build para criar a sua app e, por isso, corresponde ao comportamento do próprio Go. Para garantir que a sua app usa o modo compatível com módulos, deve incluir um ficheiro go.mod na raiz da aplicação.

Fornecimento de dependências

A venda de terceiros copia os pacotes que a sua app usa para o diretório da aplicação, em vez de transferir módulos das respetivas origens durante o processo de compilação. O Go fornece o comando go build para fornecer os pacotes de que a sua app precisa num diretório denominado vendor no diretório raiz da app.

Configure o ponto de entrada da aplicação

Por predefinição, o buildpack do Go configura a entrada do contentor da aplicação para invocar o executável main produzido quando compila a origem da aplicação. Se precisar de substituir esta opção, pode fazê-lo fornecendo um Procfile ou transmitindo a variável de ambiente GOOGLE_ENTRYPOINT.

Variáveis de ambiente

O buildpack Go suporta as seguintes variáveis de ambiente para personalizar o seu contentor

GO

Consulte a documentação do Go sobre variáveis de ambiente

Exemplo: GOFLAGS=-flag=value transmite comandos -flag=value para go.