Senior
Podes falar sobre o deployment via Docker — como funcionou?
sobes.tech IA
Resposta da IA
A implementação através do Docker geralmente baseia-se na conteinerização da aplicação, o que permite empacotar todas as dependências e o ambiente de execução numa única imagem. Na minha experiência com Golang, isto era assim:
- Escreve-se um Dockerfile, onde a imagem base costuma ser a oficial do golang ou alpine para um tamanho mínimo.
- No Dockerfile, constrói-se o binário da aplicação dentro do contêiner (build multi-stage), para obter na etapa final uma imagem mínima com apenas o binário e os ficheiros necessários.
- A imagem é enviada para um registo (Docker Hub, registo privado).
- No servidor ou no orquestrador (por exemplo, Kubernetes), inicia-se um contêiner a partir desta imagem.
Exemplo de Dockerfile para uma aplicação Go:
# Etapa 1: Build
FROM golang:1.20-alpine AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp
# Etapa 2: Run
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/myapp .
CMD ["./myapp"]
Esta abordagem garante a reprodutibilidade do ambiente, simplifica o deployment e a escalabilidade.