如何在库/节点的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 ### 

底线:你如何正确安装awsclilibrary/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的答案的变化,这需要一些调整之前,它的工作。

以下是我需要做的改变:

  1. 到处转换到python3pip3
  2. 添加一个语句来升级pip本身。
  3. 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理器。