2016-05-03 3 views
1

При запуске сборки Docker (с использованием Jenkins CI) он не удается обновить pip (последняя строка файла докеров). Мне нужно его для обновления версии 8.1.1, как это предлагается в журнале, поскольку мое развертывание не работает при несоответствии версий PIP.Не удалось обновить пипс в сборке докеров

Dockerfile

FROM ubuntu:14.04 
FROM python:3.4 

# Expose a port for gunicorn to listen on 
EXPOSE 8002 

# Make a workdir and virtualenv 
WORKDIR /opt/documents_api 

# Install everything else 
ADD . /opt/documents_api 

# Set some environment varialbes for PIP installation and db management 
ENV CQLENG_ALLOW_SCHEMA_MANAGEMENT="True" 

RUN apt-get update 
RUN apt-get install -y python3-pip 

RUN pip3 install --upgrade pip 

Вот ошибка:

Step 15 : RUN pip3 install --upgrade pip 
19:46:00 ---> Running in 84e2bcc850c0 
19:46:04 Collecting pip 
19:46:04 Downloading pip-8.1.1-py2.py3-none-any.whl (1.2MB) 
19:46:04 Installing collected packages: pip 
19:46:04 Found existing installation: pip 7.1.2 
19:46:04  Uninstalling pip-7.1.2: 
19:46:05  Successfully uninstalled pip-7.1.2 
19:46:10 Exception: 
19:46:10 Traceback (most recent call last): 
19:46:10 File "/usr/local/lib/python3.4/shutil.py", line 424, in _rmtree_safe_fd 
19:46:10  os.unlink(name, dir_fd=topfd) 
19:46:10 FileNotFoundError: [Errno 2] No such file or directory: 'pip' 
19:46:10 You are using pip version 7.1.2, however version 8.1.1 is available. 
+0

Я использовал тот же файл Docker для работы в своей среде, и он работал нормально. Вот вывод журналов: http://pastebin.com/4qAZLKH1. Все прошло прекрасно. Нет ошибок, проблем. – Rahul

+0

Попробуйте удалить ubuntu: 14.04 и python: 3.4 у вас есть. Docker будет загружать его снова, как только вы восстановите, может быть, проблема там. Для меня свежие изображения работали нормально. – Rahul

+0

Вы пробовали просто получить runnable образ без обновления апгрейда, так что вы можете сделать _docker exec ... bash_ и подключиться к оболочке, чтобы увидеть, где мог быть кончик пипса - и с каким именем? Я в основном использую изображения на основе Centos с ** как ** Python2, так и Python3, поэтому я знаю, что в итоге получаю как pip2, так и pip3, но изображения на основе Ubuntu могут отличаться в зависимости от того, какую версию Python вы устанавливаете. – Marakai

ответ

0

Оказалось, что хозяин, с которым я работал, не имел доступа на улицу (интернет). Таким образом, обновление было неудачным. Мы решили это, добавив еще один пакет в DTR, в котором была необходимая версия.

1

При использовании двух FROM директивы, докер создает два выходных изображения, поэтому он испортил.

Во-первых, удалите FROM ubuntu:14.04 и не делайте apt-get update в файле Dockerfile, это плохая практика (ваше изображение будет отличаться при каждом построении, победив всю цель контейнеров/Docker).

Во-вторых, вы можете проверить официальные python изображения Dockerfile, чтобы узнать, какая версия pip установлена, например, python:3.4 (это уже v8.1.1).

В-третьих, есть специальное изображение для вас (внешнее приложение): python:3.4-onbuild. Ваш Dockerfile может быть уменьшен до:

FROM python:3.4-onbuild 
ENV CQLENG_ALLOW_SCHEMA_MANAGEMENT="True" 
EXPOSE 8002 
CMD python myapp.py 

Одна последней вещи, попробуйте использовать изображения на основе альпийских, они гораздо меньше (для питона, это almost 10 time smaller чем убунт основы).

0

использование/usr/bin/for run pip. Пример:

/usr/bin/pip install --upgrade pip 
Смежные вопросы