如何在库/节点 Docker 映像中使用 pip 安装 awscli

新手上路,请多包涵

我正在尝试安装 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 许可协议

阅读 572
2 个回答

根据 其他答案 添加 python-dev 是可行的,但会引发数量惊人的编译器警告(错误?),因此我使用了 @SergeyKoralev 的答案 的变体,它需要一些调整才能起作用。

这是我需要做的改变:

  1. 更改为 python3pip3 无处不在。
  2. 添加语句以升级 pip 本身。
  3. 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"]

如果您在安装前添加一个 shell 命令,在升级 pip 后刷新内容,您也可以将 aws 安装在同一个 RUN 层中。不知道如何。

原文由 Jeroen 发布,翻译遵循 CC BY-SA 3.0 许可协议

所有答案都是关于 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"]

原文由 Deepak 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题