Semelhante a esta pergunta , mas ao copiar de um FROM
destino anterior ( fonte ):
COPY --from=sqitch-build /app .
Isso funcionou bem até recentemente, quando começou a emitir este erro:
ERROR: failed to solve: cannot copy to non-directory: /var/lib/buildkit/runc-overlayfs/cachemounts/buildkit3355209005/bin
Eu tentei isso, mas recebi o mesmo erro:
COPY --from=sqitch-build /app /
Não tenho certeza do que não gosta. Posso contornar isso criando um separado COPY
para cada subdiretório:
COPY --from=sqitch-build /app/lib /lib
COPY --from=sqitch-build /app/bin /bin
Mas isso parece desnecessário. Algo mudou recentemente no Docker para impactar as regras para instruções COPY?
Provavelmente o que mudou foi sua imagem base do Docker. Distribuições recentes do Linux substituíram o
/bin
diretório por um link simbólico/bin -> /usr/bin
. Seu erro e solução são consistentes com/
esse link.falha porque o Docker não copiará
/app/bin
(um diretório) por meio/bin
de um link simbólico.é bem-sucedido porque o Docker seguirá o link simbólico no destino
/bin
e copiará a fonte/app/bin
no destino/usr/bin
.Eu tive o mesmo problema e o problema é que não configurei o WORKDIR no Dockerfile
O exemplo usando este operador no projeto Python: