Пытается создать файл 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
Возможно, вы находитесь в другом текущем каталоге ... –
Возможно, вы захотите объединить несколько команд «RUN» в один многострочный. Существует довольно хорошее объяснение того, почему вы хотели бы сделать это в документах Docker (https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/#minimize-the-number-of- слои) – R0MANARMY
У меня на самом деле изначально была связка. Я отделил их, чтобы попытаться выяснить, что именно происходит с процедурой сборки. Теперь, когда он работает, я, вероятно, в конечном итоге рекомбинирую кучу для окончательной версии. – Brian