alcatrão:Não posso ler:É um diretório no docker
Pergunta
Quero adicionar um arquivo (.tar.gz
) e descompacte-o durante a criação da imagem usando um Dockerfile.
ADD archive.tar.gz /archive.tar.gz
RUN tar xzf archive.tar.gz
Quando quero descompactar o arquivo, recebo a seguinte mensagem:
tar: /archive.tar.gz: Cannot read: Is a directory
tar: At beginning of tape, quitting now
tar: Error is not recoverable: exiting now
o que não faz sentido para mim, já que o arquivo archive.tar.gz
não é um diretório.
Solução
Depois de executar um commit intermediário da imagem do docker, pude ver que /archive.tar.gz
na verdade é um diretório.Isso significa que o docker extrai automaticamente os arquivos ao adicioná-los durante a criação da imagem.
Agora eu também poderia encontrar isso documentado em documentação do docker.
(editar:arquivos, por ex. .sql.gz
, não são descompactados ao adicionar)
Outras dicas
Se você quiser que o arquivo permaneça como está, use COPY
, não ADD
.
Para outros que se depararam com esse problema mais recentemente ao fazer referência controlo remoto URLs com seus ADD
comandos, isso é um problema com o Docker 17.06.0-ce (2017-06-28)
.
De Notas de lançamento do Dockers:
Observação:O Docker 17.06.0 tem um problema no construtor de imagens que causa uma alteração no comportamento da instrução ADD do Dockerfile ao fazer referência a um arquivo .tar.gz remoto.O problema será corrigido no Docker 17.06.1.