web-dev-qa-db-ja.com

ライブラリ/ノードDockerイメージでpipを使用してawscliをインストールする方法

FROM library/node:6.11.2に付属するカスタムDockerイメージにawscliを使用して(Amazonの推奨事項に従って)pipをインストールしようとしています。これが再現です:

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?

Python、Pip、awscliをFROM maven:3.5.0-jdk-8を使用して同様の方法でインストールしていますが、正常に動作します。 2つの画像の関連の違いがわからない。

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を適切にインストールするにはどうすればよいですか?

10
Jeroen

この他の回答 に従ってpython-devを追加しても、警告的な数のコンパイラ警告(エラー?)がスローされるため、 @ SergeyKoralevの回答 、機能する前に微調整が必​​要でした。

この作業を行うために必要な変更は次のとおりです。

  1. どこでもpython3pip3に変更します。
  2. pip自体をアップグレードするステートメントを追加します。
  3. awscliインストールを別のRUNコマンドで分離します。

以下は、doesが機能するように見える完全な再現です:

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をアップグレードした後に更新するシェルコマンドをインストールの前に追加する場合、おそらく同じawsレイヤーにRUNインストールを保持することもできます。方法はわかりません。

16
Jeroen

正しく述べたように、使用しているdockerイメージへのpipインストールは、--no-cache-dirをサポートしていない古いものです。それを更新してみるか、python source headersが欠落しているという2番目の問題を修正することもできます。これは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"]

その後、パス上にあるawsを実行できます。

4
tayfun

イメージはDebian Jessieに基づいているため、インストールするPython 2.7。Python 3.x:

apt-get install -y python3-pip
pip3 install awscli
3
Sergey Kovalev