将 .zip 转换为 tar.gz inside dockerfile[solve]

Convert .zip into tar.gz inside dockerfile[solve]

我得到了 docker 下载 .zip 文件夹的文件,因为 docker 容器没有 apt-get。我无法 解压 它,但似乎 .tar.gz 转换嵌入在 docker 文件中。

如何将 docker 文件中的 .zip 转换为 .tar.gz?

还有其他选择吗? gunzip 也不起作用。

somezipfile.zip has more than one entry -- unchanged

Dockerfile部分

RUN curl -LJO http://somelink.com/verynew_python.zip

RUN gunzip -S .zip verynew_python.zip
ADD verynew_python.tar.gz /usr/bin
RUN chmod +x  /usr/bin/verynew_python/bin/python3.7

抱歉,我无法 post 所有 docker 文件,但这是最重要的部分。我想把 python3.7 作为主要 python.. 也没有 wget。

你的 docker 容器有 wget 吗?您可以下载 unzip 然后 运行 它!

您可以在 docker 容器中安装软件包 - 如果您可以自由选择这样的作品:

RUN apk add --no-cache unzip

WORKDIR /tmp
COPY testfile.zip .
RUN unzip testfile.zip
RUN rm testfile.zip
RUN tar czvf testfile.tgz *

这导致:

$ docker run -ti x sh
/tmp # ls
testfile      testfile.tgz
/tmp #

这很不优雅但有效。如果您的基础映像来自 docker hub,您可以查找它是否构建在发行版上,如果是,它是哪个发行版,然后为它选择“正确的”包管理器——通常是 apkyumapt.

请记住 - 为了保持图像小 - 包缓存通常不可用,您需要像 apt update 一样获取它们,或者必须使用像上面那样的非缓存方法。