docker - 下载 .tgz 文件并将其解压缩到 Dockerfile 中的不同路径
问题描述
如何下载 .tgz 文件,然后将其解压缩到 Dockerfile 中的不同目录。遵循https://docs.docker.com/develop/develop-images/dockerfile_best-practices/中提到的 Dockerfile 最佳实践,我尝试了类似的方法:
RUN mkdir -p /usr/src/things && 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
解决方案
从命令中删除f
标志tar
,如下所示:
RUN mkdir -p /usr/src/things && 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 手册页
推荐阅读
- windows - 如何写入 BitLocker 加密卷的物理扇区?
- python - Django 路径不起作用,它会将我引导到错误的网站
- javascript - vue watch sublist如何变化或v-model
- javascript - 如何为我的应用获取 Shopify 商店产品的所有数据?
- c# - 当我更新现有数据时 System.Reflection.TargetException ERROR
- excel - Excel / Apache POI:如何转义 Excel 单元格的字符串?
- flutter - 如何使用 Dart::FFI 在颤振中使用 C++ 库?
- php - Foreach 2 var $_POST
- jquery - $,get 方法在 PHP 更新后不读取新数据
- c++ - 按 C++ 中的两个字段对结构的 std::vector 排序