尝试创建一个Dockerfile来创建一个系统,该系统包括一个在CentOS 7系统上自定义构建的Python 3。我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"]
及其所有通过的“运行./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成一个bash会话 “的./configure --prefix =在/ usr/local” 命令,按预期工作:
$ 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 [”./configure","--prefix=/usr/local“]”,输出中唯一的变化是错误信息的格式稍有不同。
这下运行:
$ docker -v
Docker version 1.12.2, build bb80604
您可能会在另一个当前目录中... –
您可能需要考虑将多个“RUN”命令组合成一个多行命令。有一个很好的解释,为什么你会想在[Docker docs]中这样做(https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/#minimize-the-number-of-层) – R0MANARMY
我其实原本确实有一堆合并。我已经将它们分开,试图弄清楚构建过程究竟出了什么问题。现在,它正在工作,我可能会最终重组一堆的最终版本。 – Brian