ошибка сборки докера папка, из которой вы выполняете pip, больше не может быть найдена

Делаю Dockerfile для установки python38 на centos7 базу. Все работает файл до команды pip3. Dockerile выглядит так.

FROM centos:centos7

RUN RPM_LIST=" \
      gcc \
      make \
      openssl-devel \
      bzip2-devel \
      libffi-devel" && \
    yum install -y $RPM_LIST && \
    curl -O https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tgz && \
    tar xvf Python-3.8.2.tgz && \
    cd Python-3.8.2  && \
    ./configure && \
    make && \
    make install && \
    rm -rf /Python-3.8.2* && \
    yum remove -y $RPM_LIST && \
    pip3 install retrying

Ошибка The folder you are executing pip from can no longer be found..

Я изменил последнюю строку на RUN pip3 install retrying, и она начала работать, но она добавила дополнительный 300 MB к моему image, что я не могу сделать.

Любые предложения, что мне здесь не хватает или какие-либо альтернативные способы?


person Ashwin    schedule 06.06.2020    source источник
comment
Кажется, что ошибка означает то, что написано: вы cd /Python-3.8.2, затем rm -rf /Python-3.8.2, пока вы все еще находитесь в этом каталоге, поэтому при выполнении pip3 текущий каталог исчезнет.   -  person David Maze    schedule 06.06.2020
comment
Использование стандартного образа Docker Hub python:3.8 может быть проще, если вам не нужна база CentOS. Большинство приложений не особенно чувствительны к дистрибутиву Linux, в котором они работают.   -  person David Maze    schedule 06.06.2020
comment
Это фрагмент пользовательского CentOS изображения, которое я создаю. Вызов pip3 происходит после установки, и вызов должен относиться к usr/local/bin/. Это была моя мысль. Позвольте мне послушать команды и попробовать.   -  person Ashwin    schedule 06.06.2020
comment
Я подозреваю, что pip установлен нормально; это каталог, в который вы в данный момент cd попали, исчез.   -  person David Maze    schedule 06.06.2020
comment
Да, перемешивание сработало, и, как вы сказали, pip также установился нормально. Я сохранил часть удаления папки до конца файла, и она отлично работает.   -  person Ashwin    schedule 06.06.2020
comment
Разве не странно, что команда pip3 не работает из папки Python-3.8.2? Если мы добавим cd / в список команд после команды make install, pip3 также будет работать нормально.   -  person Ashwin    schedule 06.06.2020


Ответы (2)


Так выглядит рабочий Dockerfile

FROM centos:centos7

RUN RPM_LIST=" \
      gcc \
      make \
      openssl-devel \
      bzip2-devel \
      libffi-devel" && \
    yum install -y $RPM_LIST && \
    curl -O https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tgz && \
    tar xvf Python-3.8.2.tgz && \
    cd Python-3.8.2  && \
    ./configure && \
    make && \
    make install && \
    pip3 install retrying && \
    yum remove -y $RPM_LIST && \
    rm -rf /Python-3.8.2*

по какой-то причине вызов pip3 команды из папки Python-3.8.2 не работал. Здесь я переместил команду rm после вызова pip3. Надеюсь, эта информация кому-то поможет.

person Ashwin    schedule 09.06.2020

Я только что столкнулся с The folder you are executing pip from can no longer be found.

Мой Dockerfile не менялся месяцами. Он не устанавливает pip.

Он действительно принудительно удаляет и создает папку непосредственно перед запуском установки pip для файла требований - в который pip должен что-то устанавливать.

Исправление? Я просто запустил его снова, и он сработал. Хм...

Итак, я публикую это здесь на случай, если возникнет какая-то загадочная проблема времени, о которой люди хотят собрать подсказки.

--- редактировать добавить -

Кроме того, вчера я столкнулся с этой проблемой с докером, из-за которой требовалось отключить экспериментальную функцию gRPC в докере в его настройках. Может, это как-то связано?

Почему Serverless производит Ошибка недопустимой связи между устройствами при попытке упаковки или развертывания?

person warrens    schedule 11.12.2020