Sobes.tech
Middle

Qual é a sua experiência em parametrização dinâmica de ficheiros Docker?

sobes.tech IA

Resposta da IA

Desenvolvi modelos de ficheiros Docker usando variáveis de ambiente e argumentos de compilação.

Apliquei os seguintes métodos:

  1. Instruções ARG para argumentos de compilação:

    FROM ubuntu:latest
    ARG APP_VERSION
    RUN echo "Versão de compilação: $APP_VERSION"
    
  2. Instruções ENV para variáveis de ambiente em tempo de execução:

    FROM alpine:latest
    ENV PORT=8080
    CMD ["sh", "-c", "ouvir na porta $PORT"]
    
  3. Passar ARG e ENV usando --build-arg e -e durante a construção/executar:

    docker build --build-arg APP_VERSION=1.2.0 .
    docker run -e PORT=9000 my_image
    
  4. Uso de construções multi-estágio para transferir valores entre etapas:

    # etapa de construção
    FROM golang:1.20 as builder
    ARG BUILD_TAG
    WORKDIR /app
    RUN go build -ldflags "-X main.version=$BUILD_TAG" -o app .
    
    # etapa final
    FROM alpine:latest
    COPY --from=builder /app/app /
    CMD ["/app"]
    
  5. Integração com sistemas CI/CD (por exemplo, GitLab CI, Jenkins) para substituir automaticamente parâmetros (versão da aplicação, ambiente, chaves API) durante a construção da imagem ou ao implantar o contêiner.

Esta abordagem permite criar imagens Docker mais flexíveis e reutilizáveis, adaptadas a diferentes ambientes e requisitos, sem necessidade de alterar o próprio Dockerfile.