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:
-
Instruções ARG para argumentos de compilação:
FROM ubuntu:latest ARG APP_VERSION RUN echo "Versão de compilação: $APP_VERSION" -
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"] -
Passar ARG e ENV usando
--build-arge-edurante a construção/executar:docker build --build-arg APP_VERSION=1.2.0 . docker run -e PORT=9000 my_image -
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"] -
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.