Я создаю образ докера для приложения, которому требуется OpenSSL 1.1.1 вместо версии 3.0 по умолчанию.
Я добавил следующую команду в Dockerfile
RUN wget -O - https://www.openssl.org/source/openssl-1.1.1u.tar.gz | tar zxf -
RUN cd openssl-1.1.1u
RUN ./config --prefix=/usr/local
Однако строка RUN ./config --prefix=/usr/local
выдает следующую ошибку во время построения изображения.
Ошибка: сбой сборки: ОШИБКА: не удалось решить: процесс «/bin/sh -c ./config --prefix=/usr/local» не завершился успешно: код выхода: 127
Как я могу исправить эту ошибку?
Каждая команда RUN является отдельной, поэтому компакт-диск не сохраняется между ними; вам нужно будет сделать что-то вроде:
RUN wget -O - https://www.openssl.org/source/openssl-1.1.1u.tar.gz | tar zxf -
RUN cd openssl-1.1.1u; ./config --prefix=/usr/local
Кроме того, каждая команда RUN создает новый слой в полученном образе Docker; если вы хотите получить тонкие изображения и особенно если вы хотите очистить файлы, вы можете объединить их еще больше:
RUN wget -O - https://www.openssl.org/source/openssl-1.1.1u.tar.gz | tar zxf -; \
cd openssl-1.1.1u; \
./config --prefix=/usr/local
(очистка файлов действительно удаляет их только в том случае, если она выполняется на том же слое; в противном случае файлы все еще находятся там, просто помечены как удаленные)