Imagem Docker, para build de aplicações Go, com suporte a cross-compile para linux/amd64 e linux/arm64.
Este repositório contém uma imagem Docker otimizada para build de aplicações Go.
A imagem é projetada com foco em:
1.23.4/golang:1.23.4-bookwormgo-builder:1.23.4/src/go/pkg/mod/root/.cache/go-buildcurl - Cliente HTTPca-certificates - Certificados SSL/TLSgit - Controle de versãomake - Ferramenta de buildfile - Identificação de tipos de arquivopkg-config - Configuração de pacotesbuild-essential - Ferramentas de compilaçãogcc-aarch64-linux-gnu - Compilador para ARM64gcc-x86-64-linux-gnu - Compilador para x86_64Esta imagem oferece suporte nativo para cross-compile entre arquiteturas:
linux/amd64 e linux/arm64Nota: O Dockerfile inclui compiladores cross-compile, mas por padrão o docker build só gera a imagem para a arquitetura atual. Para gerar imagens para múltiplas arquiteturas, use docker buildx build --platform.
# Construir a imagem Go 1.23.4 (arquitetura atual)
cd 1.23.4
docker build -t go-builder:1.23.4 .
# Construir para múltiplas arquiteturas (requer Docker buildx)
docker buildx build --platform linux/amd64,linux/arm64 -t go-builder:1.23.4 .
# Estágio de construção
FROM maiconschmitz/go-builder:1.23.4 AS builder
# Copiar os arquivos go.mod e go.sum
COPY go.mod go.sum ./
# Baixar as dependências
RUN go mod download
# Copiar todo o código-fonte
COPY . .
# Compilar a aplicação
RUN CGO_ENABLED=0 GOOS=linux go build -o dist/app main.go
# Estágio de execução
FROM alpine:latest
# Define o fuso horário
ENV TZ=America/Sao_Paulo
WORKDIR /app
# Instalar o tzdata para configurar o fuso horário e adicionar um usuário não-root
RUN apk add --no-cache tzdata && \
adduser -D app
# Instalar os certificados de autoridades de certificação (CA)
RUN apk --no-cache add ca-certificates
# Copiar apenas o binário necessário do estágio anterior
COPY --from=builder /src/dist/app /app/
# Mudar para o usuário não-root
USER app
# Comando padrão de inicialização
CMD ["./app"]
version: '3.8'
services:
app:
build:
context: .
dockerfile: Dockerfile
ports:
- "8080:8080"
environment:
- CGO_ENABLED=0
volumes:
- .:/src
Content type
Image
Digest
sha256:6c2c5a247…
Size
336.2 MB
Last updated
3 months ago
docker pull maiconschmitz/go-builder