Jer*_*oen 10 python pip amazon-web-services docker
我正在尝试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"]
Run Code Online (Sandbox Code Playgroud)
但是,通过以上我遇见:
no such option: --no-cache-dir
Run Code Online (Sandbox Code Playgroud)
大概是因为我有不正确的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 ###
Run Code Online (Sandbox Code Playgroud)
底线:如何awscli
在library/node:6.x
基础图像中正确安装?
Jer*_*oen 19
python-dev
根据这个其他答案添加,但是会抛出惊人数量的编译器警告(错误?),所以我选择了@ SergeyKoralev的答案,需要在它工作之前进行一些调整.
以下是我需要做出的改变:
python3
与pip3
无处不在.pip
自身.awscli
在单独的RUN
命令中分离安装.这是一个完整的摄制是不似乎工作:
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"]
Run Code Online (Sandbox Code Playgroud)
如果在aws
安装RUN
之前添加shell命令并在升级pip之后刷新内容,则可以将安装保留在同一层中.不知道怎么样.
所有答案都是关于 aws-cli 版本 1,如果您想要版本 2,请尝试以下操作
FROM node:lts-stretch-slim
RUN apt-get update && \
apt-get install -y \
unzip \
curl \
&& apt-get clean \
&& curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" \
&& unzip awscliv2.zip \
&& ./aws/install \
&& rm -rf \
awscliv2.zip \
&& apt-get -y purge curl \
&& apt-get -y purge unzip
CMD ["/bin/bash"]
Run Code Online (Sandbox Code Playgroud)
正如您所说的那样,pip
在您使用的 docker 镜像上安装是较旧的,不支持--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"]
Run Code Online (Sandbox Code Playgroud)
然后你可以运行aws
它应该在你的路径上。
您的映像基于 Debian Jessie,因此您正在安装 Python 2.7。尝试使用Python 3.x:
apt-get install -y python3-pip
pip3 install awscli
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13670 次 |
最近记录: |