2016-10-21 2 views
0

Пытается создать файл Docker для создания системы, которая включает в себя пользовательскую сборку Python 3 в системе CentOS 7. Мой Dockerfile выглядит следующим образом:Dockerfile Команда RUN возвращает «Нет такого файла или каталога»

FROM centos:7 

RUN yum -y update 
RUN yum -y upgrade 
RUN yum -y groupinstall "Development Tools" 
RUN yum -y install zlib-devel bzip2-devel sqlite sqlite-devel openssl-devel 
ADD http://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz Python-3.5.2.tgz 

RUN ["tar","zxf","Python-3.5.2.tgz"] 
WORKDIR "/Python-3.5.2" 
RUN "./configure --prefix=/usr/local" 
RUN "make" 
RUN "make altinstall" 
RUN ["rm","-rf","Python-3.5.2"] 

RUN yum -y clean headers &&\ 
yum -y clean packages &&\ 
yum -y clean metadata 

COPY pack/*.py /usr/src/StorageService/ 

RUN ["/usr/local/bin/pip3.5","install","virtualenv"] 
WORKDIR "/usr/src/StorageService" 
RUN ["virtualenv","--python=python3","--always-copy","SSEnv"] 
RUN ["source","SSEnv/bin/activate"] 
RUN ["/usr/local/bin/pip3.5","install","requests"] 
RUN ["/usr/local/bin/pip3.5","install","gunicorn"] 

CMD ["gunicorn","--bind=5000","app"] 

И его весь путь через к «RUN ./configure prefix =/USR/местные» линии, а затем дает мне «Нет такого файла или каталога» сообщение. отрезала:

... previous steps etc. ... 
Step 8 : RUN tar zxf Python-3.5.2.tgz 
---> Running in 40f96306f38a 
---> 95804837192a 
Removing intermediate container 40f96306f38a 
Step 9 : WORKDIR "/Python-3.5.2" 
---> Running in d8cff5664038 
---> 038c6b892731 
Removing intermediate container d8cff5664038 
Step 10 : RUN "./configure --prefix=/usr/local" 
---> Running in 49b410bed643 
/bin/sh: ./configure --prefix=/usr/local: No such file or directory 
The command '/bin/sh -c "./configure --prefix=/usr/local"' returned a non-zero code: 127 

Когда я запускаю контейнер 038c6b892731 в Баш сессии в "./configure --prefix =/USR/местные" команда работает, как ожидалось:

$ docker run -it 038c6b892731 bash 
[[email protected] Python-3.5.2]# ./configure --prefix=/usr/local 
checking build system type... x86_64-unknown-linux-gnu 
checking host system type... x86_64-unknown-linux-gnu 
checking for --enable-universalsdk... no 
checking for --with-universal-archs... no 
... etc. ... 

Я попытался изменить RUN для «RUN [" ./configure","--prefix=/usr/local "]" с единственным изменением вывода, являющимся сообщением об ошибке, которое будет отформатировано несколько иначе.

Это работает под:

$ docker -v 
Docker version 1.12.2, build bb80604 
+0

Возможно, вы находитесь в другом текущем каталоге ... –

+0

Возможно, вы захотите объединить несколько команд «RUN» в один многострочный. Существует довольно хорошее объяснение того, почему вы хотели бы сделать это в документах Docker (https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/#minimize-the-number-of- слои) – R0MANARMY

+0

У меня на самом деле изначально была связка. Я отделил их, чтобы попытаться выяснить, что именно происходит с процедурой сборки. Теперь, когда он работает, я, вероятно, в конечном итоге рекомбинирую кучу для окончательной версии. – Brian

ответ

2

Я запустить Dockerfile с той же ошибкой.

Но когда я изменил от этого:

 RUN "./configure --prefix=/usr/local" 

к этому:

 RUN ./configure --prefix=/usr/local 

я до сих пор проблема с RUN "make" так что вы также должны изменить Dockerfile так:

RUN ["tar","zxf","Python-3.5.2.tgz"] 
WORKDIR "/Python-3.5.2" 
RUN ./configure --prefix=/usr/local 
# changed 
RUN make 
# changed 
RUN make altinstall 
RUN ["rm","-rf","Python-3.5.2"] 

И это работает для меня. Или вы можете использовать этот путь с RUN ["xy","ab"], как @Rao ответил.

+0

Это сработало. Благодарю. И я уже пробовал форму RUN ["./configure","--prefix=/usr/local"], и я получил то же сообщение об ошибке. – Brian

0

Есть тривиальные изменения в Dockerfile, как показано ниже:

Так, пожалуйста, измените ниже линии
От:

ADD http://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz Python-3.5.2.tgz 

RUN ["tar","zxf","Python-3.5.2.tgz"] 
WORKDIR "/Python-3.5.2" 
RUN "./configure --prefix=/usr/local" 

Кому:

ADD http://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz /Python-3.5.2.tgz 

RUN ["tar","zxf","/Python-3.5.2.tgz"] 
WORKDIR "/Python-3.5.2" 
RUN ["./configure", "--prefix=/usr/local"] 
+0

Как я уже упоминал в своем оригинальном посте, я пробовал эту форму и получил то же сообщение об ошибке. – Brian

Смежные вопросы