如何在 rhel7 docker 构建环境中解压缩 zip 文件 - 尽管在操作系统中未找到解压缩命令

Lod*_*ijk 7 docker

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

RUN unzip myzipfile.zip
Run Code Online (Sandbox Code Playgroud)

在脚本的该行上,它失败并出现以下错误:

/bin/sh: unzip: command not found
Run Code Online (Sandbox Code Playgroud)

这是在 Red Hat Enterprise Linux 7 上进行的,基础 Docker 镜像也是 RHEL7 基础镜像。

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

如果有任何方法可以在不需要安装任何东西的情况下执行此操作,那就更好了,因为我认为我没有权限这样做,即使我这样做了,Docker 构建发生的服务器也没有连接到互联网。

小智 3

您必须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
    
    Run Code Online (Sandbox Code Playgroud)