如何在库/节点的Docker镜像中使用pip安装awscli
我试图在来自FROM library/node:6.11.2
的自定义Docker镜像中使用pip
(根据Amazon的build议)安装awscli
FROM library/node:6.11.2
。 这是一个repro:
FROM library/node:6.11.2 RUN apt-get update && \ apt-get install -y \ python \ python-pip \ python-setuptools \ groff \ less \ && pip --no-cache-dir install --upgrade awscli \ && apt-get clean CMD ["/bin/bash"]
但是,与上述我遇到:
no such option: --no-cache-dir
大概是因为我有不正确的Python和/或PIP版本?
我以类似的方式安装Python,Pip和awscli,使用FROM maven:3.5.0-jdk-8
,在那里工作得很好。 我不确定这两个图像之间的相关差异是什么。
从我的Dockerfile中移除这个选项对我来说也不是很好,因为我遇到了一大堆不同的错误,这里摘录一下:
Installing collected packages: awscli, PyYAML, docutils, rsa, colorama, botocore, s3transfer, pyasn1, jmespath, python-dateutil, futures, six Running setup.py install for PyYAML checking if libyaml is compilable ### ABBREVIATED ### ext/_yaml.c:4:20: fatal error: Python.h: No such file or directory #include "Python.h" ^ compilation terminated. error: command 'x86_64-linux-gnu-gcc' failed with exit status 1 ### ABBREVIATED ###
底线:你如何正确安装awscli
在library/node:6.x
基于library/node:6.x
的图像?
正如您已经正确说明的那样,在您使用的docker映像上安装pip
是一个不支持--no-cache-dir
的旧版本。 你可以尝试更新,或者你也可以修复第二个关于丢失python源头的问题。 这可以通过安装python-dev
包来解决。 只需将其添加到Dockerfile中安装的软件包列表即可:
FROM library/node:6.11.2 RUN apt-get update && \ apt-get install -y \ python \ python-dev \ python-pip \ python-setuptools \ groff \ less \ && pip install --upgrade awscli \ && apt-get clean CMD ["/bin/bash"]
然后你可以运行应该在你的path上的aws
。
您的映像基于Debian Jessie,因此您正在安装Python 2.7。 尝试使用Python 3.x:
apt-get install -y python3-pip pip3 install awscli
按照这个其他答案添加python-dev
,但是会引发惊人数量的编译器警告(错误?),所以我去了@ SergeyKoralev的答案的变化,这需要一些调整之前,它的工作。
以下是我需要做的改变:
- 到处转换到
python3
和pip3
。 - 添加一个语句来升级
pip
本身。 - 将
awscli
安装分离为单独的RUN
命令。
这是一个完整的repro似乎工作:
FROM library/node:6.11.2 RUN apt-get update && \ apt-get install -y \ python3 \ python3-pip \ python3-setuptools \ groff \ less \ && pip3 install --upgrade pip \ && apt-get clean RUN pip3 --no-cache-dir install --upgrade awscli CMD ["/bin/bash"]
如果你在升级pip之后刷新东西的安装之前添加一个shell命令,你也可以保持aws
安装在同一个RUN
层。 不知道如何。
尝试安装python devel:
yum install python-devel or dnf install python-devel
取决于你的软件包pipe理器。