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
を適切にインストールするにはどうすればよいですか?
この他の回答 に従ってpython-dev
を追加しても、警告的な数のコンパイラ警告(エラー?)がスローされるため、 @ SergeyKoralevの回答 、機能する前に微調整が必要でした。
この作業を行うために必要な変更は次のとおりです。
python3
とpip3
に変更します。pip
自体をアップグレードするステートメントを追加します。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
インストールを保持することもできます。方法はわかりません。
正しく述べたように、使用している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
を実行できます。
イメージはDebian Jessieに基づいているため、インストールするPython 2.7。Python 3.x:
apt-get install -y python3-pip
pip3 install awscli