如何在库/节点Docker镜像

时间:2017-09-04 14:11:36

标签: python amazon-web-services docker pip

我正在尝试使用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 ###

结论:您如何在基于awscli的图片中正确安装library/node:6.x

5 个答案:

答案 0 :(得分:13)

根据this other answer添加python-dev有效,但会抛出惊人数量的编译器警告(错误?),所以我选择了@SergeyKoralev's answer的变体,需要在它之前进行一些调整工作

以下是我需要做出的改变:

  1. 到处更改为python3pip3
  2. 添加语句以升级pip本身。
  3. awscli安装分开在单独的RUN命令中。
  4. 以下是 似乎有效的完整复制品:

    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层中。不知道怎么回事。

答案 1 :(得分:4)

正如您已正确说明的那样,serve_forever()在您使用的泊坞窗图片上安装的版本较旧,不支持pip。你可以尝试更新它,或者你也可以解决第二个问题,即缺少python源头。这可以通过安装--no-cache-dir包来解决。只需将其添加到Dockerfile中安装的软件包列表中:

python-dev

然后,您可以运行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"] ,这应该在您的路径上。

答案 2 :(得分:2)

您的图片基于Debian Jessie,因此您正在安装Python 2.7。尝试使用Python 3.x:

PARTITION_YEAR=2017/PARTITION_MONTH=07/PARTITION_DAY=12

答案 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"]

答案 4 :(得分:-1)

尝试安装python devel:

yum install python-devel or dnf install python-devel

取决于您的包管理器。