Загрузка файла .tgz и извлечение его по другому пути в Dockerfile

#docker #dockerfile #tar

#docker #dockerfile #tar

Вопрос:

Как загрузить файл .tgz, а затем извлечь его в другой каталог в Dockerfile. Следуя рекомендациям для Dockerfile, упомянутым в https://docs.docker.com/develop/develop-images/dockerfile_best-practices /, Я пробовал что-то вроде:

RUN mkdir -p /usr/src/things amp;amp; curl -O https://example.com/big.tgz | tar -xvzf big.tgz -C /usr/src/things

При попытке создать образ docker я вижу следующую ошибку:

tar (child): big.tgz: Cannot open: No such file or directory tar (child): Error is not recoverable: exiting now tar: Child returned status 2 tar: Error is not recoverable: exiting now

Ответ №1:

Удалите f флаг из tar команды, например:

 RUN mkdir -p /usr/src/things amp;amp; curl -O https://example.com/big.tgz | tar -xvz -C /usr/src/things
 

Вывод из curl передается по конвейеру tar вместо записи в файл, но tar -f будет искать несуществующий файл big.tgz .

Смотрите варианты для -f, --file=ARCHIVE: Use archive file or device ARCHIVE

Источник: tar manpage