Dockerfile中wget下载文件后,tar解压为何提示文件或目录不存在?
解决Docker构建时tar解压.gz文件失败的问题
问题出在amazon/aws-lambda-python:3.9这个基础镜像上——它是基于Amazon Linux 2的极简镜像,默认没装gzip,而且自带的tar没有内置gzip解压支持,所以执行tar -xzf时会找不到gzip命令报错。
直接按下面的方式修改Dockerfile即可解决:
- 安装依赖时同时加上
gzip - 确保解压命令正确执行,还可以按需清理压缩包减少镜像体积
修改后的示例Dockerfile:
FROM amazon/aws-lambda-python:3.9 # 一次性安装wget、tar和gzip依赖 RUN yum install -y wget tar gzip # 下载geckodriver压缩包 RUN wget https://github.com/mozilla/geckodriver/releases/download/v0.32.0/geckodriver-v0.32.0-linux64.tar.gz # 可选:验证压缩包完整性,避免下载损坏文件 RUN sha256sum geckodriver-v0.32.0-linux64.tar.gz | grep "d899f8087b661a3457c8feb8b7081171c381d30e607ef0f7441e551a86461e5d" # 解压到Lambda能识别的路径(比如/usr/local/bin) RUN tar -xzf geckodriver-v0.32.0-linux64.tar.gz -C /usr/local/bin/ # 清理压缩包,减小镜像体积 RUN rm geckodriver-v0.32.0-linux64.tar.gz
内容的提问来源于stack exchange,提问作者Travis
相关产品推荐
相关产品推荐

