我正在尝试使用pip
(根据Amazon的建议)在FROM library/node:6.11.2
自带的自定义Docker映像中安装awscli
。
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
?
5条答案
按热度按时间eimct9ow1#
按照this other answer添加
python-dev
是可行的,但是会抛出数量惊人的编译器警告(错误?),所以我使用了@SergeyKoralev的答案的变体,它需要一些调整才能生效。以下是我需要做的更改:
1.在所有位置更改为
python3
和pip3
。1.添加语句以升级
pip
本身。1.在单独的
RUN
命令中单独安装awscli
。下面是一个完整的复制,* 确实 * 似乎工作:
如果你在安装之前添加一个shell命令,在升级pip之后刷新内容,你也可以将
aws
安装保持在同一个RUN
层。fnvucqvd2#
所有答案都是关于aws-cli版本1的,如果您想要版本2,请尝试以下方法
jslywgbw3#
正如你所说的那样,你正在使用的docker镜像上安装的
pip
是一个不支持--no-cache-dir
的旧版本。你可以尝试更新它,或者你也可以修复第二个问题,那就是缺少python源头文件。这个问题可以通过安装python-dev
包来修复。只需将它添加到Docker文件中安装的包列表中:然后可以运行路径上的
aws
。fae0ux8s4#
您的映像是基于Debian杰西的,因此您安装的是Python 2.7。请尝试使用Python 3.x:
vuv7lop35#
使用以下命令在Docker容器中安装AWS CLI:
要检查假定角色或AWS身份,请运行以下命令: