Imagem Docker minimalista em Go (<2MB) que imprime "Full Cycle Rocks!!"
317
Imagem Docker minimalista em Go que imprime "Full Cycle Rocks!!" - Desafio Full Cycle.
Esta é uma imagem Docker extremamente leve (< 2MB) criada como parte do desafio Full Cycle. Ela demonstra o uso de multi-stage builds e a imagem scratch para criar containers otimizados.
docker run pedrovieira249/fullcycle
Saída esperada:
Full Cycle Rocks!!
docker run --rm pedrovieira249/fullcycle
docker run pedrovieira249/fullcycle:latest
latest - Versão mais recentescratch (imagem vazia)-ldflags="-s -w"# Etapa 1: Build
FROM golang:1.21-alpine AS builder
WORKDIR /app
COPY main.go .
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o fullcycle main.go
# Etapa 2: Imagem final
FROM scratch
COPY --from=builder /app/fullcycle /fullcycle
ENTRYPOINT ["/fullcycle"]
package main
import "fmt"
func main() {
fmt.Println("Full Cycle Rocks!!")
}
Se quiser construir a imagem localmente:
# Clone o repositório
git clone https://github.com/pedrovieira249/desafio-go.git
cd desafio-go
# Build
docker build -t pedrovieira249/fullcycle .
# Run
docker run pedrovieira249/fullcycle
| Abordagem | Tamanho |
|---|---|
| golang:1.21 | ~800MB |
| golang:1.21-alpine | ~300MB |
| Multi-stage + alpine | ~15MB |
| Multi-stage + scratch | ~1.8MB ✨ |
Separa o ambiente de compilação do ambiente de execução, reduzindo drasticamente o tamanho final.
Usa uma imagem Docker vazia como base - perfeita para binários estáticos.
CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w"
CGO_ENABLED=0: Remove dependências C-ldflags="-s -w": Remove símbolos de debugservices:
fullcycle:
image: pedrovieira249/fullcycle:latest
container_name: fullcycle-app
A imagem foi compilada para linux/amd64. Se precisar de outras arquiteturas:
docker buildx build --platform linux/amd64,linux/arm64 -t pedrovieira249/fullcycle .
Certifique-se de que está usando a arquitetura correta (amd64).
Este projeto é de código aberto e está disponível para fins educacionais.
Pedro Vieira
Projeto desenvolvido como parte do curso Full Cycle - @FullCycleSchool
Full Cycle Rocks!! 🚀
Imagem Docker otimizada • < 2MB • Multi-stage build • Scratch base
Content type
Image
Digest
sha256:b157b8330…
Size
535 kB
Last updated
11 months ago
docker pull pedrovieira249/fullcycle