如何在 rhel7 docker 构建环境中解压 zip 文件 - 虽然在操作系统中找不到解压命令

如何在 rhel7 docker 构建环境中解压 zip 文件 - 虽然在操作系统中找不到解压命令

作为 docker 构建的一部分,我在脚本中有一行如下内容:

RUN unzip myzipfile.zip

脚本中的该行失败并出现以下错误:

/bin/sh: unzip: command not found

这是在 Red Hat Enterprise Linux 7 上,并且基本 Docker 映像也是 RHEL7 基本映像。

如果 Docker 构建环境中没有 unzip 实用程序,那么我该如何解压缩某些内容?unzip 存在于执行构建的服务器上,但我认为这没有帮助。是否有其他可以解压缩文件的实用程序,或者是否需要在基础映像中安装 unzip?

如果有任何方法可以做到这一点而不需要安装任何东西,那就更好了,因为我认为我没有权限这样做,即使我有权限,Docker 构建所在的服务器也没有连接到互联网。

答案1

您必须unzip使用进行安装yum install unzip。如果您不想unzip出现在最终图像中,您有以下几种选择:

  1. 如果文件来自构建机器,您可以先在那里将其解压。
  2. 如果文件来自构建机器并且您可以更改它,请将其重新打包tar.gz并使用ADD myfile.tar.gz /some/folder,Docker 将在那里自动将其解压。
  3. 使用多阶段构建安装unzip,准备文件,然后在第二阶段复制文件。

    FROM registry.access.redhat.com/rhel7/rhel AS builder
    RUN yum install unzip
    ADD myfile.zip /dist
    RUN cd /dist && unzip myfile.zip && rm myfile.zip
    
    FROM registry.access.redhat.com/rhel7/rhel
    COPY --from=builder /dist/ /target
    

相关内容