ANÚNCIO

~/questoes/devops

Em um Dockerfile, qual instrução copia arquivos do host para o container?

Responda, confira o feedback e use o resultado para orientar sua revisão.
Para fixar

Copiando Arquivos para Containers com COPY no Dockerfile

Conceito central

A instrução COPY no Dockerfile permite transferir arquivos e pastas do seu computador (host) para dentro do container durante a construção da imagem. É essencial para incluir código-fonte, configurações e recursos que a aplicação precisa executar.

Por que essa resposta faz sentido

COPY é a instrução específica do Dockerfile para copiar arquivos do host para o container. Ela funciona durante o build da imagem, garantindo que todo arquivo necessário esteja disponível quando o container for executado. A sintaxe é simples: COPY arquivo /destino.

Armadilhas comuns

  • Confundir COPY com RUN cp - enquanto RUN executa comandos dentro do container, COPY é a forma correta e otimizada de trazer arquivos do host
  • Esquecer que COPY funciona durante o build da imagem - os arquivos precisam existir no seu computador no momento em que você executa docker build
  • Misturar COPY com ENV - muitos iniciantes pensam que variáveis de ambiente servem para copiar coisas, quando na verdade servem para configurar valores

Entenda as alternativas

A

ENV é usada para definir variáveis de ambiente dentro do container, não para copiar arquivos. Você a usaria para configurações como JAVA_HOME ou PATH, mas nunca para transferir arquivos.

B

COPY é exatamente a instrução correta. Ela copia arquivos e diretórios do seu computador para dentro do container durante a construção da imagem Docker.

C

EXPOSE apenas documenta qual porta o container vai usar, não copia nada. É como colocar uma placa dizendo que a porta existe, mas sem abri-la de verdade para o mundo externo.

D

Embora RUN cp tecnicamente copiasse arquivos, não é a forma correta no Dockerfile. COPY é muito mais eficiente, otimizada para Docker e deixa o código mais legível e profissional.

Dica prática: Em um Dockerfile real, você vai usar COPY logo após escolher a imagem base. Por exemplo: FROM openjdk:11 seguido de COPY ./app /app copia sua pasta app para dentro do container. Sempre especifique o caminho exato de destino.

Revise pensando: Se você quer que um arquivo .jar execute dentro do container, qual instrução do Dockerfile você usaria para trazê-lo do seu computador para lá?