我正在尝试安装 awscli
使用 pip
(根据亚马逊的建议)在随附的自定义 Docker 映像中 FROM library/node:6.11.2
。这是一个重现:
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 版本不正确?
我正在使用 FROM maven:3.5.0-jdk-8
以类似的方式安装 Python、Pip 和 awscli,并且它工作得很好。我不确定这两张图片之间的 相关 差异是什么。
从我的 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 ###
底线:如何在基于 library/node:6.x
的图像中正确安装 awscli
?
原文由 Jeroen 发布,翻译遵循 CC BY-SA 4.0 许可协议
根据 其他答案 添加
python-dev
是可行的,但会引发数量惊人的编译器警告(错误?),因此我使用了 @SergeyKoralev 的答案 的变体,它需要一些调整才能起作用。这是我需要做的改变:
python3
和pip3
无处不在。pip
本身。awscli
安装在单独的RUN
命令中。这是一个似乎 确实 有效的完整复制品:
如果您在安装前添加一个 shell 命令,在升级 pip 后刷新内容,您也可以将
aws
安装在同一个RUN
层中。不知道如何。