Questão nº 130
Questão de Engenharia de Software · CEBRASPE TCU 25 AUFC 2025 (nº 130)
Em relação a Docker e ElasticSearch, julgue os itens que se seguem.
Em um dockerfile de multi-stage build, a execução do comando apresentado a seguir resultará na cópia de quaisquer arquivos do stage builder que corresponderem ao padrão /app/target/*.jar, os quais serão adicionados com o nome /app/app.jar ao stage atual.
COPY --from=builder /app/target/*.jar /app/app.jar
Resposta comentada
O multi-stage build do Docker permite copiar arquivos de um estágio intermediário (aqui chamado builder) para o estágio final. A pegadinha está no comportamento do COPY com curingas (*): quando você usa um padrão, o Docker copia cada arquivo correspondente mantendo seu nome original, e o destino é tratado como um diretório — não como um arquivo renomeado.
- Correta: Errado. O comando tenta copiar "quaisquer arquivos" que correspondam ao padrão, mas o destino
/app/app.jaré interpretado como um diretório, não como um nome de arquivo único — ou seja, os arquivos seriam copiados para dentro de/app/app.jar/(que viraria uma pasta), e não renomeados paraapp.jar.
O trecho exato que torna o item errado é: "os quais serão adicionados com o nome /app/app.jar" — pois com curinga, o Docker não renomeia; ele copia cada arquivo com seu nome original para o diretório de destino.
Como ficaria certo: Em um dockerfile de multi-stage build, a execução do comando COPY --from=builder /app/target/*.jar /app/ resultará na cópia de quaisquer arquivos do stage builder que corresponderem ao padrão /app/target/*.jar, mantendo seus nomes originais no diretório /app/ do stage atual.
Fonte: CEBRASPE TCU 25 AUFC 2025 Auditor Federal de Controle Externo - Área de Controle Externo / Orientação: Auditoria de Tecnologia da Informação. Reproduzida para fins de estudo.