Назад | Перейти на главную страницу

Как распаковать zip-файл в среде сборки докеров rhel7 - команда unzip не найдена, хотя она находится в ОС

Как часть сборки докера, у меня в скрипте есть такая строка:

RUN unzip myzipfile.zip

В этой строке скрипта происходит сбой со следующей ошибкой:

/bin/sh: unzip: command not found

Это в Red Hat Enterprise Linux 7, и базовый образ Docker также является базовым образом RHEL7.

Если утилита unzip отсутствует в среде сборки Docker, как мне что-то распаковать? unzip присутствует на сервере, выполняющем сборку, хотя я полагаю, что это не помогает. Есть ли альтернативная утилита, которую я должен проверить, которая может распаковывать файлы, или распаковка должна быть установлена ​​в базовом образе?

Если есть какой-либо способ сделать это без необходимости устанавливать что-либо, это было бы предпочтительнее, поскольку я не думаю, что у меня есть разрешение на это, и даже если бы я это сделал, сервер, на котором происходит сборка Docker, не подключен к интернет.

Вы должны установить 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