Go

Docker & Containerization

Dockerfile, multi-stage builds, otimização de imagens, docker-compose, orquestração de containers

20 perguntas de entrevista·
Senior
1

Qual é a principal razão para usar um multi-stage build em uma aplicação Go?

Resposta

O multi-stage build permite separar o ambiente de compilação da imagem final. A etapa de build contém o SDK completo do Go (várias centenas de MB), enquanto a imagem final contém apenas o binário compilado. Isso reduz drasticamente o tamanho da imagem (de ~800MB para alguns MB) e minimiza a superfície de ataque ao eliminar ferramentas de build desnecessárias em produção.

2

Qual imagem base é recomendada para uma aplicação Go em produção para minimizar o tamanho e a superfície de ataque?

Resposta

A imagem scratch é uma imagem vazia sem sistema operacional. Go compila para binários estáticos que não precisam de libc ou outras dependências do sistema, o que permite usar scratch. Isso produz as menores imagens possíveis (alguns MB) e oferece a melhor segurança, pois não há nenhuma ferramenta ou shell explorável. Distroless e alpine são alternativas válidas, mas menos otimizadas.

3

Quais flags de compilação do Go são necessárias para criar um binário compatível com uma imagem scratch?

Resposta

CGO_ENABLED=0 desativa o cgo, forçando o Go a usar implementações pure Go para pacotes como net e os/user. Sem isso, o binário teria dependências dinâmicas com libc. GOOS e GOARCH especificam a plataforma de destino. Esses flags combinados produzem um binário totalmente estático sem dependências externas, ideal para scratch.

4

Como otimizar o cache das layers do Docker ao fazer o build de uma aplicação Go?

5

Qual é a vantagem de usar as imagens Google Distroless para Go em comparação com scratch?

+17 perguntas de entrevista

Domine Go para sua proxima entrevista

Acesse todas as perguntas, flashcards, testes tecnicos, exercicios de code review e simuladores de entrevista.

Comece gratis