Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ao fazer deploys com Docker, muitas vezes queremos copiar vários diretórios de uma vez só, pra evitar criar várias camadas na imagem. A dúvida comum é se dá pra copiar vários diretórios em um único comando, mantendo a estrutura e evitando várias instruções COPY.
Segundo uma discussão no StackOverflow, o comando padrão 'COPY' aceita vários diretórios, mas copia o conteúdo, não os diretórios em si. Ou seja, se você fizer:
COPY dirone/ dirtwo/ dirthree/ ./
vai copiar o conteúdo de cada um, não os diretórios de forma direta. Para copiar os diretórios completos, incluindo a estrutura, uma abordagem é criar uma pasta temporária e mover os diretórios lá, ou então usar scripts de build para automatizar esse processo. Sem esse critério, a solução pode parecer simples no começo e cara no suporte.
No meu entendimento, essa é uma questão de trade-off entre simplicidade e controle. Usar uma única instrução COPY com múltiplos diretórios funciona, mas precisa estar atento ao resultado desejado. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar.
Para quem trabalha com deploys mais otimizados, vale considerar também ferramentas de build que gerenciem esse processo de forma mais eficiente, especialmente se a quantidade de diretórios é grande. Assim, evita-se criar camadas desnecessárias e garante-se maior controle. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois.
Se a sua estratégia envolve cópia de vários diretórios, qual método vocês têm usado? Preferem scripts, multi-stage builds ou algo mais automatizado? Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar.
concordo com o felipe, se a estrutura muda bastante, criar uma rotina de build que automatize é mais seguro. o risco de erro manual é grande.
Boa, mas isso dá trabalho depois se precisar fazer rollback ou ajustes na estrutura. Já passei por isso, e às vezes um script de build ajuda bastante.
e na hora de copiar o conteúdo, atenção ao cache do Docker. se alterar conteúdo, pode precisar invalidar as camadas pra garantir a atualização sem problemas.
no meu time a gente usa um script que monta tudo antes de build, assim evita camadas extras e facilita ajustes. funciona bem pra esse tipo de coisa.