ANÚNCIO

~/questoes/devops

Como copiar arquivos do projeto para dentro do container no Dockerfile?

Responda, confira o feedback e use o resultado para orientar sua revisão.
Aula de referência #05 – Como criar uma imagem Docker de uma SPA em React | Thi Code
Para fixar

Copiando arquivos para o container com COPY no Dockerfile

Conceito central

A instrução COPY é usada no Dockerfile para copiar arquivos e diretórios do seu computador (contexto de build) para dentro do container durante a construção da imagem. É essencial para levar seu código React, arquivos de configuração e outros recursos para o ambiente containerizado.

Por que essa resposta faz sentido

A instrução COPY é a forma padrão e recomendada de copiar arquivos locais para o container. Ela copia arquivos do contexto de build (seu projeto) para um caminho específico dentro do container, permitindo que a aplicação tenha acesso aos arquivos necessários.

Armadilhas comuns

  • Esquecer de definir o WORKDIR antes de usar COPY, o que pode fazer os arquivos caírem em um local inesperado no container
  • Confundir COPY com ADD e achar que ADD é sempre melhor (na verdade, COPY é preferido para arquivos locais)
  • Não incluir o arquivo .dockerignore, causando cópia de arquivos desnecessários como node_modules ou pasta build

Entenda as alternativas

A

Na verdade, é completamente possível copiar arquivos durante a construção da imagem. Essa é uma funcionalidade fundamental do Dockerfile, sem ela seria impossível levar seu código para dentro do container.

B

Exato! A instrução COPY é a forma correta de copiar arquivos do seu projeto local para dentro do container. Ela copia arquivos do contexto de build para o diretório de trabalho (WORKDIR) definido no Dockerfile.

C

Não existe uma instrução MOVE no Dockerfile. A instrução correta para copiar arquivos é COPY. Confundir nomes de instruções é um erro comum ao estudar Docker.

D

A instrução ADD é usada para casos mais específicos, como copiar arquivos compactados (tar, gzip, etc) ou URLs. Para arquivos locais simples, COPY é a opção recomendada por ser mais segura e previsível.

Dica prática: Em um Dockerfile de React, use COPY package.json ./ para copiar apenas o package.json primeiro, instale dependências, e depois COPY . . para copiar o resto do código. Isso aproveita o cache do Docker e torna builds mais rápidos.

Revise pensando: Qual é a diferença entre usar COPY para copiar package.json isoladamente versus copiar toda a pasta do projeto de uma vez?