我正在尝试构建一个基于python3的容器并安装一些要求。但是python3的构建失败了 这是我的Dockerfile
FROM rhel6.5
ADD ./* /app/
WORKDIR /app/Python
CMD ["./configure"]
CMD ["make"]
CMD ["altinstall"]
WORKDIR /app
CMD ["python", "-m", "pip", "install" , "-r" , "requirement.txt"]
运行后构建
sudo docker run myimage python -v
给出2.6
什么时候,我运行bash并尝试再次编译python
sudo docker run -i myimage /bin/bash
./configure
我得到了
./configure
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
checking MACHDEP... linux
checking for --without-gcc... no
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/app':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
最后
yum install gcc
也失败了
Loaded plugins: product-id, subscription-manager
Setting up Install Process
No package gcc available.
Error: Nothing to do
答案 0 :(得分:1)
你正在使用RHEL图像; Red Hat Enterprise Linux是一种商业产品,需要付费订阅才能访问更新。除非使用subscription-manager attach
配置某些子目录,否则不会配置任何存储库。
如果您目前不是RHEL的付费客户而且您没有令人信服的理由要求RHEL,那么您可以使用CentOS实际访问相同的软件包。
另请注意,当前fedora
和ubuntu
图像都有Python 3可用(作为Fedora的可安装程序包,默认情况下包含在Ubuntu中)。
答案 1 :(得分:1)
您的Dockerfile
错了。您使用CMD
代替RUN
。请参阅有关Dockerfile的参考文档:https://docs.docker.com/reference/builder/。
CMD的主要目的是为执行容器提供默认值。
当构建时,CMD
中没有任何内容被执行;它只是元数据,只有最后一个是从图像运行容器时执行的选择。
如果使用以下内容,docker将无法构建(但有充分理由)。
FROM rhel6.5
ADD ./* /app/
WORKDIR /app/Python
RUN ./configure
RUN make
RUR altinstall
WORKDIR /app
RUN python -m pip install -r requirement.txt
您可能希望添加一个步骤来安装编译器和所需的依赖项,以便能够在您的rhel中构建python。但我会遵循@larsks和@Adrian Mouat的建议。
答案 2 :(得分:1)
构建python肯定有更多步骤,这里是我最近用于Python 2.7.9的步骤(我确信它很容易适应3.4):
因为你写的是Dockerfile
,你应该:
yum install -y
安装依赖项altinstalling
,python解释器在/usr/local/bin/python2.7或python3.4中可用,具体取决于你要安装的版本。make altinstall
而不是make install
的全部目的是确保您不会破坏python
可执行文件的系统依赖性。答案 3 :(得分:0)
深受@ Teodore的回应和https://registry.hub.docker.com/u/danzilla/centos6-python3-django/dockerfile/
的启发并添加
ADD ./* /app/
RUN pip3.4 install -r /app/requirement.txt
在文件和。需求是我项目所需的全部要求。
sudo docker run python3-redhat /usr/local/bin/python3.4 -c "import dja
ngo; print(django.get_version())"
按预期给出1.8.1。