Sobes.tech
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:

  1. Escreve-se um Dockerfile, onde a imagem base costuma ser a oficial do golang ou alpine para um tamanho mínimo.
  2. 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.
  3. A imagem é enviada para um registo (Docker Hub, registo privado).
  4. 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.