Nesta página

Go

A Guara Cloud suporta totalmente aplicacoes Go. A natureza compilada do Go o torna ideal para deploys em containers — produzindo binarios pequenos, rapidos e autocontidos.

Versoes suportadas

As seguintes versoes do Go sao detectadas automaticamente:

  • Go 1.21
  • Go 1.22
  • Go 1.23

A versao e detectada automaticamente pela diretiva go no seu arquivo go.mod.

// go.mod
module my-app

go 1.23

Deploy com Dockerfile

Um build multi-stage e a abordagem recomendada para aplicacoes Go. Ele compila seu binario em um ambiente Go completo e depois copia apenas o binario para uma imagem de runtime minima.

FROM golang:1.23-alpine AS build

WORKDIR /app

COPY go.mod go.sum ./
RUN go mod download

COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -o server .

FROM alpine:3.19

WORKDIR /app
COPY --from=build /app/server .

EXPOSE 3000

CMD ["./server"]

Deploy com Buildpack

Se o seu repositorio nao contiver um Dockerfile, a Guara Cloud detecta automaticamente seu projeto Go pela presenca de um arquivo go.mod ou go.work.

A deteccao automatica vai:

  1. Detectar a versao do Go pelo go.mod
  2. Baixar dependencias com go mod download
  3. Compilar sua aplicacao (Go workspaces via go.work sao suportados)
  4. Executar o binario compilado diretamente

Suporte a CGO esta disponivel quando sua aplicacao requer dependencias C.

Configuracao de porta

Sua aplicacao deve escutar na porta configurada nas configuracoes do servico. O padrao e 3000, mas voce pode altera-lo a qualquer momento para corresponder a sua aplicacao.

port := os.Getenv("PORT")
if port == "" {
    port = "3000"
}
http.ListenAndServe(":"+port, nil)

Estrutura de projeto exemplo

my-go-app/
  go.mod
  go.sum
  main.go
  internal/
    handlers/
    models/
  Dockerfile          # opcional — omita para usar Buildpack

Variaveis de ambiente

Estas variaveis de ambiente sao comumente usadas em deploys Go:

VariavelValor recomendadoDescricao
PORTDefinido pela plataformaA porta na qual sua aplicacao deve escutar
CGO_ENABLED0Produz um binario estaticamente linkado (sem deps C)
GOOSlinuxSistema operacional alvo para compilacao cruzada

Erros comuns